diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-26 19:22:47 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-02-26 19:22:47 +0100 | 
| commit | ed92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568 (patch) | |
| tree | 322e8a5e089d9b0f8f85d1ac4a08adeb677bc5f2 /ishtar_common/models.py | |
| parent | 8e0daedce7305de901a67c6750a91e91fcaaca69 (diff) | |
| download | Ishtar-ed92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568.tar.bz2 Ishtar-ed92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568.zip  | |
Types: cache is used for help text
Diffstat (limited to 'ishtar_common/models.py')
| -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):  | 
