From cd438f05699656a01d7ffe3f405fb6e88e56114a Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 28 Apr 2019 09:53:42 +1000 Subject: [PATCH] Add generic method for retriving GET or POST params --- InvenTree/InvenTree/views.py | 16 ++++++++++++++++ InvenTree/part/forms.py | 2 ++ InvenTree/part/views.py | 22 +++++++++++++--------- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 551f624cb9..ffd757ebdc 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -69,6 +69,22 @@ class AjaxMixin(object): ajax_form_action = '' ajax_form_title = '' + def get_param(self, name, method='GET'): + """ Get a request query parameter value from URL e.g. ?part=3 + + Args: + name: Variable name e.g. 'part' + method: Request type ('GET' or 'POST') + + Returns: + Value of the supplier parameter or None if parameter is not available + """ + + if method == 'POST': + return self.request.POST.get(name, None) + else: + return self.request.GET.get(name, None) + def get_data(self): """ Get extra context data (default implementation is empty dict) diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py index 1157012196..bba8c3e973 100644 --- a/InvenTree/part/forms.py +++ b/InvenTree/part/forms.py @@ -92,6 +92,8 @@ class EditBomItemForm(HelperForm): 'quantity', 'note' ] + + # Prevent editing of the part associated with this BomItem widgets = {'part': forms.HiddenInput()} diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 6db1edfc8e..7667b3908a 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -406,6 +406,7 @@ class SupplierPartCreate(AjaxCreateView): ajax_form_title = 'Create new Supplier Part' context_object_name = 'part' + def get_initial(self): """ Provide initial data for new SupplierPart: @@ -414,18 +415,21 @@ class SupplierPartCreate(AjaxCreateView): """ initials = super(SupplierPartCreate, self).get_initial().copy() - supplier_id = self.request.GET.get('supplier', None) - part_id = self.request.GET.get('part', None) + supplier_id = self.get_param('supplier') + part_id = self.get_param('part') if supplier_id: - initials['supplier'] = get_object_or_404(Company, pk=supplier_id) - # TODO - # self.fields['supplier'].disabled = True + try: + initials['supplier'] = Company.objects.get(pk=supplier_id) + except Company.DoesNotExist: + initials['supplier'] = None + if part_id: - initials['part'] = get_object_or_404(Part, pk=part_id) - # TODO - # self.fields['part'].disabled = True - + try: + initials['part'] = Part.objects.get(pk=part_id) + except Part.DoesNotExist: + initials['part'] = None + return initials