make section-dependend editor urls
This commit is contained in:
parent
866f68381f
commit
32c075301d
3 changed files with 31 additions and 12 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
{% include 'editor/fragment_sections.html' %}
|
||||
|
||||
<a class="btn btn-default btn-sm pull-right" accesskey="n" href="{% url create_url %}">
|
||||
<a class="btn btn-default btn-sm pull-right" accesskey="n" href="{{ create_url }}">
|
||||
{% blocktrans %}New {{ model_title }}{% endblocktrans %}
|
||||
</a>
|
||||
<h3>{% blocktrans %}{{ model_title_plural }}{% endblocktrans %}</h3>
|
||||
|
@ -19,7 +19,7 @@
|
|||
{% endif %}
|
||||
<tr data-pk="{{ item.pk }}">
|
||||
<td>{{ item.title }}</td>
|
||||
<td><a href="{% url edit_url pk=item.pk %}">{% trans 'Edit' %}</a></td>
|
||||
<td><a href="{{ item.edit_url }}">{% trans 'Edit' %}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
|
|
|
@ -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<pk>[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<pk>[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'))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue