Automagically disable 'serial_numbers' field for StockItemCreate form

- Yay, ajax magic!
This commit is contained in:
Oliver Walters 2020-10-20 22:37:55 +11:00
parent 2e4613e702
commit 652c2dbcbe
3 changed files with 18 additions and 6 deletions

View File

@ -108,7 +108,7 @@ class ConvertStockItemForm(HelperForm):
class CreateStockItemForm(HelperForm):
""" Form for creating a new StockItem """
serial_numbers = forms.CharField(label='Serial numbers', required=False, help_text=_('Enter unique serial numbers (or leave blank)'))
serial_numbers = forms.CharField(label=_('Serial numbers'), required=False, help_text=_('Enter unique serial numbers (or leave blank)'))
def __init__(self, *args, **kwargs):

View File

@ -1510,11 +1510,8 @@ class StockItemCreate(AjaxCreateView):
# form.fields['part'].widget = HiddenInput()
# Trackable parts get special consideration:
if part.trackable:
form.fields['delete_on_deplete'].widget = HiddenInput()
form.fields['delete_on_deplete'].initial = False
else:
form.fields['serial_numbers'].widget = HiddenInput()
form.fields['delete_on_deplete'].disabled = not part.trackable
form.fields['serial_numbers'].disabled = not part.trackable
# If the part is NOT purchaseable, hide the supplier_part field
if not part.purchaseable:
@ -1539,6 +1536,8 @@ class StockItemCreate(AjaxCreateView):
# We must not provide *any* options for SupplierPart
form.fields['supplier_part'].queryset = SupplierPart.objects.none()
form.fields['serial_numbers'].disabled = True
# Otherwise if the user has selected a SupplierPart, we know what Part they meant!
if form['supplier_part'].value() is not None:
pass

View File

@ -769,6 +769,7 @@ function createNewStockItem(options) {
field: 'part',
action: function(value) {
// Reload options for supplier part
reloadFieldOptions(
'supplier_part',
{
@ -782,6 +783,18 @@ function createNewStockItem(options) {
}
}
);
// Disable serial number field if the part is not trackable
inventreeGet(
`/api/part/${value}/`, {},
{
success: function(response) {
enableField('serial_numbers', response.trackable);
clearField('serial_numbers');
}
}
);
}
},
];