diff options
Diffstat (limited to 'ishtar_common/utils.py')
| -rw-r--r-- | ishtar_common/utils.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 937b9bb99..bd79814e9 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -2373,11 +2373,7 @@ def get_urls_for_model( return urls -def m2m_historization_changed(sender, **kwargs): - obj = kwargs.get("instance", None) - if not obj: - return - obj._queue = kwargs.get("queue", settings.CELERY_DEFAULT_QUEUE) +def get_m2m_values(obj): hist_values = obj.history_m2m or {} for attr in obj.HISTORICAL_M2M: values = [] @@ -2387,6 +2383,12 @@ def m2m_historization_changed(sender, **kwargs): values.append(value.history_compress()) hist_values[attr] = values obj.history_m2m = hist_values + return hist_values + + +def manage_m2m(obj, kwargs): + obj._queue = kwargs.get("queue", settings.CELERY_DEFAULT_QUEUE) + hist_values = get_m2m_values(obj) if getattr(obj, "skip_history_when_saving", False): # assume the last modifier is good... q = obj.history.filter( @@ -2403,6 +2405,21 @@ def m2m_historization_changed(sender, **kwargs): obj.save() +def related_historization_changed(sender, **kwargs): + rel_obj = kwargs.get("instance", None) + if not rel_obj or not getattr(rel_obj, "CURRENT_MODEL_ATTR", None): + return + obj = getattr(rel_obj, rel_obj.CURRENT_MODEL_ATTR) + manage_m2m(obj, kwargs) + + +def m2m_historization_changed(sender, **kwargs): + obj = kwargs.get("instance", None) + if not obj: + return + manage_m2m(obj, kwargs) + + def max_size_help(help_for_doc=False): max_size = settings.MAX_UPLOAD_SIZE if help_for_doc: |
