2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-30 04:26:44 +00:00

Add hidden input to the InstallStockForm form

- keeps track of "part" object
- so we can filter the stock_items queryset if the form validation fails
- Is there a more djangonic way of doing this??
This commit is contained in:
Oliver Walters 2020-10-04 23:45:52 +11:00
parent 46f459b4c7
commit 42a75a8238
2 changed files with 24 additions and 6 deletions

View File

@ -19,6 +19,8 @@ from InvenTree.fields import RoundingDecimalFormField
from report.models import TestReport from report.models import TestReport
from part.models import Part
from .models import StockLocation, StockItem, StockItemTracking from .models import StockLocation, StockItem, StockItemTracking
from .models import StockItemAttachment from .models import StockItemAttachment
from .models import StockItemTestResult from .models import StockItemTestResult
@ -278,6 +280,11 @@ class InstallStockForm(HelperForm):
Form for manually installing a stock item into another stock item Form for manually installing a stock item into another stock item
""" """
part = forms.ModelChoiceField(
queryset=Part.objects.all(),
widget=forms.HiddenInput
)
stock_item = forms.ModelChoiceField( stock_item = forms.ModelChoiceField(
required=True, required=True,
queryset=StockItem.objects.filter(StockItem.IN_STOCK_FILTER), queryset=StockItem.objects.filter(StockItem.IN_STOCK_FILTER),
@ -302,6 +309,7 @@ class InstallStockForm(HelperForm):
class Meta: class Meta:
model = StockItem model = StockItem
fields = [ fields = [
'part',
'stock_item', 'stock_item',
'quantity_to_install', 'quantity_to_install',
'notes', 'notes',

View File

@ -699,6 +699,8 @@ class StockItemInstall(AjaxUpdateView):
form_class = StockForms.InstallStockForm form_class = StockForms.InstallStockForm
ajax_form_title = _('Install Stock Item') ajax_form_title = _('Install Stock Item')
part = None
def get_stock_items(self): def get_stock_items(self):
""" """
Return a list of stock items suitable for displaying to the user. Return a list of stock items suitable for displaying to the user.
@ -713,14 +715,19 @@ class StockItemInstall(AjaxUpdateView):
items = StockItem.objects.filter(StockItem.IN_STOCK_FILTER) items = StockItem.objects.filter(StockItem.IN_STOCK_FILTER)
# Filter by Part association # Filter by Part association
try:
part = self.request.GET.get('part', None)
if part is not None: # Look at GET params
part = Part.objects.get(pk=part) part_id = self.request.GET.get('part', None)
items = items.filter(part=part)
if part_id is None:
# Look at POST params
part_id = self.request.POST.get('part', None)
try:
self.part = Part.objects.get(pk=part_id)
items = items.filter(part=self.part)
except (ValueError, Part.DoesNotExist): except (ValueError, Part.DoesNotExist):
pass self.part = None
return items return items
@ -736,6 +743,9 @@ class StockItemInstall(AjaxUpdateView):
initials['stock_item'] = item.pk initials['stock_item'] = item.pk
initials['quantity_to_install'] = item.quantity initials['quantity_to_install'] = item.quantity
if self.part:
initials['part'] = self.part
return initials return initials
def get_form(self): def get_form(self):