diff --git a/src/c3nav/editor/operations.py b/src/c3nav/editor/operations.py index 486bf5af..0f03da10 100644 --- a/src/c3nav/editor/operations.py +++ b/src/c3nav/editor/operations.py @@ -120,7 +120,7 @@ class ChangedManyToMany(BaseSchema): class ChangedObject(BaseSchema): obj: ObjectReference - repr: str + titles: dict[str, str] created: bool = False deleted: bool = False fields: FieldValuesDict = {} @@ -128,7 +128,7 @@ class ChangedObject(BaseSchema): class CollectedChanges(BaseSchema): - prev_reprs: dict[str, dict[int, str]] = {} + prev_titles: dict[str, dict[int, dict[str, str]]] = {} prev_values: dict[str, dict[int, FieldValuesDict]] = {} operations: list[DatabaseOperation] = [] @@ -151,7 +151,7 @@ class CollectedChanges(BaseSchema): changed_object = objects.get(operation.obj, None) if changed_object is None: changed_object = ChangedObject(obj=operation.obj, - repr=self.prev_reprs[operation.obj.model][operation.obj.id]) + titles=self.prev_titles[operation.obj.model][operation.obj.id]) objects[operation.obj] = changed_object if isinstance(operation, CreateObjectOperation): changed_object.created = True diff --git a/src/c3nav/editor/overlay.py b/src/c3nav/editor/overlay.py index 805d03bc..d22f4599 100644 --- a/src/c3nav/editor/overlay.py +++ b/src/c3nav/editor/overlay.py @@ -64,7 +64,7 @@ class DatabaseOverlayManager: pre_change_values = self.pre_change_values.pop(ref, None) if pre_change_values: self.changes.prev_values.setdefault(ref.model, {})[ref.id] = pre_change_values - self.changes.prev_reprs.setdefault(ref.model, {})[ref.id] = str(instance) + self.changes.prev_titles.setdefault(ref.model, {})[ref.id] = getattr(instance, 'titles', None) return ref, pre_change_values diff --git a/src/c3nav/editor/views/changes.py b/src/c3nav/editor/views/changes.py index 4ccb37d0..8df6f86f 100644 --- a/src/c3nav/editor/views/changes.py +++ b/src/c3nav/editor/views/changes.py @@ -10,7 +10,7 @@ from django.http import Http404 from django.shortcuts import get_object_or_404, redirect, render from django.urls import NoReverseMatch, reverse from django.utils.text import format_lazy -from django.utils.translation import get_language_info +from django.utils.translation import get_language_info, get_language from django.utils.translation import gettext_lazy as _ from c3nav.editor.forms import ChangeSetForm, RejectForm, get_editor_form @@ -207,15 +207,24 @@ def changeset_detail(request, pk): # redirect_changed_objects = [] # todo: display redirects nicely + current_lang = get_language() + for changed_object in changeset.changes.changed_objects: model = apps.get_model("mapdata", changed_object.obj.model) changes = [] + + title = None + if changed_object.titles: + if current_lang in changed_object.titles: + title = changed_object.titles[current_lang] + title = next(iter(changed_object.titles.values())) + changed_object_data = { 'model': model, 'model_title': model._meta.verbose_name, 'pk': changed_object.obj.id, - 'desc': changed_object.repr, - 'title': 'TITLE', + 'desc': format_lazy(_('{model} #{id}'), model=model._meta.verbose_name, id=changed_object.obj.id), + 'title': title, 'changes': changes, 'edit_url': None, 'deleted': changed_object.deleted,