summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
authorCefin <kevon@tuta.io>2021-10-27 14:56:59 +0200
committerCefin <kevon@tuta.io>2021-10-27 14:56:59 +0200
commit079f4765a762ff6656fcd8d7019d25eea38f5149 (patch)
treea2ca2ff9afc965c0be80e8426baaa94f6596be48 /ishtar_common/admin.py
parentbc166dcfe47c021dd1c106b621a9f2206148d3ce (diff)
downloadIshtar-079f4765a762ff6656fcd8d7019d25eea38f5149.tar.bz2
Ishtar-079f4765a762ff6656fcd8d7019d25eea38f5149.zip
can change the parent of hierarchic types
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py35
1 files changed, 19 insertions, 16 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,
},
)