summaryrefslogtreecommitdiff
path: root/ishtar_common/menus.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-03-01 12:47:20 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-03-01 12:47:20 +0100
commitb3735a1886337823944569c85dc720ff43658de7 (patch)
treed9785ac31d0e54e2864faa0bab52c04337c27cea /ishtar_common/menus.py
parenta2734e9e659dd95c6f6955d73c1d512e543948dc (diff)
downloadIshtar-b3735a1886337823944569c85dc720ff43658de7.tar.bz2
Ishtar-b3735a1886337823944569c85dc720ff43658de7.zip
Force cache menu to be regerated on profile change (refs #3746)
Diffstat (limited to 'ishtar_common/menus.py')
-rw-r--r--ishtar_common/menus.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/ishtar_common/menus.py b/ishtar_common/menus.py
index 3741c6cac..e00c6fbef 100644
--- a/ishtar_common/menus.py
+++ b/ishtar_common/menus.py
@@ -21,7 +21,10 @@
Menus
"""
+import datetime
+
from django.conf import settings
+from django.core.cache import cache
from django.core.urlresolvers import reverse
_extra_menus = []
@@ -69,9 +72,22 @@ class Menu:
self.session = session
self.items_by_idx = {}
- def init(self):
- if self.initialized:
+ def set_menu_updated_key(self):
+ cache_key = u"{}-{}".format(
+ settings.PROJECT_SLUG, 'menu_updated')
+ time = unicode(datetime.datetime.now().isoformat())
+ cache.set(cache_key, time, settings.CACHE_TIMEOUT)
+ self.initialized = time
+
+ def init(self, force=False):
+ cache_key = u"{}-{}".format(
+ settings.PROJECT_SLUG, 'menu_updated')
+ menu_updated = cache.get(cache_key)
+ if not force and menu_updated and self.initialized \
+ and self.initialized == menu_updated:
return
+ menu_updated = cache.get(cache_key)
+ self.set_menu_updated_key()
self.items = {}
self.items_by_idx = {}
for idx, main_menu in enumerate(self.childs):
@@ -156,5 +172,6 @@ class Menu:
self.current_sections.append([section.label, section_url,
bool(subsections)])
+
menu = Menu(None)
menu.init()