remove GraphNode.space_transfer
This commit is contained in:
parent
ceaaeb2087
commit
3347908d06
7 changed files with 32 additions and 54 deletions
|
@ -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',
|
||||
})
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue