diff --git a/src/c3nav/editor/models/changeset.py b/src/c3nav/editor/models/changeset.py index 7eef6107..5f9a6670 100644 --- a/src/c3nav/editor/models/changeset.py +++ b/src/c3nav/editor/models/changeset.py @@ -681,7 +681,7 @@ class ChangeSet(models.Model): @property def cache_key_by_changes(self): - return ':'.join(('editor:changeset', str(self.pk), MapUpdate.cache_key(), self.last_change_cache_key)) + return ':'.join(('editor:changeset', str(self.pk), MapUpdate.current_cache_key(), self.last_change_cache_key)) def get_absolute_url(self): if self.pk is None: diff --git a/src/c3nav/mapdata/models/base.py b/src/c3nav/mapdata/models/base.py index d0c9b13b..1303ef53 100644 --- a/src/c3nav/mapdata/models/base.py +++ b/src/c3nav/mapdata/models/base.py @@ -80,7 +80,7 @@ class BoundsMixin(SerializableMixin, models.Model): @classmethod def max_bounds(cls): - cache_key = 'mapdata:max_bounds:%s:%s' % (cls.__name__, MapUpdate.cache_key()) + cache_key = 'mapdata:max_bounds:%s:%s' % (cls.__name__, MapUpdate.current_cache_key()) result = cache.get(cache_key, None) if result is not None: return result diff --git a/src/c3nav/mapdata/models/update.py b/src/c3nav/mapdata/models/update.py index 386c8288..409273b9 100644 --- a/src/c3nav/mapdata/models/update.py +++ b/src/c3nav/mapdata/models/update.py @@ -34,8 +34,12 @@ class MapUpdate(models.Model): cache.set('mapdata:last_update', (last_update.pk, last_update.datetime), 900) return last_update.pk, last_update.datetime + @property + def cache_key(self): + return int_to_base36(self.pk)+'_'+int_to_base36(int(make_naive(self.datetime).timestamp())) + @classmethod - def cache_key(cls): + def current_cache_key(cls): pk, dt = cls.last_update() return int_to_base36(pk)+'_'+int_to_base36(int(make_naive(dt).timestamp())) diff --git a/src/c3nav/mapdata/render/base.py b/src/c3nav/mapdata/render/base.py index 5ae38fa3..7e4044b8 100644 --- a/src/c3nav/mapdata/render/base.py +++ b/src/c3nav/mapdata/render/base.py @@ -230,7 +230,7 @@ class LevelGeometries: def get_level_render_data(level): cache_key = 'mapdata:level_render_data:%s:%s' % (str(level.pk if isinstance(level, Level) else level), - MapUpdate.cache_key()) + MapUpdate.current_cache_key()) result = cache.get(cache_key, None) if result is not None: return result diff --git a/src/c3nav/mapdata/tasks.py b/src/c3nav/mapdata/tasks.py index 0274a91c..67b55783 100644 --- a/src/c3nav/mapdata/tasks.py +++ b/src/c3nav/mapdata/tasks.py @@ -8,7 +8,7 @@ from c3nav.celery import app @app.task() def delete_old_cached_tiles(*args, **kwargs): from c3nav.mapdata.models import MapUpdate - cache_key = MapUpdate.cache_key() + cache_key = MapUpdate.current_cache_key() for folder in os.listdir(settings.TILES_ROOT): if folder == cache_key: diff --git a/src/c3nav/mapdata/views.py b/src/c3nav/mapdata/views.py index 2b6b21f9..de960f9f 100644 --- a/src/c3nav/mapdata/views.py +++ b/src/c3nav/mapdata/views.py @@ -32,7 +32,7 @@ def tile(request, level, zoom, x, y, format): renderer = SVGRenderer(level, miny, minx, maxy, maxx, scale=2**zoom, user=request.user) - update_cache_key = MapUpdate.cache_key() + update_cache_key = MapUpdate.current_cache_key() access_cache_key = renderer.access_cache_key etag = update_cache_key+'_'+access_cache_key