trying to improve API performance

This commit is contained in:
Laura Klünder 2016-12-06 23:18:05 +01:00
parent b108fc4899
commit cc8b1dfa55

View file

@ -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):