diff options
| -rw-r--r-- | ishtar_common/models.py | 30 | 
1 files changed, 23 insertions, 7 deletions
| diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 923d0bb31..b3439a257 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -379,13 +379,20 @@ class Cached(object):          for keys in current_keys:              if len(keys) == 2 and keys[0] == '__slug':                  cls.get_cache(keys[1], force=True) -            if len(keys) >= 2 and keys[0] == '__get_types': -                default = keys.pop() -                empty_first = bool(keys.pop()) -                exclude = keys[1:] +            elif keys[0] == '__get_types': +                default = None +                empty_first = True +                exclude = [] +                if len(keys) >= 2: +                    default = keys.pop() +                    if len(keys) > 1: +                        empty_first = bool(keys.pop()) +                    exclude = keys[1:]                  cls.get_types(                      exclude=exclude, empty_first=empty_first, default=default,                      force=True) +            elif keys[0] == '__get_help': +                cls.get_help(force=True)      @classmethod      def _add_cache_key_to_refresh(cls, keys): @@ -510,7 +517,13 @@ class GeneralType(Cached, models.Model):          return u"_".join(items)      @classmethod -    def get_help(cls, dct={}, exclude=[]): +    def get_help(cls, dct={}, exclude=[], force=False): +        keys = ['__get_help'] +        keys += [u"{}".format(ex) for ex in exclude] +        keys += [u'{}-{}'.format(unicode(k), dct[k]) for k in dct] +        cache_key, value = get_cache(cls, keys) +        if value and not force: +            return mark_safe(value)          help_text = cls.HELP_TEXT          c_rank = -1          help_items = u"\n" @@ -541,8 +554,11 @@ class GeneralType(Cached, models.Model):          if c_rank:              help_items += c_rank * u"</dl>"          if help_text or help_items != u'\n': -            return mark_safe(help_text + help_items) -        return u"" +            help_text = help_text + help_items +        else: +            help_text = u"" +        cache.set(cache_key, help_text, settings.CACHE_TIMEOUT) +        return mark_safe(help_text)      @classmethod      def _get_initial_types(cls, initial, type_pks, instance=False): | 
