implement node_click_setting
This commit is contained in:
parent
88995132d5
commit
ffb002c1e1
1 changed files with 41 additions and 7 deletions
|
@ -334,7 +334,8 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals
|
||||||
return render(request, 'editor/list.html', ctx)
|
return render(request, 'editor/list.html', ctx)
|
||||||
|
|
||||||
|
|
||||||
def connect_nodes(active_node, to_node, edge_settings_form, graph_editing_settings):
|
def connect_nodes(request, active_node, to_node, edge_settings_form, graph_editing_settings):
|
||||||
|
messages.info(request, _('Nodes connected.'))
|
||||||
return active_node, False
|
return active_node, False
|
||||||
|
|
||||||
|
|
||||||
|
@ -404,11 +405,44 @@ def graph_edit(request, level=None, space=None):
|
||||||
clicked_position = graph_action_form.cleaned_data.get('clicked_position')
|
clicked_position = graph_action_form.cleaned_data.get('clicked_position')
|
||||||
if clicked_node is not None and clicked_position is None:
|
if clicked_node is not None and clicked_position is None:
|
||||||
node_click_setting = graph_editing_settings['node_click']
|
node_click_setting = graph_editing_settings['node_click']
|
||||||
if node_click_setting == 'connect_or_toggle':
|
if node_click_setting in ('connect', 'connect_or_toggle'):
|
||||||
set_active_node = True
|
connect = False
|
||||||
|
if node_click_setting == 'connect':
|
||||||
|
connect = True
|
||||||
|
elif active_node is None:
|
||||||
|
active_node = clicked_node
|
||||||
|
set_active_node = True
|
||||||
|
elif active_node == clicked_node:
|
||||||
|
active_node = None
|
||||||
|
set_active_node = True
|
||||||
|
else:
|
||||||
|
connect = True
|
||||||
|
|
||||||
|
if connect:
|
||||||
|
with request.changeset.lock_to_edit(request) as changeset:
|
||||||
|
if changeset.can_edit(request):
|
||||||
|
active_node, set_active_node = connect_nodes(request, active_node, clicked_node,
|
||||||
|
edge_settings_form, graph_editing_settings)
|
||||||
|
else:
|
||||||
|
messages.error(request, _('You can not edit changes on this changeset.'))
|
||||||
|
elif node_click_setting == 'activate':
|
||||||
active_node = clicked_node
|
active_node = clicked_node
|
||||||
else:
|
set_active_node = True
|
||||||
raise NotImplementedError
|
elif node_click_setting == 'deactivate':
|
||||||
|
active_node = None
|
||||||
|
set_active_node = True
|
||||||
|
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 clicked_node is None and clicked_position is not None:
|
elif clicked_node is None and clicked_position is not None:
|
||||||
click_anywhere_setting = graph_editing_settings['click_anywhere']
|
click_anywhere_setting = graph_editing_settings['click_anywhere']
|
||||||
if (click_anywhere_setting == 'create_node' or
|
if (click_anywhere_setting == 'create_node' or
|
||||||
|
@ -421,10 +455,10 @@ def graph_edit(request, level=None, space=None):
|
||||||
node.space = space
|
node.space = space
|
||||||
node.geometry = clicked_position
|
node.geometry = clicked_position
|
||||||
node.save()
|
node.save()
|
||||||
messages.success(request, _('New graph node created!'))
|
messages.success(request, _('New graph node created.'))
|
||||||
after_create_node_setting = graph_editing_settings['after_create_node']
|
after_create_node_setting = graph_editing_settings['after_create_node']
|
||||||
if after_create_node_setting == 'connect':
|
if after_create_node_setting == 'connect':
|
||||||
active_node, set_active_node = connect_nodes(active_node, node,
|
active_node, set_active_node = connect_nodes(request, active_node, node,
|
||||||
edge_settings_form,
|
edge_settings_form,
|
||||||
graph_editing_settings)
|
graph_editing_settings)
|
||||||
elif after_create_node_setting == 'activate':
|
elif after_create_node_setting == 'activate':
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue