From d886b6345287a75810e826e84ccb83e9f12aefbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Wed, 19 Jul 2017 15:34:39 +0200 Subject: [PATCH] when recreating a deleted existing locationredirect, restore it instead --- src/c3nav/editor/models/changedobject.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/c3nav/editor/models/changedobject.py b/src/c3nav/editor/models/changedobject.py index 8258363a..ceb993bc 100644 --- a/src/c3nav/editor/models/changedobject.py +++ b/src/c3nav/editor/models/changedobject.py @@ -10,6 +10,7 @@ from django.utils.translation import ugettext_lazy as _ from c3nav.editor.utils import is_created_pk from c3nav.editor.wrappers import ModelInstanceWrapper from c3nav.mapdata.fields import JSONField +from c3nav.mapdata.models.locations import LocationRedirect class ChangedObjectManager(models.Manager): @@ -223,6 +224,14 @@ class ChangedObject(models.Model): def save_instance(self, instance): old_updated_fields = self.updated_fields self.updated_fields = {} + + if instance.pk is None and self.model_class == LocationRedirect: + obj = LocationRedirect.objects.filter(pk__in=self.changeset.deleted_existing.get(LocationRedirect, ()), + slug=instance.slug, target_id=instance.target_id).first() + if obj is not None: + self.changeset.get_changed_object(obj).restore() + return + for field in self.model_class._meta.get_fields(): if not isinstance(field, Field) or field.primary_key: continue