From 15a42878db0e3e360c36294952e5121fd481730c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 20 Aug 2019 14:28:15 +1000 Subject: [PATCH] Improved view for creating a new part parameter - Hide the Part input - Reduce options based on parameters that already exist! --- InvenTree/part/urls.py | 2 +- InvenTree/part/views.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index f892cc566b..86162b4ec2 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -19,7 +19,7 @@ part_attachment_urls = [ ] part_parameter_urls = [ - url('^new/?', views.PartParameterCreate.as_view(), name='part-param-create'), + url('^new/', views.PartParameterCreate.as_view(), name='part-param-create'), ] part_detail_urls = [ diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index a6e1fe00aa..4e30944058 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -1404,6 +1404,47 @@ class PartParameterCreate(AjaxCreateView): form_class = part_forms.EditPartParameterForm ajax_form_title = 'Create Part Parameter' + def get_initial(self): + + initials = {} + + part_id = self.request.GET.get('part', None) + + if part_id: + try: + initials['part'] = Part.objects.get(pk=part_id) + except (Part.DoesNotExist, ValueError): + pass + + return initials + + def get_form(self): + """ Return the form object. + + - Hide the 'Part' field (specified in URL) + - Limit the 'Template' options (to avoid duplicates) + """ + + form = super().get_form() + + part_id = self.request.GET.get('part', None) + + if part_id: + try: + part = Part.objects.get(pk=part_id) + + form.fields['part'].widget = HiddenInput() + + query = form.fields['template'].queryset + + query = query.exclude(id__in=[param.template.id for param in part.parameters.all()]) + + form.fields['template'].queryset = query + + except (Part.DoesNotExist, ValueError): + pass + + return form class CategoryDetail(DetailView):