summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-14 19:26:25 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-14 19:26:25 +0100
commit2ead2f5e2f253436e7175d4abef3041a49a12d0f (patch)
treeb0e482fb4f05fc2acf31e4eea31f94aa5d6f1f9a /ishtar_common/utils.py
parentf3294fc59af4bdaadab8f04dcf7df89ef1c317fb (diff)
downloadIshtar-2ead2f5e2f253436e7175d4abef3041a49a12d0f.tar.bz2
Ishtar-2ead2f5e2f253436e7175d4abef3041a49a12d0f.zip
Fix M2M rollback: prevent bad rewriting of history_m2m
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index e293562ff..ba77a07e4 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -943,13 +943,17 @@ def m2m_historization_changed(sender, **kwargs):
continue
values.append(value.history_compress())
hist_values[attr] = values
- # force resave of last history record
- if hasattr(obj, 'skip_history_when_saving'):
- delattr(obj, 'skip_history_when_saving')
obj.history_m2m = hist_values
- obj._force_history = True
- q = obj.history.order_by("-history_date")
- if q.count():
- last = q.all()[0]
- last.delete()
+ if getattr(obj, 'skip_history_when_saving', False):
+ # assume the last modifier is good...
+ q = obj.history.filter(
+ history_modifier_id=obj.history_modifier_id,
+ ).order_by('-history_date', '-history_id')
+ hist = q.all()[0]
+ hist.history_m2m = hist_values
+ hist.history_date = hist.last_modified = datetime.datetime.now()
+ hist.save()
+ obj.skip_history_when_saving = True
+ elif not obj.history_modifier:
+ obj.skip_history_when_saving = True
obj.save()