make it possible to delete graph nodes again

This commit is contained in:
Laura Klünder 2017-11-22 23:49:55 +01:00
parent ab0db6cb85
commit 0c34d348da
4 changed files with 35 additions and 1 deletions

View file

@ -119,6 +119,9 @@ legend {
right: 8px;
top: 8px;
}
[data-active-node] form button {
margin-top: 5px;
}
[data-levels], [data-sublevels], #sidebar .nav, [data-modal-close] {
display:none;
}

View file

@ -259,7 +259,12 @@ editor = {
var btn = $(this).data('btn');
if (btn !== undefined && btn !== null) {
if ($(btn).is('[name]')) {
data += '&' + $('<input>').attr('name', $(btn).attr('name')).val($(btn).val()).serialize();
var name = $(btn).attr('name');
data += '&' + $('<input>').attr('name', name).val($(btn).val()).serialize();
if (name === 'delete_confirm') {
editor._active_graph_node = null;
editor._active_graph_node_html = null;
}
}
}
var action = $(this).attr('action');

View file

@ -33,6 +33,11 @@
{% blocktrans %}in space {{ space_title }}{% endblocktrans %}<br>
{% blocktrans %}on level {{ level_title }}{% endblocktrans %}
{% endwith %}
<form action="{{ request.path }}" method="post">
{% csrf_token %}
<input type="hidden" name="pk" value="{{ active_node.pk }}">
<button type="submit" class="btn btn-danger btn-xs" name="delete" value="1">{% trans 'Delete Node' %}</button>
</form>
</div>
{% else %}
<div data-active-node class="well well-sm"></div>

View file

@ -419,6 +419,27 @@ def graph_edit(request, level=None, space=None):
create_nodes = True
if request.method == 'POST':
if request.POST.get('delete') == '1':
# Delete this graphnode!
node = get_object_or_404(GraphNode, pk=request.POST.get('pk'))
if request.POST.get('delete_confirm') == '1':
with request.changeset.lock_to_edit(request) as changeset:
if changeset.can_edit(request):
node.edges_from_here.all().delete()
node.edges_to_here.all().delete()
node.delete()
else:
messages.error(request, _('You can not edit changes on this changeset.'))
return redirect(request.path)
messages.success(request, _('Graph Node was successfully deleted.'))
return redirect(request.path)
return render(request, 'editor/delete.html', {
'model_title': GraphNode._meta.verbose_name,
'pk': node.pk,
'obj_title': node.title
})
edge_settings_form = GraphEdgeSettingsForm(instance=GraphEdge(), request=request, data=request.POST)
graph_action_form = GraphEditorActionForm(request=request, allow_clicked_position=create_nodes,
data=request.POST)