11617 special case DeviceType and ModuleType

This commit is contained in:
Arthur 2023-04-25 11:43:59 -07:00 committed by Jeremy Stretch
parent b415c157cc
commit b8d7c8bc0d
2 changed files with 4 additions and 3 deletions

View File

@ -15,6 +15,7 @@ from django.urls import reverse
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django_tables2.export import TableExport from django_tables2.export import TableExport
from dcim.forms.bulk_import import DeviceTypeImportForm, ModuleTypeImportForm
from extras.models import ExportTemplate from extras.models import ExportTemplate
from extras.signals import clear_webhooks from extras.signals import clear_webhooks
from utilities.error_handlers import handle_protectederror from utilities.error_handlers import handle_protectederror
@ -406,7 +407,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
] ]
if not headers: if not headers:
headers = headers_to_dict(list(record.keys())) headers = headers_to_dict(list(record.keys()))
validate_import_headers(headers, form_fields, required_fields) validate_import_headers(headers, form_fields, required_fields, allow_extra_columns=isinstance(model_form, (DeviceTypeImportForm, ModuleTypeImportForm)))
# When updating, omit all form fields other than those specified in the record. (No # When updating, omit all form fields other than those specified in the record. (No
# fields are required when modifying an existing object.) # fields are required when modifying an existing object.)

View File

@ -251,7 +251,7 @@ def parse_csv(reader):
return headers, records return headers, records
def validate_import_headers(headers, fields, required_fields): def validate_import_headers(headers, fields, required_fields, allow_extra_columns=False):
""" """
Validate that parsed csv data conforms to the object's available fields. Raise validation errors Validate that parsed csv data conforms to the object's available fields. Raise validation errors
if parsed csv data contains invalid headers or does not contain required headers. if parsed csv data contains invalid headers or does not contain required headers.
@ -262,7 +262,7 @@ def validate_import_headers(headers, fields, required_fields):
if field == "id": if field == "id":
is_update = True is_update = True
continue continue
if field not in fields: if (not allow_extra_columns) and (field not in fields):
raise forms.ValidationError(f'Unexpected column header "{field}" found.') raise forms.ValidationError(f'Unexpected column header "{field}" found.')
if to_field and not hasattr(fields[field], 'to_field_name'): if to_field and not hasattr(fields[field], 'to_field_name'):
raise forms.ValidationError(f'Column "{field}" is not a related object; cannot use dots') raise forms.ValidationError(f'Column "{field}" is not a related object; cannot use dots')