add ETag to mapdata api
This commit is contained in:
parent
ef340c5193
commit
85a0993799
2 changed files with 46 additions and 7 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue