diff --git a/src/c3nav/editor/templates/editor/graph.html b/src/c3nav/editor/templates/editor/graph.html index cad93e75..0567796c 100644 --- a/src/c3nav/editor/templates/editor/graph.html +++ b/src/c3nav/editor/templates/editor/graph.html @@ -2,16 +2,21 @@ {% load i18n %} {% include 'editor/fragment_levels.html' %} -

{{ space.title }}

+

+ {% trans 'Graph' %} + + {% if space %} + {% with space.title as space_title %} + {% blocktrans %}in space {{ space_title }}{% endblocktrans %} + {% endwith %} + {% else %} + {% with level.title as level_title %} + {% blocktrans %}on level {{ level_title }}{% endblocktrans %} + {% endwith %} + {% endif %} + +

- - {% trans 'Space' as model_title %} - {% blocktrans %}Edit {{ model_title }}{% endblocktrans %} - -

-

- « {% trans 'back to overview' %} + « {{ back_title }}

{% bootstrap_messages %} - -{% include 'editor/fragment_child_models.html' %} diff --git a/src/c3nav/editor/urls.py b/src/c3nav/editor/urls.py index 4d1a1e92..aa88f848 100644 --- a/src/c3nav/editor/urls.py +++ b/src/c3nav/editor/urls.py @@ -2,7 +2,7 @@ from django.apps import apps from django.conf.urls import url from c3nav.editor.views.changes import changeset_detail, changeset_edit -from c3nav.editor.views.edit import edit, level_detail, list_objects, main_index, space_detail +from c3nav.editor.views.edit import edit, graph_edit, level_detail, list_objects, main_index, space_detail from c3nav.editor.views.login import login_view, logout_view from c3nav.editor.views.users import user_detail @@ -37,6 +37,8 @@ urlpatterns = [ url(r'^levels/(?Pc?[0-9]+)/spaces/(?Pc?[0-9]+)/$', space_detail, name='editor.spaces.detail'), url(r'^levels/(?Pc?[0-9]+)/levels_on_top/create$', edit, name='editor.levels_on_top.create', kwargs={'model': 'Level'}), + url(r'^levels/(?Pc?[0-9]+)/graph/$', graph_edit, name='editor.levels.graph'), + url(r'^spaces/(?Pc?[0-9]+)/graph/$', graph_edit, name='editor.spaces.graph'), url(r'^changesets/(?P[0-9]+)/$', changeset_detail, name='editor.changesets.detail'), url(r'^changesets/(?P[0-9]+)/edit$', changeset_edit, name='editor.changesets.edit'), url(r'^users/(?P[0-9]+)/$', user_detail, name='editor.users.detail'), diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py index ed838dd0..42491552 100644 --- a/src/c3nav/editor/views/edit.py +++ b/src/c3nav/editor/views/edit.py @@ -291,8 +291,8 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals if level is not None: reverse_kwargs['level'] = level - level = get_object_or_404(Level, pk=level) - queryset = queryset.filter(Level.q_for_request(request), level=level).defer('geometry') + level = get_object_or_404(Level.objects.filter(Level.q_for_request(request)), pk=level) + queryset = queryset.filter(level=level).defer('geometry') ctx.update({ 'back_url': reverse('editor.levels.detail', kwargs={'pk': level.pk}), 'back_title': _('back to level'), @@ -330,3 +330,39 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals }) return render(request, 'editor/list.html', ctx) + + +@sidebar_view +def graph_edit(request, level=None, space=None): + Level = request.changeset.wrap_model('Level') + Space = request.changeset.wrap_model('Space') + + can_edit = request.changeset.can_edit(request) + + ctx = { + 'path': request.path, + 'can_edit': can_edit, + } + + if level is not None: + level = get_object_or_404(Level.objects.filter(Level.q_for_request(request)), pk=level) + ctx.update({ + 'back_url': reverse('editor.levels.detail', kwargs={'pk': level.pk}), + 'back_title': _('back to level'), + 'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True), + 'level': level, + 'level_url': request.resolver_match.url_name, + 'geometry_url': '/api/editor/geometries/?level='+str(level.primary_level_pk), + }) + elif space is not None: + queryset = Space.objects.filter(Space.q_for_request(request)).select_related('level').defer('geometry') + space = get_object_or_404(queryset, pk=space) + ctx.update({ + 'space': space, + 'level': space.level, + 'back_url': reverse('editor.spaces.detail', kwargs={'level': space.level.pk, 'pk': space.pk}), + 'back_title': _('back to space'), + 'geometry_url': '/api/editor/geometries/?space='+str(space.pk), + }) + + return render(request, 'editor/graph.html', ctx)