remove GraphNode.space_transfer

This commit is contained in:
Laura Klünder 2017-08-06 16:52:08 +02:00
parent ceaaeb2087
commit 3347908d06
7 changed files with 32 additions and 54 deletions

View file

@ -83,7 +83,7 @@ class EditorViewSet(ViewSet):
levels, levels_on_top, levels_under = self._get_levels_pk(request, level)
# don't prefetch groups for now as changesets do not yet work with m2m-prefetches
levels = Level.objects.filter(pk__in=levels).filter(Level.q_for_request(request))
graphnodes = request.changeset.wrap_model('GraphNode').objects.filter(space_transfer=True)
graphnodes = request.changeset.wrap_model('GraphNode').objects.all()
levels = levels.prefetch_related(
Prefetch('spaces', request.changeset.wrap_model('Space').objects.filter(Space.q_for_request(request))),
Prefetch('doors', request.changeset.wrap_model('Door').objects.filter(Door.q_for_request(request))),
@ -130,6 +130,7 @@ class EditorViewSet(ViewSet):
space = next(s for s in other_spaces if s.pk == space.pk)
other_spaces = [s for s in other_spaces
if s.geometry.intersects(doors_space_geom) and s.pk != space.pk]
all_other_spaces = other_spaces
if level.on_top_of_id is None:
other_spaces_lower = [s for s in other_spaces if s.level_id in levels_under]
@ -154,11 +155,12 @@ class EditorViewSet(ViewSet):
# todo: permissions
graphnodes = request.changeset.wrap_model('GraphNode').objects.all()
graphnodes = graphnodes.filter((Q(space__in=other_spaces) & Q(space_transfer=True)) |
Q(space__pk=space.pk))
graphnodes = graphnodes.filter((Q(space__in=all_other_spaces)) | Q(space__pk=space.pk))
space_graphnodes = tuple(node for node in graphnodes if node.space == space)
graphedges = request.changeset.wrap_model('GraphEdge').objects.all()
graphedges = graphedges.filter(Q(from_node__in=graphnodes) | Q(to_node__in=graphnodes))
graphedges = graphedges.filter(Q(from_node__in=space_graphnodes) | Q(to_node__in=space_graphnodes))
graphedges = graphedges.select_related('from_node', 'to_node', 'waytype')
results = chain(
@ -203,7 +205,6 @@ class EditorViewSet(ViewSet):
'poi': '#4488cc',
'shadow': '#000000',
'graphnode': '#00BB00',
'graphnode__space_transfer': '#008800',
'graphedge': '#00CC00',
'altitudemarker': '#ffff00',
})

View file

@ -15,7 +15,7 @@ from shapely.geometry.geo import mapping
from c3nav.editor.models import ChangeSet, ChangeSetUpdate
from c3nav.mapdata.fields import GeometryField
from c3nav.mapdata.models import GraphEdge, GraphNode
from c3nav.mapdata.models import GraphEdge
class EditorFormBase(ModelForm):
@ -161,7 +161,7 @@ class EditorFormBase(ModelForm):
def create_editor_form(editor_model):
possible_fields = ['slug', 'name', 'ordering', 'category', 'width', 'groups', 'color', 'priority', 'altitude',
'waytype', 'access_restriction', 'space_transfer', 'can_search', 'can_describe', 'outside',
'waytype', 'access_restriction', 'can_search', 'can_describe', 'outside',
'geometry', 'single', 'allow_levels', 'allow_spaces', 'allow_areas', 'allow_pois',
'left', 'top', 'right', 'bottom']
field_names = [field.name for field in editor_model._meta.get_fields() if not field.one_to_many]
@ -190,12 +190,6 @@ class RejectForm(ModelForm):
fields = ('comment', )
class GraphNodeSettingsForm(ModelForm):
class Meta:
model = GraphNode
fields = ('space_transfer', )
class GraphEdgeSettingsForm(ModelForm):
class Meta:
model = GraphEdge
@ -243,7 +237,6 @@ class GraphEditorSettingsForm(Form):
('activate', _('activate')),
('deactivate', _('deactivate')),
('toggle', _('toggle')),
('set_space_transfer', _('set space transfer')),
('delete', _('delete node')),
('noop', _('do nothing')),
), initial='connect_or_toggle')

View file

