From cae31c3993d0787700e28f8cc58964e9b40d8fa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 11 Jun 2017 01:19:37 +0200 Subject: [PATCH] edit sections on top of other sections --- src/c3nav/editor/templates/editor/edit.html | 18 +++++++++++++----- src/c3nav/editor/templates/editor/section.html | 2 +- src/c3nav/editor/urls.py | 2 ++ src/c3nav/editor/views.py | 16 +++++++++++++++- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/c3nav/editor/templates/editor/edit.html b/src/c3nav/editor/templates/editor/edit.html index e8a0db35..7d93045e 100644 --- a/src/c3nav/editor/templates/editor/edit.html +++ b/src/c3nav/editor/templates/editor/edit.html @@ -6,11 +6,19 @@ {% trans 'Cancel' %} -{% if new %} -

{% blocktrans %}New {{ model_title }}{% endblocktrans %}

-{% else %} -

{% blocktrans %}Edit {{ model_title }}{% endblocktrans %}

-{% endif %} + +

+ {% if new %} + {% blocktrans %}New {{ model_title }}{% endblocktrans %} + {% else %} + {% blocktrans %}Edit {{ model_title }}{% endblocktrans %} + {% endif %} + {% if on_top_of %} + {% with on_top_of.title as on_top_of_section_title %} + {% blocktrans %}on top of {{ on_top_of_section_title }}{% endblocktrans %} + {% endwith %} + {% endif %} +

{% csrf_token %} {% bootstrap_form form %} diff --git a/src/c3nav/editor/templates/editor/section.html b/src/c3nav/editor/templates/editor/section.html index dc2548f4..b4b14afe 100644 --- a/src/c3nav/editor/templates/editor/section.html +++ b/src/c3nav/editor/templates/editor/section.html @@ -25,7 +25,7 @@ {% include 'editor/fragment_child_models.html' %} {% if section.on_top_of == None %} - + {% blocktrans %}New {{ model_title }}{% endblocktrans %}

{% trans 'Sections on top' %}

diff --git a/src/c3nav/editor/urls.py b/src/c3nav/editor/urls.py index 6aa58331..ffc458a1 100644 --- a/src/c3nav/editor/urls.py +++ b/src/c3nav/editor/urls.py @@ -32,6 +32,8 @@ urlpatterns = [ url(r'^$', main_index, name='editor.index'), url(r'^sections/(?P[0-9]+)/$', section_detail, name='editor.sections.detail'), url(r'^sections/(?P
[0-9]+)/spaces/(?P[0-9]+)/$', space_detail, name='editor.spaces.detail'), + url(r'^sections/(?P[0-9]+)/sections_on_top/create$', edit, name='editor.sections_on_top.create', + kwargs={'model': 'Section'}), ] urlpatterns.extend(add_editor_urls('Section', with_list=False, explicit_edit=True)) urlpatterns.extend(add_editor_urls('LocationGroup')) diff --git a/src/c3nav/editor/views.py b/src/c3nav/editor/views.py index 1b6b2288..e05d87cd 100644 --- a/src/c3nav/editor/views.py +++ b/src/c3nav/editor/views.py @@ -79,7 +79,7 @@ def space_detail(request, section, pk): @sidebar_view -def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=False): +def edit(request, pk=None, model=None, section=None, space=None, on_top_of=None, explicit_edit=False): model = EDITOR_FORM_MODELS[model] related_name = model._meta.default_related_name @@ -98,6 +98,8 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F section = get_object_or_404(Section, pk=section) elif space is not None: space = get_object_or_404(Space, pk=space) + elif on_top_of is not None: + on_top_of = get_object_or_404(Section.objects.filter(on_top_of__isnull=True), pk=on_top_of) new = obj is None # noinspection PyProtectedMember @@ -123,6 +125,13 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F if not new: ctx.update({ 'geometry_url': '/api/editor/geometries/?section='+str(obj.primary_section_pk), + 'on_top_of': obj.on_top_of, + }) + elif on_top_of: + ctx.update({ + 'geometry_url': '/api/editor/geometries/?section=' + str(on_top_of.pk), + 'on_top_of': on_top_of, + 'back_url': reverse('editor.sections.detail', kwargs={'pk': on_top_of.pk}), }) elif model == Space and not new: ctx.update({ @@ -172,6 +181,8 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F raise NotImplementedError obj.delete() if model == Section: + if obj.on_top_of_id is not None: + return redirect(reverse('editor.sections.detail', kwargs={'pk': obj.on_top_of_id})) return redirect(reverse('editor.index')) elif model == Space: return redirect(reverse('editor.spaces.list', kwargs={'section': obj.section.pk})) @@ -206,6 +217,9 @@ def edit(request, pk=None, model=None, section=None, space=None, explicit_edit=F if space is not None: obj.space = space + if on_top_of is not None: + obj.on_top_of = on_top_of + obj.save() form.save_m2m()