form overrides

This commit is contained in:
Matthias 2021-05-18 10:17:19 +02:00
parent 92f8bd36f1
commit cb0ef30eff
2 changed files with 29 additions and 3 deletions

View File

@ -191,10 +191,27 @@ class FileManagementFormView(MultiStepFormView):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
""" initialize the FormView """ """ initialize the FormView """
# perform all checks and inits from MultiStepFormView # check if form_list should be overriden
if hasattr(self, 'form_list_override'):
# check for list
if not isinstance(self.form_list_override, list):
raise ValueError('form_list_override must be a list')
# loop through and override /add form_list enrties
for entry in self.form_list_override:
# fetch postition
pos = [self.form_list.index(i) for i in self.form_list if i[0] == 'items']
# replace if exists
if pos:
self.form_list[pos[0]] = entry
# or append
else:
self.form_list.append(entry)
# perform all checks and inits for MultiStepFormView
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
# Check # Check for file manager class
if not(hasattr(self, 'file_manager_class') and issubclass(self.file_manager_class, FileManager)): if not(hasattr(self, 'file_manager_class') and issubclass(self.file_manager_class, FileManager)):
raise NotImplementedError('A subclass of a file manager class needs to be set!') raise NotImplementedError('A subclass of a file manager class needs to be set!')

View File

@ -32,6 +32,7 @@ from part.models import Part
from common.models import InvenTreeSetting from common.models import InvenTreeSetting
from common.views import FileManagementFormView from common.views import FileManagementFormView
from common.files import FileManager from common.files import FileManager
from common import forms as cm_forms
from . import forms as order_forms from . import forms as order_forms
from part.views import PartPricing from part.views import PartPricing
@ -573,7 +574,16 @@ class SalesOrderShip(AjaxUpdateView):
class PurchaseOrderUpload(FileManagementFormView): class PurchaseOrderUpload(FileManagementFormView):
''' PurchaseOrder: Upload file, match to fields and parts (using multi-Step form) ''' ''' PurchaseOrder: Upload file, match to fields and parts (using multi-Step form) '''
class MyMatch(cm_forms.MatchItem):
""" override MatchItem fields """
def get_special_field(self, col_guess, row, file_manager):
""" set special field """
# run default
super().get_special_field(col_guess, row, file_manager)
name = 'order' name = 'order'
form_list_override = [
('items', MyMatch),
]
form_steps_template = [ form_steps_template = [
'order/order_wizard/po_upload.html', 'order/order_wizard/po_upload.html',
'order/order_wizard/match_fields.html', 'order/order_wizard/match_fields.html',
@ -584,7 +594,6 @@ class PurchaseOrderUpload(FileManagementFormView):
_("Match Fields"), _("Match Fields"),
_("Match Supplier Parts"), _("Match Supplier Parts"),
] ]
# Form field name: PurchaseOrderLineItem field
form_field_map = { form_field_map = {
'item_select': 'part', 'item_select': 'part',
'quantity': 'quantity', 'quantity': 'quantity',