diff --git a/openslides/agenda/api.py b/openslides/agenda/api.py index 617064cdd..10a444597 100644 --- a/openslides/agenda/api.py +++ b/openslides/agenda/api.py @@ -10,6 +10,10 @@ :license: GNU GPL, see LICENSE for more details. """ +from django.utils.translation import ugettext as _ +from django.contrib import messages +from django.core.context_processors import csrf + from openslides.system.api import config_get @@ -53,3 +57,11 @@ def children_list(items): if item.children: l += children_list(item.children) return l + +def gen_confirm_form_for_items(request, message, url): + messages.warning(request, '%s
' % (message, url, csrf(request)['csrf_token'], _("Yes"), _("with children"), _("No"))) + +def del_confirm_form_for_items(request, object, name=None): + if name is None: + name = object + gen_confirm_form_for_items(request, _('Do you really want to delete %s?') % name, object.get_absolute_url('delete')) diff --git a/openslides/agenda/views.py b/openslides/agenda/views.py index a184c58f5..7b0ccb6fe 100644 --- a/openslides/agenda/views.py +++ b/openslides/agenda/views.py @@ -18,8 +18,8 @@ from django.contrib import messages from django.utils.translation import ugettext as _ from openslides.agenda.models import Item -from openslides.agenda.api import get_active_item, is_summary, children_list - +from openslides.agenda.api import get_active_item, is_summary, children_list, \ + del_confirm_form_for_items from openslides.agenda.forms import ElementOrderForm, MODELFORM from openslides.application.models import Application from openslides.assignment.models import Assignment @@ -256,8 +256,15 @@ def delete(request, item_id): """ item = Item.objects.get(id=item_id).cast() if request.method == 'POST': - item.delete() - messages.success(request, _("Item %s was successfully deleted.") % item) + if 'all' in request.POST: + item.delete() + messages.success(request, _("Item %s and his children were successfully deleted.") % item) + else: + for child in item.children: + child.parent = item.parent + child.save() + item.delete() + messages.success(request, _("Item %s was successfully deleted.") % item) else: - del_confirm_form(request, item) + del_confirm_form_for_items(request, item) return redirect(reverse('item_overview'))