summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commited92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568 (patch)
tree322e8a5e089d9b0f8f85d1ac4a08adeb677bc5f2
parent8e0daedce7305de901a67c6750a91e91fcaaca69 (diff)
downloadIshtar-ed92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568.tar.bz2
Ishtar-ed92c5e57fe9f72eac4bbf3f9f66cbc8cc7bd568.zip
Types: cache is used for help text
-rw-r--r--ishtar_common/models.py30
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):