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 | a36f7ed3e90e6cbc2c3f4ec6db90745adec1b49f (patch) | |
tree | 322e8a5e089d9b0f8f85d1ac4a08adeb677bc5f2 /ishtar_common | |
parent | 475a556675b1e4651c70c2409f555e20d4d308fb (diff) | |
download | Ishtar-a36f7ed3e90e6cbc2c3f4ec6db90745adec1b49f.tar.bz2 Ishtar-a36f7ed3e90e6cbc2c3f4ec6db90745adec1b49f.zip |
Types: cache is used for help text
Diffstat (limited to 'ishtar_common')
-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): |