Agk, working out forms is hard

This commit is contained in:
Oliver Walters 2021-03-29 23:32:41 +11:00
parent bd87f4c733
commit d64dd68403
2 changed files with 37 additions and 10 deletions

View File

@ -213,7 +213,7 @@ class EditSalesOrderLineItemForm(HelperForm):
]
class AllocateSerialsToSalesOrderForm(HelperForm):
class AllocateSerialsToSalesOrderForm(forms.Form):
"""
Form for assigning stock to a sales order,
by serial number lookup
@ -234,7 +234,6 @@ class AllocateSerialsToSalesOrderForm(HelperForm):
)
class Meta:
model = SalesOrderAllocation
fields = [
'line',

View File

@ -10,6 +10,7 @@ from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.utils.translation import ugettext as _
from django.views.generic import DetailView, ListView, UpdateView
from django.views.generic.edit import FormMixin
from django.forms import HiddenInput
import logging
@ -1291,7 +1292,7 @@ class SOLineItemDelete(AjaxDeleteView):
}
class SalesOrderAssignSerials(AjaxCreateView):
class SalesOrderAssignSerials(AjaxView, FormMixin):
"""
View for assigning stock items to a sales order,
by serial number lookup.
@ -1327,6 +1328,40 @@ class SalesOrderAssignSerials(AjaxCreateView):
return initials
def post(self, request, *args, **kwargs):
self.form = self.get_form()
# Validate the form
self.form.is_valid()
self.validate()
valid = self.form.is_valid()
data = {
'form_valid': valid,
'form_errors': self.form.errors.as_json(),
'non_field_errors': self.form.non_field_errors().as_json(),
}
return self.renderJsonResponse(request, self.get_form(), data)
def validate(self):
data = self.form.cleaned_data
# Extract hidden fields from posted data
self.line = data.get('line', None)
self.part = data.get('part', None)
if not self.line:
self.form.add_error('line', _('Select line item'))
if not self.part:
self.form.add_error('part', _('Select part'))
self.form.add_error(None, 'abcde')
def get_form(self):
form = super().get_form()
@ -1334,13 +1369,6 @@ class SalesOrderAssignSerials(AjaxCreateView):
if self.line is not None:
form.fields['line'].widget = HiddenInput()
# Hide the 'part' field if value provided
try:
print(form['part'])
# self.part = Part.objects.get(form['part'].value())
except (ValueError, Part.DoesNotExist):
self.part = None
if self.part is not None:
form.fields['part'].widget = HiddenInput()