Просмотр исходного кода

Closes #8034: Enable specifying custom field validators during CSV import

jeremystretch 4 лет назад
Родитель
Сommit
43fadab3bb

+ 1 - 0
docs/release-notes/version-3.1.md

@@ -6,6 +6,7 @@
 
 * [#6782](https://github.com/netbox-community/netbox/issues/6782) - Enable the inclusion of custom links in tables
 * [#7600](https://github.com/netbox-community/netbox/issues/7600) - Include count of available IPs on prefix view
+* [#8034](https://github.com/netbox-community/netbox/issues/8034) - Enable specifying custom field validators during CSV import
 * [#8100](https://github.com/netbox-community/netbox/issues/8100) - Add "other" choice for FHRP group protocol
 * [#8175](https://github.com/netbox-community/netbox/issues/8175) - Display parent object when attaching an image
 

+ 7 - 2
netbox/extras/forms/bulk_import.py

@@ -3,9 +3,10 @@ from django.contrib.contenttypes.models import ContentType
 from django.contrib.postgres.forms import SimpleArrayField
 from django.utils.safestring import mark_safe
 
+from extras.choices import CustomFieldTypeChoices
 from extras.models import *
 from extras.utils import FeatureQuery
-from utilities.forms import CSVContentTypeField, CSVModelForm, CSVMultipleContentTypeField, SlugField
+from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelForm, CSVMultipleContentTypeField, SlugField
 
 __all__ = (
     'CustomFieldCSVForm',
@@ -22,6 +23,10 @@ class CustomFieldCSVForm(CSVModelForm):
         limit_choices_to=FeatureQuery('custom_fields'),
         help_text="One or more assigned object types"
     )
+    type = CSVChoiceField(
+        choices=CustomFieldTypeChoices,
+        help_text='Field data type (e.g. text, integer, etc.)'
+    )
     choices = SimpleArrayField(
         base_field=forms.CharField(),
         required=False,
@@ -32,7 +37,7 @@ class CustomFieldCSVForm(CSVModelForm):
         model = CustomField
         fields = (
             'name', 'label', 'type', 'content_types', 'required', 'description', 'weight', 'filter_logic', 'default',
-            'choices', 'weight',
+            'choices', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex',
         )
 
 

+ 4 - 4
netbox/extras/tests/test_views.py

@@ -39,10 +39,10 @@ class CustomFieldTestCase(ViewTestCases.PrimaryObjectViewTestCase):
         }
 
         cls.csv_data = (
-            'name,label,type,content_types,weight,filter_logic,choices',
-            'field4,Field 4,text,dcim.site,100,exact,',
-            'field5,Field 5,integer,dcim.site,100,exact,',
-            'field6,Field 6,select,dcim.site,100,exact,"A,B,C"',
+            'name,label,type,content_types,weight,filter_logic,choices,validation_minimum,validation_maximum,validation_regex',
+            'field4,Field 4,text,dcim.site,100,exact,,,,[a-z]{3}',
+            'field5,Field 5,integer,dcim.site,100,exact,,1,100,',
+            'field6,Field 6,select,dcim.site,100,exact,"A,B,C",,,',
         )
 
         cls.bulk_edit_data = {