trying to improve API performance
This commit is contained in:
parent
b108fc4899
commit
cc8b1dfa55
1 changed files with 9 additions and 4 deletions
|
@ -3,19 +3,24 @@ from django.utils.translation import ugettext_lazy as _
|
|||
from rest_framework.exceptions import PermissionDenied
|
||||
from rest_framework.permissions import BasePermission
|
||||
|
||||
from c3nav.mapdata.models import Source
|
||||
from c3nav.mapdata.models import Package, Source
|
||||
|
||||
|
||||
def get_unlocked_packages(request):
|
||||
def get_unlocked_packages_names(request):
|
||||
return set(settings.PUBLIC_PACKAGES) | set(request.session.get('unlocked_packages', ()))
|
||||
|
||||
|
||||
def get_unlocked_packages(request):
|
||||
names = get_unlocked_packages_names(request)
|
||||
return tuple(Package.objects.filter(name__in=names))
|
||||
|
||||
|
||||
def can_access_package(request, package):
|
||||
return settings.DEBUG or package.name in get_unlocked_packages(request)
|
||||
return settings.DEBUG or package.name in get_unlocked_packages_names(request)
|
||||
|
||||
|
||||
def filter_queryset_by_package_access(request, queryset):
|
||||
return queryset if settings.DIRECT_EDITING else queryset.filter(package__name__in=get_unlocked_packages(request))
|
||||
return queryset if settings.DIRECT_EDITING else queryset.filter(package__in=get_unlocked_packages(request))
|
||||
|
||||
|
||||
class LockedMapFeatures(BasePermission):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue