diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-06 16:53:10 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-03-06 16:53:10 +0100 |
commit | 67208dbd830ce4eb75d77f59d1ffd31c63b19d80 (patch) | |
tree | cff73359a85d362bd3b24f853fb6d461a583b91b /ishtar_common/utils.py | |
parent | 161d29195cb9719b9c6ae4903c2c526f797bdf5f (diff) | |
parent | ad5d9f7c0d5b0ca5a0ba76e279fc5d6e2683216a (diff) | |
download | Ishtar-67208dbd830ce4eb75d77f59d1ffd31c63b19d80.tar.bz2 Ishtar-67208dbd830ce4eb75d77f59d1ffd31c63b19d80.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 83534d93a..f1e2e4b96 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -55,10 +55,21 @@ def get_cache(cls, extra_args=[]): return cache_key, cache.get(cache_key) +def force_cached_label_changed(sender, **kwargs): + if not kwargs.get('instance'): + return + kwargs['instance']._cached_label_checked = False + cached_label_changed(sender, **kwargs) + + def cached_label_changed(sender, **kwargs): if not kwargs.get('instance'): return instance = kwargs.get('instance') + + if hasattr(instance, 'test_obj'): + instance.test_obj.reached(sender, **kwargs) + if hasattr(instance, '_cached_label_checked') \ and instance._cached_label_checked: return @@ -76,15 +87,22 @@ def cached_label_changed(sender, **kwargs): if hasattr(instance, '_cascade_change') and instance._cascade_change: instance.skip_history_when_saving = True instance.save() - if hasattr(instance, '_get_associated_cached_labels'): + updated = False + if hasattr(instance, '_cached_labels_bulk_update'): + updated = instance._cached_labels_bulk_update() + if not updated and hasattr(instance, '_get_associated_cached_labels'): for item in instance._get_associated_cached_labels(): item._cascade_change = True + if hasattr(instance, 'test_obj'): + item.test_obj = instance.test_obj cached_label_changed(item.__class__, instance=item) SHORTIFY_STR = ugettext(" (...)") def shortify(lbl, number=20): + if not lbl: + lbl = '' if len(lbl) <= number: return lbl return lbl[:number - len(SHORTIFY_STR)] + SHORTIFY_STR |