From fcae62eb86eddc33c6dca91853fff826f3f1df0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 26 Nov 2017 14:18:41 +0100 Subject: [PATCH] fix error which caused infinite loops by accessing deferred fields --- src/c3nav/mapdata/models/base.py | 3 ++- src/c3nav/mapdata/models/geometry/base.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/c3nav/mapdata/models/base.py b/src/c3nav/mapdata/models/base.py index fbbfc3d6..c6888985 100644 --- a/src/c3nav/mapdata/models/base.py +++ b/src/c3nav/mapdata/models/base.py @@ -53,7 +53,8 @@ class TitledMixin(SerializableMixin, models.Model): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.titles = self.titles.copy() + if 'titles' not in self.get_deferred_fields(): + self.titles = self.titles.copy() def serialize(self, **kwargs): result = super().serialize(**kwargs) diff --git a/src/c3nav/mapdata/models/geometry/base.py b/src/c3nav/mapdata/models/geometry/base.py index 6345f686..28eb9b8d 100644 --- a/src/c3nav/mapdata/models/geometry/base.py +++ b/src/c3nav/mapdata/models/geometry/base.py @@ -24,7 +24,7 @@ class GeometryMixin(SerializableMixin): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.orig_geometry = None if 'geometry' in self.get_deferred_fields() else self.geometry - self._orig = {field.attname: (None if field.name in self.get_deferred_fields() + self._orig = {field.attname: (None if field.attname in self.get_deferred_fields() else getattr(self, field.attname)) for field in self._meta.get_fields() if field.name in geometry_affecting_fields}