Skip to content
This repository was archived by the owner on Aug 11, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Only apply public access filter on global collection membership search
  • Loading branch information
davetrig committed Dec 18, 2017
commit 1fe05090c820c0d811176a5ee82af2e5571858f6
1 change: 0 additions & 1 deletion ocl/collection/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@ def get_filters(self, request, view):
filters.update({'ownerType': view.parent_resource.resource_type()})
else:
filters.update({'public_can_view': True})

return filters
7 changes: 6 additions & 1 deletion ocl/collection/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ class CollectionListView(CollectionBaseView,
serializer_class = CollectionCreateSerializer
filter_backends = [CollectionSearchFilter]
contains_uri = None
owner_specified = False
solr_fields = {
'collection_type': {'sortable': False, 'filterable': True},
'name': {'sortable': True, 'filterable': False},
Expand All @@ -277,6 +278,7 @@ class CollectionListView(CollectionBaseView,
}

def get(self, request, *args, **kwargs):
self.owner_specified = (kwargs.__len__() > 0)
self.serializer_class = CollectionDetailSerializer if self.is_verbose(request) else CollectionListSerializer
self.contains_uri = request.QUERY_PARAMS.get('contains', None)
# Running the filter_backends seems to reset changes made to the queryset.
Expand All @@ -295,7 +297,10 @@ def get_queryset(self):
# TODO correct the behavior of filter_backends, and remove this hack to get around it
if self.contains_uri != None:
from django_mongodb_engine.query import A
queryset = queryset.filter(references=A('expression', self.contains_uri), public_access__in=[ACCESS_TYPE_EDIT, ACCESS_TYPE_VIEW])
if self.owner_specified:
queryset = queryset.filter(references=A('expression', self.contains_uri))
else:
queryset = queryset.filter(references=A('expression', self.contains_uri), public_access__in=[ACCESS_TYPE_EDIT, ACCESS_TYPE_VIEW])
return queryset

def get_csv_rows(self, queryset=None):
Expand Down