diff --git a/netbox/utilities/forms/forms.py b/netbox/utilities/forms/forms.py index af06f219a..a2c6f2809 100644 --- a/netbox/utilities/forms/forms.py +++ b/netbox/utilities/forms/forms.py @@ -217,13 +217,24 @@ class ImportForm(BootstrapMixin, forms.Form): }) def _clean_yaml(self, data): + records = [] try: - return yaml.load_all(data, Loader=yaml.SafeLoader) + for data in yaml.load_all(data, Loader=yaml.SafeLoader): + if type(data) == list: + records.extend(data) + elif type(data) == dict: + records.append(data) + else: + raise forms.ValidationError({ + self.data_field: "Invalid YAML data: data must be dictionaries or lists of dictionaries" + }) except yaml.error.YAMLError as err: raise forms.ValidationError({ self.data_field: f"Invalid YAML data: {err}" }) + return records + class FilterForm(BootstrapMixin, forms.Form): """