base for graph_edit view

This commit is contained in:
Laura Klünder 2017-07-15 16:31:20 +02:00
parent 4453ea7b62
commit 66dabb3787
3 changed files with 56 additions and 13 deletions

View file

@ -2,16 +2,21 @@
{% load i18n %}
{% include 'editor/fragment_levels.html' %}
<h3>{{ space.title }}</h3>
<h3>
{% trans 'Graph' %}
<small>
{% 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 %}
</small>
</h3>
<p>
<a class="btn btn-default btn-xs" accesskey="e" href="{% url 'editor.spaces.edit' level=space.level.pk pk=space.pk %}">
{% trans 'Space' as model_title %}
<i class="glyphicon glyphicon-pencil"></i> {% blocktrans %}Edit {{ model_title }}{% endblocktrans %}
</a>
</p>
<p>
<a href="{% url 'editor.spaces.list' level=space.level.pk %}">&laquo; {% trans 'back to overview' %}</a>
<a href="{{ back_url }}">&laquo; {{ back_title }}</a>
</p>
{% bootstrap_messages %}
{% include 'editor/fragment_child_models.html' %}

View file

@ -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/(?P<level>c?[0-9]+)/spaces/(?P<pk>c?[0-9]+)/$', space_detail, name='editor.spaces.detail'),
url(r'^levels/(?P<on_top_of>c?[0-9]+)/levels_on_top/create$', edit, name='editor.levels_on_top.create',
kwargs={'model': 'Level'}),
url(r'^levels/(?P<level>c?[0-9]+)/graph/$', graph_edit, name='editor.levels.graph'),
url(r'^spaces/(?P<space>c?[0-9]+)/graph/$', graph_edit, name='editor.spaces.graph'),
url(r'^changesets/(?P<pk>[0-9]+)/$', changeset_detail, name='editor.changesets.detail'),
url(r'^changesets/(?P<pk>[0-9]+)/edit$', changeset_edit, name='editor.changesets.edit'),
url(r'^users/(?P<pk>[0-9]+)/$', user_detail, name='editor.users.detail'),

View file

@ -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)