Extract serial numbers from submitted form data

This commit is contained in:
Oliver 2022-02-15 13:19:41 +11:00
parent 037232c177
commit 24c13b04b6
2 changed files with 20 additions and 4 deletions

View File

@ -245,9 +245,10 @@ class BuildOutputCreateSerializer(serializers.Serializer):
Perform form validation
"""
build = self.get_build()
part = self.get_part()
serials = None
# Cache a list of serial numbers (to be used in the "save" method)
self.serials = None
quantity = data['quantity']
serial_numbers = data.get('serial_numbers', '')
@ -255,7 +256,7 @@ class BuildOutputCreateSerializer(serializers.Serializer):
if serial_numbers:
try:
serials = extract_serial_numbers(serial_numbers, quantity, part.getLatestSerialNumberInt())
self.serials = extract_serial_numbers(serial_numbers, quantity, part.getLatestSerialNumberInt())
except DjangoValidationError as e:
raise ValidationError({
'serial_numbers': e.messages,
@ -264,7 +265,7 @@ class BuildOutputCreateSerializer(serializers.Serializer):
# Check for conflicting serial numbesr
existing = []
for serial in serials:
for serial in self.serials:
if part.checkIfSerialNumberExists(serial):
existing.append(serial)

View File

@ -205,6 +205,18 @@ function createBuildOutput(build_id, options) {
auto_allocate: {},
};
// Work out the next available serial numbers
inventreeGet(`/api/part/${build.part}/serial-numbers/`, {}, {
success: function(data) {
if (data.next) {
fields.serial_numbers.placeholder = `{% trans "Next available serial number" %}: ${data.next}`;
} else {
fields.serial_numbers.placeholder = `{% trans "Latest serial number" %}: ${data.latest}`;
}
},
async: false,
});
if (options.trackable_parts) {
html += `
<div class='alert alert-block alert-info'>
@ -229,6 +241,9 @@ function createBuildOutput(build_id, options) {
confirm: true,
fields: fields,
preFormContent: html,
onSuccess: function(response) {
location.reload();
},
});
}