diff --git a/src/c3nav/editor/templates/editor/list.html b/src/c3nav/editor/templates/editor/list.html
index b6cf06f8..d4548076 100644
--- a/src/c3nav/editor/templates/editor/list.html
+++ b/src/c3nav/editor/templates/editor/list.html
@@ -3,7 +3,7 @@
{% include 'editor/fragment_sections.html' %}
-
+
{% blocktrans %}New {{ model_title }}{% endblocktrans %}
{% blocktrans %}{{ model_title_plural }}{% endblocktrans %}
@@ -19,7 +19,7 @@
{% endif %}
{{ item.title }} |
- {% trans 'Edit' %} |
+ {% trans 'Edit' %} |
{% endfor %}
diff --git a/src/c3nav/editor/urls.py b/src/c3nav/editor/urls.py
index 921a6cd4..75f0519b 100644
--- a/src/c3nav/editor/urls.py
+++ b/src/c3nav/editor/urls.py
@@ -3,11 +3,12 @@ from django.conf.urls import url
from c3nav.editor.views import edit, list_objects, main_index, section_detail
-def add_editor_urls(name, model):
+def add_editor_urls(name, model, parent_name_plural=None, parent_name=None):
+ prefix = '' if parent_name is None else parent_name_plural+r'/(?P<'+parent_name+'>[0-9]+)/'
return [
- url(r'^'+name+r'/$', list_objects, name='editor.'+name+'.list', kwargs={'model': model}),
- url(r'^'+name+r'/(?P[0-9]+)/$', edit, name='editor.'+name+'.edit', kwargs={'model': model}),
- url(r'^'+name+r'/create$', edit, name='editor.'+name+'.create', kwargs={'model': model}),
+ url(r'^'+prefix+name+r'/$', list_objects, name='editor.'+name+'.list', kwargs={'model': model}),
+ url(r'^'+prefix+name+r'/(?P[0-9]+)/$', edit, name='editor.'+name+'.edit', kwargs={'model': model}),
+ url(r'^'+prefix+name+r'/create$', edit, name='editor.'+name+'.create', kwargs={'model': model}),
]
@@ -18,4 +19,4 @@ urlpatterns = [
url(r'^sections/create$', edit, name='editor.section.create', kwargs={'model': 'Section'}),
]
urlpatterns.extend(add_editor_urls('locationgroups', 'LocationGroup'))
-urlpatterns.extend(add_editor_urls('doors', 'Door'))
+urlpatterns.extend(add_editor_urls('doors', 'Door', 'sections', 'section'))
diff --git a/src/c3nav/editor/views.py b/src/c3nav/editor/views.py
index 2c0c2a2f..ebf49c62 100644
--- a/src/c3nav/editor/views.py
+++ b/src/c3nav/editor/views.py
@@ -137,25 +137,39 @@ def list_objects(request, model=None, section=None, space=None):
if not request.resolver_match.url_name.endswith('.list'):
raise ValueError('url_name does not end with .list')
+ reverse_kwargs = {}
+ if section is not None:
+ reverse_kwargs['section'] = section
+ if space is not None:
+ reverse_kwargs['space'] = space
+
# noinspection PyProtectedMember
ctx = {
- 'create_url': request.resolver_match.url_name[:-4]+'create',
- 'edit_url': request.resolver_match.url_name[:-4]+'edit',
+ 'create_url': reverse(request.resolver_match.url_name[:-4]+'create', kwargs=reverse_kwargs),
'path': request.path,
'model_name': model.__name__.lower(),
'model_title': model._meta.verbose_name,
'model_title_plural': model._meta.verbose_name_plural,
- 'objects': model.objects.all().order_by('id'),
}
+ queryset = model.objects.all().order_by('id')
+ for obj in queryset:
+ reverse_kwargs['pk'] = obj.pk
+ obj.edit_url = reverse(request.resolver_match.url_name[:-4]+'edit', kwargs=reverse_kwargs)
+ reverse_kwargs.pop('pk', None)
+
if space is not None:
+ space = get_object_or_404(Section, pk=section)
+ queryset = queryset.filter(space=space)
ctx.update({
- 'back_url': reverse('editor.space', kwargs={'pk': space}),
+ 'back_url': reverse('editor.space', kwargs={'pk': space.pk}),
'back_title': _('back to space'),
})
elif section is not None:
+ section = get_object_or_404(Section, pk=section)
+ queryset = queryset.filter(section=section)
ctx.update({
- 'back_url': reverse('editor.space', kwargs={'pk': space}),
+ 'back_url': reverse('editor.section', kwargs={'pk': section.pk}),
'back_title': _('back to space'),
})
else:
@@ -164,4 +178,8 @@ def list_objects(request, model=None, section=None, space=None):
'back_title': _('back to overview'),
})
+ ctx.update({
+ 'objects': queryset,
+ })
+
return render(request, 'editor/list.html', ctx)