@ -159,22 +159,15 @@ editor = {
}
var active_graph_node = content.find('[data-active-node]');
if (!editor._active_graph_node_space_transfer && !editor._in_modal && editor._last_graph_path !== editor.get_location_path()) {
editor._active_graph_node = null;
editor._active_graph_node_space_transfer = null;
editor._active_graph_node_html = null;
}
if (active_graph_node.length) {
var active_graph_node_id = active_graph_node.attr('data-active-node');
if (active_graph_node_id !== '') {
if (active_graph_node_id === 'null') {
editor._active_graph_node = null;
editor._active_graph_node_space_transfer = null;
editor._active_graph_node_html = null;
active_graph_node.remove();
} else {
editor._active_graph_node = active_graph_node_id;
editor._active_graph_node_space_transfer = active_graph_node.is('[data-space-transfer]');
editor._active_graph_node_html = active_graph_node.html();
}
} else if (editor._active_graph_node_html !== null) {
@ -294,7 +287,6 @@ editor = {
_graph_editing: false,
_graph_creating: false,
_active_graph_node: null,
_active_graph_node_space_transfer: null,
_active_graph_node_html: null,
_deactivate_graph_node_on_click: false,
_graph_edges_from: {},
@ -467,9 +459,6 @@ editor = {
_get_geometry_style: function (feature) {
// style callback for GeoJSON loader
var style = editor._get_mapitem_type_style(feature.properties.type);
if (feature.properties.space_transfer) {
style = editor._get_mapitem_type_style('graphnode__space_transfer');
}
if (editor._level_control.current_level_id === editor._sublevel_control.current_level_id) {
if (editor._sublevel_control.level_ids.indexOf(feature.properties.level) >= 0 && editor._level_control.current_level_id !== feature.properties.level) {
style.stroke = true;
@ -703,7 +692,6 @@ editor = {
sidebar.find('[data-active-node]').remove();
sidebar.find('#id_active_node').val('');
editor._active_graph_node = null;
editor._active_graph_node_space_transfer = null;
editor._active_graph_node_html = null;
return;
}

View file

@ -29,8 +29,8 @@
{% bootstrap_messages %}
{% if set_active_node %}
<div data-active-node="{% if active_node %}{{ active_node.pk }}{% else %}null{% endif %}"{% if active_node.space_transfer %} data-space-transfer{% endif %} class="well well-sm">
<strong>{% trans 'Active node:' %} {{ active_node.pk }}</strong>{% if active_node.space_transfer %} <em>({% trans 'space transfer node' %})</em>{% endif %}<br>
<div data-active-node="{% if active_node %}{{ active_node.pk }}{% else %}null{% endif %}" class="well well-sm">
<strong>{% trans 'Active node:' %} {{ active_node.pk }}</strong><br>
{% with space_title=active_node.space.title level_title=active_node.space.level.title %}
{% blocktrans %}in space {{ space_title }}{% endblocktrans %}<br>
{% blocktrans %}on level {{ level_title }}{% endblocktrans %}
@ -43,9 +43,6 @@
<form action="{{ request.path }}" method="post" data-graph-editing="{{ graph_editing }}"{% if deactivate_node_on_click %} data-deactivate-node-on-click{% endif %} data-nozoom>
{% csrf_token %}
<h4>{% trans 'Default node properties' %}</h4>
{% bootstrap_form node_settings_form %}
<h4>{% trans 'Default edge properties' %}</h4>
{% bootstrap_form edge_settings_form %}

View file

@ -8,8 +8,7 @@ from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from c3nav.editor.forms import (GraphEdgeSettingsForm, GraphEditorActionForm, GraphEditorSettingsForm,
GraphNodeSettingsForm)
from c3nav.editor.forms import GraphEdgeSettingsForm, GraphEditorActionForm, GraphEditorSettingsForm
from c3nav.editor.views.base import sidebar_view
@ -452,11 +451,10 @@ def graph_edit(request, level=None, space=None):
allow_clicked_position = True
if request.method == 'POST':
node_settings_form = GraphNodeSettingsForm(instance=GraphNode(), data=request.POST)
edge_settings_form = GraphEdgeSettingsForm(instance=GraphEdge(), request=request, data=request.POST)
graph_action_form = GraphEditorActionForm(request=request, allow_clicked_position=allow_clicked_position,
data=request.POST)
if node_settings_form.is_valid() and edge_settings_form.is_valid() and graph_action_form.is_valid():
if edge_settings_form.is_valid() and graph_action_form.is_valid():
goto_space = graph_action_form.cleaned_data['goto_space']
if goto_space is not None:
return redirect(reverse('editor.spaces.graph', kwargs={'space': goto_space.pk}))
@ -496,14 +494,6 @@ def graph_edit(request, level=None, space=None):
elif node_click_setting == 'toggle':
active_node = None if active_node == clicked_node else clicked_node
set_active_node = True
elif node_click_setting == 'set_space_transfer':
with request.changeset.lock_to_edit(request) as changeset:
if changeset.can_edit(request):
clicked_node.space_transfer = node_settings_form.instance.space_transfer
clicked_node.save()
messages.success(request, _('Space transfer set.'))
else:
messages.error(request, _('You can not edit changes on this changeset.'))
elif node_click_setting == 'delete':
with request.changeset.lock_to_edit(request) as changeset:
if changeset.can_edit(request):
@ -530,12 +520,7 @@ def graph_edit(request, level=None, space=None):
with request.changeset.lock_to_edit(request) as changeset:
if changeset.can_edit(request):
after_create_node_setting = graph_editing_settings['after_create_node']
node = node_settings_form.instance
node.space = space
node.geometry = clicked_position
if (active_node is not None and after_create_node_setting == 'connect' and
active_node.space != space):
node.space_transfer = True
node = GraphNode(space=space, geometry=clicked_position)
node.save()
messages.success(request, _('New graph node created.'))
if after_create_node_setting == 'connect':
@ -557,12 +542,10 @@ def graph_edit(request, level=None, space=None):
'active_node': active_node,
})
else:
node_settings_form = GraphNodeSettingsForm()
edge_settings_form = GraphEdgeSettingsForm(request=request)
graph_action_form = GraphEditorActionForm(request=request, allow_clicked_position=allow_clicked_position)
ctx.update({
'node_settings_form': node_settings_form,
'edge_settings_form': edge_settings_form,
'graph_action_form': graph_action_form,
'graph_editing': graph_editing,

View file

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2017-08-06 14:42
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0031_auto_20170805_1647'),
]
operations = [
migrations.RemoveField(
model_name='graphnode',
name='space_transfer',
),
]

View file

@ -16,7 +16,6 @@ class GraphNode(SpaceGeometryMixin, models.Model):
A graph node
"""
geometry = GeometryField('point')
space_transfer = models.BooleanField(_('space transfer node'), default=False, db_index=True)
class Meta:
verbose_name = _('Graph Node')
@ -25,8 +24,6 @@ class GraphNode(SpaceGeometryMixin, models.Model):
def get_geojson_properties(self, *args, **kwargs) -> dict:
result = super().get_geojson_properties(*args, **kwargs)
if self.space_transfer:
result['space_transfer'] = True
return result