From 782666bcafe94108a3f4950ae3510326edc77b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 10 Jul 2017 16:01:00 +0200 Subject: [PATCH] fix clean_m2m --- src/c3nav/editor/models/changeset.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/c3nav/editor/models/changeset.py b/src/c3nav/editor/models/changeset.py index f8721e65..f7964f5a 100644 --- a/src/c3nav/editor/models/changeset.py +++ b/src/c3nav/editor/models/changeset.py @@ -171,8 +171,12 @@ class ChangeSet(models.Model): for change in self.changed_objects_set.all(): change.update_changeset_cache() - if self.state != 'applied': - self._clean_changes() + if self.state != 'applied' and not self._cleaning_changes: + self._cleaning_changes = True + try: + self._clean_changes() + finally: + self._cleaning_changes = False cache.set(cache_key, (self.changed_objects, self.created_objects, self.updated_existing, self.deleted_existing, self.m2m_added, self.m2m_removed), 300) @@ -415,6 +419,16 @@ class ChangeSet(models.Model): def _object_changed(self, value): self.object_changed_cache[self.pk] = value + cleaning_changes_cache = {} + + @property + def _cleaning_changes(self): + return self.cleaning_changes_cache.get(self.pk, None) + + @_cleaning_changes.setter + def _cleaning_changes(self, value): + self.cleaning_changes_cache[self.pk] = value + @contextmanager def lock_to_edit(self, request=None): with transaction.atomic():