From fb38ddb1b3b263cbbfcc3e3b0629ade631c226e1 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 8 May 2019 17:57:31 +1000 Subject: [PATCH] Limit choices for 'parent' field when editing PartCategory --- InvenTree/part/views.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index c97808888e..a018d578bf 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -404,12 +404,30 @@ class CategoryEdit(AjaxUpdateView): context = super(CategoryEdit, self).get_context_data(**kwargs).copy() try: - context['category'] = PartCategory.objects.get(pk=self.kwargs['pk']) + context['category'] = self.get_object() except: pass return context + def get_form(self): + """ Customize form data for PartCategory editing. + + Limit the choices for 'parent' field to those which make sense + """ + + form = super(AjaxUpdateView, self).get_form() + + category = self.get_object() + + # Remove any invalid choices for the parent category part + parent_choices = PartCategory.objects.all() + parent_choices = parent_choices.exclude(id__in=category.getUniqueChildren()) + + form.fields['parent'].queryset = parent_choices + + return form + class CategoryDelete(AjaxDeleteView): """ Delete view to delete a PartCategory """