display redirectslugs correctly
This commit is contained in:
parent
1055adb27c
commit
f04475672f
2 changed files with 34 additions and 1 deletions
|
@ -379,7 +379,8 @@ class ChangeSet(models.Model):
|
||||||
"""
|
"""
|
||||||
Get the number of changed objects.
|
Get the number of changed objects.
|
||||||
"""
|
"""
|
||||||
return len(self.changes.changed_objects)
|
return len([changed_object for changed_object in self.changes.changed_objects
|
||||||
|
if changed_object.obj.model != "locationredirect"])
|
||||||
|
|
||||||
def get_changed_objects_by_model(self, model):
|
def get_changed_objects_by_model(self, model):
|
||||||
if isinstance(model, str):
|
if isinstance(model, str):
|
||||||
|
|
|
@ -15,6 +15,8 @@ from c3nav.editor.forms import ChangeSetForm, RejectForm, get_editor_form
|
||||||
from c3nav.editor.models import ChangeSet
|
from c3nav.editor.models import ChangeSet
|
||||||
from c3nav.editor.views.base import sidebar_view
|
from c3nav.editor.views.base import sidebar_view
|
||||||
from c3nav.mapdata.fields import I18nField
|
from c3nav.mapdata.fields import I18nField
|
||||||
|
from c3nav.mapdata.models import LocationSlug
|
||||||
|
from c3nav.mapdata.models.locations import LocationRedirect
|
||||||
|
|
||||||
|
|
||||||
@sidebar_view(select_related=('last_update', 'last_state_update', 'last_change', 'author'))
|
@sidebar_view(select_related=('last_update', 'last_state_update', 'last_change', 'author'))
|
||||||
|
@ -203,10 +205,24 @@ def changeset_detail(request, pk):
|
||||||
# redirect_changed_objects = []
|
# redirect_changed_objects = []
|
||||||
# todo: display redirects nicely
|
# todo: display redirects nicely
|
||||||
|
|
||||||
|
added_redirects = {}
|
||||||
|
removed_redirects = {}
|
||||||
|
for changed_object in changeset.changes.changed_objects:
|
||||||
|
if changed_object.obj.model == "locationredirect":
|
||||||
|
if changed_object.created and not changed_object.deleted:
|
||||||
|
added_redirects.setdefault(changed_object.fields["target"], set()).add(changed_object.fields["slug"])
|
||||||
|
elif changed_object.deleted:
|
||||||
|
orig_values = changeset.changes.prev_values["locationredirect"][changed_object.obj.id]
|
||||||
|
removed_redirects.setdefault(orig_values["target"], set()).add(orig_values["slug"])
|
||||||
|
else:
|
||||||
|
raise ValueError # dafuq? not possibile through the editor
|
||||||
|
|
||||||
current_lang = get_language()
|
current_lang = get_language()
|
||||||
|
|
||||||
for changed_object in changeset.changes.changed_objects:
|
for changed_object in changeset.changes.changed_objects:
|
||||||
model = apps.get_model("mapdata", changed_object.obj.model)
|
model = apps.get_model("mapdata", changed_object.obj.model)
|
||||||
|
if model == LocationRedirect:
|
||||||
|
continue
|
||||||
changes = []
|
changes = []
|
||||||
|
|
||||||
title = None
|
title = None
|
||||||
|
@ -322,6 +338,22 @@ def changeset_detail(request, pk):
|
||||||
'value': item,
|
'value': item,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if issubclass(model, LocationSlug):
|
||||||
|
for slug in added_redirects.get(changed_object.obj.id, ()):
|
||||||
|
changes.append({
|
||||||
|
'icon': 'chevron-right',
|
||||||
|
'class': 'info',
|
||||||
|
'title': _('Redirect slugs'),
|
||||||
|
'value': slug,
|
||||||
|
})
|
||||||
|
for slug in removed_redirects.get(changed_object.obj.id, ()):
|
||||||
|
changes.append({
|
||||||
|
'icon': 'chevron-left',
|
||||||
|
'class': 'info',
|
||||||
|
'title': _('Redirect slugs'),
|
||||||
|
'value': slug,
|
||||||
|
})
|
||||||
|
|
||||||
if changed_object.deleted:
|
if changed_object.deleted:
|
||||||
changes.append({
|
changes.append({
|
||||||
'icon': 'minus',
|
'icon': 'minus',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue