From 73a734558476db56e89b88bfb6c6fab40bc79ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Wed, 14 Jun 2017 01:11:49 +0200 Subject: [PATCH] set parsed to True, otherwise it's useless --- src/c3nav/editor/models.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/c3nav/editor/models.py b/src/c3nav/editor/models.py index d10b8864..1b604ad7 100644 --- a/src/c3nav/editor/models.py +++ b/src/c3nav/editor/models.py @@ -41,6 +41,7 @@ class ChangeSet(models.Model): return for change in self.changes.all(): self._parse_change(change) + self.parsed = True def _parse_change(self, change): if change.action == 'delchange': @@ -66,9 +67,17 @@ class ChangeSet(models.Model): change.field_name: value }) elif change.action == 'm2m_add': - self.m2m_add_existing.setdefault(model, {}).setdefault(change.obj_pk, set()).add(value) + m2m_remove_existing = self.m2m_remove_existing.get(model, {}).get(change.obj_pk, ()) + if value in m2m_remove_existing: + m2m_remove_existing.remove(value) + else: + self.m2m_add_existing.setdefault(model, {}).setdefault(change.obj_pk, set()).add(value) elif change.action == 'm2m_add': - self.m2m_remove_existing.setdefault(model, {}).setdefault(change.obj_pk, set()).add(value) + m2m_add_existing = self.m2m_add_existing.get(model, {}).get(change.obj_pk, ()) + if value in m2m_add_existing: + m2m_add_existing.remove(value) + else: + self.m2m_remove_existing.setdefault(model, {}).setdefault(change.obj_pk, set()).add(value) @classmethod def qs_base(cls, hide_applied=True):