From 877f0cafad87c2d71b72122cff13be0208f16b27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 25 Jun 2017 10:31:43 +0200 Subject: [PATCH] less descriptor inspecion, more field inspection --- src/c3nav/editor/models/changeset.py | 14 ++++++-------- src/c3nav/editor/views/changes.py | 5 ++--- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/c3nav/editor/models/changeset.py b/src/c3nav/editor/models/changeset.py index 26c767d3..e16df2a0 100644 --- a/src/c3nav/editor/models/changeset.py +++ b/src/c3nav/editor/models/changeset.py @@ -6,7 +6,6 @@ from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder from django.db import models, transaction from django.db.models import Q -from django.db.models.fields.related_descriptors import ForwardManyToOneDescriptor, ManyToManyDescriptor from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy @@ -305,21 +304,20 @@ class ChangeSet(models.Model): obj.titles[name[6:]] = value continue - class_value = getattr(model, name) + field = model._meta.get_field(name) - if isinstance(class_value, ManyToManyDescriptor): + if field.many_to_many: continue - if isinstance(class_value, ForwardManyToOneDescriptor): - field = class_value.field + if field.many_to_one: setattr(obj, field.attname, value) if is_created_pk(value): - setattr(obj, class_value.cache_name, self.get_created_object(field.related_model, value)) + setattr(obj, field.get_cache_name(), self.get_created_object(field.related_model, value)) elif get_foreign_objects: - setattr(obj, class_value.cache_name, self.wrap(field.related_model.objects.get(pk=value))) + setattr(obj, field.get_cache_name(), self.wrap(field.related_model.objects.get(pk=value))) continue - setattr(obj, name, model._meta.get_field(name).to_python(value)) + setattr(obj, name, field.to_python(value)) return self.wrap(obj, author=author) def get_created_pks(self, model) -> set: diff --git a/src/c3nav/editor/views/changes.py b/src/c3nav/editor/views/changes.py index 0c2a5d0c..2dc2ae41 100644 --- a/src/c3nav/editor/views/changes.py +++ b/src/c3nav/editor/views/changes.py @@ -166,9 +166,8 @@ def group_changes(changeset, can_edit=False, show_history=False): field = obj.__class__._meta.get_field(change.field_name) field_title = field.verbose_name field_value = field.to_python(json.loads(change.field_value)) - model = getattr(field, 'related_model', None) - if model is not None: - field_value = objects[model][field_value].title + if field.related_model is not None: + field_value = objects[field.related_model][field_value].title order = 5 if change.field_name == 'slug': order = 1