Skip to content
Snippets Groups Projects
Commit d321dedd authored by Jean-Baptiste Pasquier's avatar Jean-Baptiste Pasquier
Browse files

Merge branch 'optimize-qs-perms' into 'master'

minor: filterbackends for permissions

See merge request !36
parents 12220a9e c1adcfeb
No related branches found
No related tags found
1 merge request!36minor: filterbackends for permissions
Pipeline #8667 passed
from djangoldp.filters import LDPPermissionsFilterBackend
class InboxFilterBackend(LDPPermissionsFilterBackend):
def filter_queryset(self, request, queryset, view):
if not request.user.is_anonymous:
return queryset.filter(user=request.user)
else:
from djangoldp_notification.models import Notification
return Notification.objects.none()
class SubscriptionsFilterBackend(LDPPermissionsFilterBackend):
def filter_queryset(self, request, queryset, view):
if request.method == "OPTIONS":
return queryset
else:
return super().filter_queryset(request, queryset, view)
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from djangoldp.permissions import LDPPermissions from djangoldp.permissions import LDPPermissions
from djangoldp_notification.filters import InboxFilterBackend, SubscriptionsFilterBackend
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
class InboxPermissions(LDPPermissions): class InboxPermissions(LDPPermissions):
filter_backends = [InboxFilterBackend]
def has_permission(self, request, view): def has_permission(self, request, view):
from djangoldp.models import Model from djangoldp.models import Model
...@@ -41,6 +45,8 @@ class InboxPermissions(LDPPermissions): ...@@ -41,6 +45,8 @@ class InboxPermissions(LDPPermissions):
class SubscriptionsPermissions(LDPPermissions): class SubscriptionsPermissions(LDPPermissions):
filter_backends = [SubscriptionsFilterBackend]
def has_permission(self, request, view): def has_permission(self, request, view):
if request.user.is_anonymous and not request.method == "OPTIONS": if request.user.is_anonymous and not request.method == "OPTIONS":
return False return False
......
...@@ -10,7 +10,7 @@ license = MIT ...@@ -10,7 +10,7 @@ license = MIT
[options] [options]
packages = find: packages = find:
install_requires = install_requires =
djangoldp>=1.2.0 djangoldp>=1.3.0
[options.extras_require] [options.extras_require]
include_package_data = True include_package_data = True
......
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