add ETag to mapdata api

This commit is contained in:
Laura Klünder 2017-10-27 16:40:15 +02:00
parent ef340c5193
commit 85a0993799
2 changed files with 46 additions and 7 deletions

View file

@ -7,6 +7,7 @@ from django.db.models import Q
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from c3nav.mapdata.models import MapUpdate
from c3nav.mapdata.models.base import SerializableMixin, TitledMixin
@ -64,6 +65,17 @@ class AccessPermission(models.Model):
cache.set(cache_key, access_restriction_ids, max(0, (expire_date-timezone.now()).total_seconds()))
return set(access_restriction_ids)
@classmethod
def cache_key_for_request(cls, request):
return '%s:%s' % (
MapUpdate.current_cache_key(),
','.join(str(i) for i in sorted(AccessPermission.get_for_request(request)) or '0')
)
@classmethod
def etag_func(cls, request, *args, **kwargs):
return cls.cache_key_for_request(request)
class AccessRestrictionMixin(SerializableMixin, models.Model):
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,