From 079f4765a762ff6656fcd8d7019d25eea38f5149 Mon Sep 17 00:00:00 2001 From: Cefin Date: Wed, 27 Oct 2021 14:56:59 +0200 Subject: can change the parent of hierarchic types --- ishtar_common/admin.py | 35 +++++++++++++----------- ishtar_common/templates/admin/change_parent.html | 2 +- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 80432caaa..a803c64cc 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -397,28 +397,31 @@ class ChangeParentAdmin: if not request.POST: return HttpResponseRedirect(return_url) - selected = request.POST.getlist("_selected_action", []) - items = {} + selected_children_pk = request.POST.getlist("_selected_action", []) choices = [] - # if hasattr(self.model, "parent"): - parents = self.model.objects.all().select_related("parent") + parents = self.model.objects.all() for obj in parents: - choices.append((obj, str(obj))) - items[str(obj)] = obj + choices.append((obj.pk, str(obj))) form = None if "apply" in request.POST: form = ChangeParentForm(choices, request.POST, request.FILES) if form.is_valid(): - form.save() - messages.add_message( - request, - messages.INFO, - str(_("{} change parent of {}.")).format( - " ; ".join(changes), str(change_parent) - ), - ) - return HttpResponseRedirect(return_url) + change_parent = form.cleaned_data["change_parent"] + change = [] + for child_id in selected_children_pk: + child = self.model.objects.get(pk=child_id) + child.parent_id = change_parent + child.save() + change.append(str(child)) + messages.add_message( + request, + messages.INFO, + str(_("{} parent(s) was change to {}.")).format( + " ; ".join(change), str(self.model.objects.get(pk=change_parent)) + ), + ) + return HttpResponseRedirect(return_url) if not form: form = ChangeParentForm(choices) return render( @@ -427,7 +430,7 @@ class ChangeParentAdmin: { "change_parent_form": form, "current_action": "change_parent_selected", - "selected_item": selected, + "selected_items": selected_children_pk, }, ) diff --git a/ishtar_common/templates/admin/change_parent.html b/ishtar_common/templates/admin/change_parent.html index dab4eb5ba..8d6744cff 100644 --- a/ishtar_common/templates/admin/change_parent.html +++ b/ishtar_common/templates/admin/change_parent.html @@ -11,7 +11,7 @@ {% for selected in selected_items %} {% endfor %} - + {% endblock %} -- cgit v1.2.3