From f0ac7c3bd2fbdbde2bc14acf0f9026508ff289f9 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 30 Mar 2026 15:37:58 -0700 Subject: [PATCH] Align ManagedFileForm validation with API serializer rules Add the missing checks to ManagedFileForm.clean(): - upload_file + data_source is rejected (matches API) - data_source without data_file is rejected with a specific message - Update the 'nothing provided' error to mention data source + data file Co-Authored-By: Claude Sonnet 4.6 --- netbox/core/forms/model_forms.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/netbox/core/forms/model_forms.py b/netbox/core/forms/model_forms.py index bcfabe265..16cf95f3f 100644 --- a/netbox/core/forms/model_forms.py +++ b/netbox/core/forms/model_forms.py @@ -107,10 +107,18 @@ class ManagedFileForm(SyncedDataMixin, NetBoxModelForm): def clean(self): super().clean() - if self.cleaned_data.get('upload_file') and self.cleaned_data.get('data_file'): + upload_file = self.cleaned_data.get('upload_file') + data_source = self.cleaned_data.get('data_source') + data_file = self.cleaned_data.get('data_file') + + if upload_file and data_file: raise forms.ValidationError(_("Cannot upload a file and sync from an existing file")) - if not self.cleaned_data.get('upload_file') and not self.cleaned_data.get('data_file'): - raise forms.ValidationError(_("Must upload a file or select a data file to sync")) + if upload_file and data_source: + raise forms.ValidationError(_("Cannot upload a file and sync from a data source.")) + if data_source and not data_file: + raise forms.ValidationError(_("A data file must be specified when syncing from a data source.")) + if not upload_file and not data_file: + raise forms.ValidationError(_("Must upload a file or select a data source and data file to sync.")) return self.cleaned_data