Skip to content
Snippets Groups Projects
Commit 8d3fba6b authored by Calum Mackervoy's avatar Calum Mackervoy
Browse files

added FilterBackends for local objects

parent 22a0e910
No related branches found
No related tags found
1 merge request!123Container urls not contain backlinks
from rest_framework.filters import BaseFilterBackend
from djangoldp.models import Model
class LocalObjectFilterBackend(BaseFilterBackend):
"""
Filter which removes external objects (federated backlinks) from the queryset
For querysets which should only include local objects
"""
def filter_queryset(self, request, queryset, view):
internal_ids = [x.pk for x in queryset if not Model.is_external(x)]
return queryset.filter(pk__in=internal_ids)
class LocalObjectOnContainerPathBackend(LocalObjectFilterBackend):
"""
Override of LocalObjectFilterBackend which removes external objects when the view requested
is the model container path
"""
def filter_queryset(self, request, queryset, view):
if issubclass(view.model, Model) and request.path_info == view.model.get_container_path():
return super(LocalObjectOnContainerPathBackend, self).filter_queryset(request, queryset, view)
return queryset
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment