From 4048091c2b2422e5c32f6a0ca301717de3d35506 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 6 Jun 2019 21:55:02 +1000 Subject: [PATCH] Prevent user from inputting a 'blank' supplier part into a line item --- InvenTree/order/views.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 56b5077d22..c4bcc05f69 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -5,10 +5,12 @@ Django views for interacting with Order app # -*- coding: utf-8 -*- from __future__ import unicode_literals +from django.utils.translation import ugettext as _ from django.views.generic import DetailView, ListView from django.forms import HiddenInput from .models import PurchaseOrder, PurchaseOrderLineItem +from company.models import SupplierPart from . import forms as order_forms @@ -108,6 +110,36 @@ class POLineItemCreate(AjaxCreateView): form_class = order_forms.EditPurchaseOrderLineItemForm ajax_form_title = 'Add Line Item' + def post(self, request, *arg, **kwargs): + + self.request = request + + form = self.get_form() + + valid = form.is_valid() + + part_id = form['part'].value() + + try: + SupplierPart.objects.get(id=part_id) + except (SupplierPart.DoesNotExist, ValueError): + valid = False + form.errors['part'] = [_('This field is required')] + + data = { + 'form_valid': valid, + } + + if valid: + self.object = form.save() + + data['pk'] = self.object.pk + data['text'] = str(self.object) + else: + self.object = None + + return self.renderJsonResponse(request, form, data,) + def get_form(self): """ Limit choice options based on the selected order, etc """