delete nodes by clicking on them

This commit is contained in:
Laura Klünder 2017-07-27 12:01:49 +02:00
parent ffb002c1e1
commit 684450424a
2 changed files with 17 additions and 0 deletions

View file

@ -239,6 +239,7 @@ class GraphEditorSettingsForm(Form):
('deactivate', _('deactivate')),
('toggle', _('toggle')),
('set_space_transfer', _('set space transfer')),
('delete', _('delete node')),
('noop', _('do nothing')),
), initial='connect_or_toggle')

View file

@ -442,6 +442,22 @@ def graph_edit(request, level=None, space=None):
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):
try:
if not request.changeset.get_changed_object(clicked_node).can_delete():
raise PermissionError
except (ObjectDoesNotExist, PermissionError):
messages.error(request, _('This node is connected to other nodes.'))
else:
clicked_node.delete()
if clicked_node == active_node:
active_node = None
set_active_node = True
messages.success(request, _('Node deleted.'))
else:
messages.error(request, _('You can not edit changes on this changeset.'))
elif clicked_node is None and clicked_position is not None:
click_anywhere_setting = graph_editing_settings['click_anywhere']