refactor api views inter their respecting apps

This commit is contained in:
Laura Klünder 2016-09-22 12:58:21 +02:00
parent b69dff708e
commit 02cafee6be
12 changed files with 112 additions and 117 deletions

View file

@ -0,0 +1,26 @@
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import BasePermission
from .models import Source
def get_unlocked_packages(request):
return set(settings.PUBLIC_PACKAGES) | set(request.session.get('unlocked_packages', ()))
def can_access_package(request, package):
return settings.DEBUG or package.name in get_unlocked_packages(request)
def filter_source_queryset(request, queryset):
return queryset if settings.DEBUG else queryset.filter(package__name__in=get_unlocked_packages(request))
class LockedMapFeatures(BasePermission):
def has_object_permission(self, request, view, obj):
if isinstance(obj, Source):
if not can_access_package(request, obj.package):
raise PermissionDenied(_('This Source belongs to a package you don\'t have access to.'))
return True