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()  | 
