summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py27
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: