store titles instead of repr in changes
This commit is contained in:
parent
bbce760707
commit
37ca7eab31
3 changed files with 16 additions and 7 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue