split up graph editing settings and prepare for connecting nodes

This commit is contained in:
Laura Klünder 2017-07-27 11:40:42 +02:00
parent fde9bfa30f
commit 38523b2cb4
3 changed files with 43 additions and 12 deletions

View file

@ -334,6 +334,10 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals
return render(request, 'editor/list.html', ctx)
def connect_nodes(active_node, to_node, edge_settings_form, graph_editing_settings):
return active_node, False
@sidebar_view
def graph_edit(request, level=None, space=None):
Level = request.changeset.wrap_model('Level')
@ -379,7 +383,9 @@ def graph_edit(request, level=None, space=None):
if graph_editing_settings['click_anywhere'] != 'noop':
graph_editing = 'edit-create-nodes'
if graph_editing_settings['click_anywhere'] == 'create_node_if_none_active':
graph_editing = 'edit-create-if-none-active-nodes'
graph_editing = 'edit-create-if-no-active-node'
elif graph_editing_settings['click_anywhere'] == 'create_node_if_other_active':
graph_editing = 'edit-create-if-active-node'
allow_clicked_position = True
if request.method == 'POST':
@ -405,17 +411,30 @@ def graph_edit(request, level=None, space=None):
raise NotImplementedError
elif clicked_node is None and clicked_position is not None:
click_anywhere_setting = graph_editing_settings['click_anywhere']
if click_anywhere_setting != 'create_node_if_none_active' or active_node is None:
node = node_settings_form.instance
node.space = space
node.geometry = clicked_position
if (click_anywhere_setting == 'create_node' or
(click_anywhere_setting != 'create_node_if_none_active' or active_node is None) or
(click_anywhere_setting != 'create_node_if_other_active' or active_node is not None)):
if space.geometry.contains(clicked_position):
with request.changeset.lock_to_edit(request) as changeset:
if changeset.can_edit(request):
node = node_settings_form.instance
node.space = space
node.geometry = clicked_position
node.save()
messages.success(request, _('New graph node created!'))
after_create_node_setting = graph_editing_settings['after_create_node']
if after_create_node_setting == 'connect':
active_node, set_active_node = connect_nodes(active_node, node,
edge_settings_form,
graph_editing_settings)
elif after_create_node_setting == 'activate':
active_node = node
set_active_node = True
elif after_create_node_setting == 'deactivate':
active_node = None
set_active_node = True
else:
messages.error(request, _('You can not edit changes on this changeset.'))
messages.success(request, _('New graph node created!'))
if set_active_node:
ctx.update({
@ -450,7 +469,9 @@ def graph_editing_settings(request):
if request.POST.get('can_close_modal') == '1':
ctx['closemodal'] = True
else:
form = GraphEditorSettingsForm(data=request.session.get('graph_editing_settings', {}))
graph_editing_settings = {field.name: field.initial for field in GraphEditorSettingsForm()}
graph_editing_settings.update(request.session.get('graph_editing_settings', {}))
form = GraphEditorSettingsForm(data=graph_editing_settings)
ctx.update({
'form': form,