diff options
Diffstat (limited to 'ishtar_common/menus.py')
-rw-r--r-- | ishtar_common/menus.py | 21 |
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() |