Closes #15357: Rename CustomField.object_type to related_object_type (#15366)

This commit is contained in:
Jeremy Stretch
2024-03-09 06:16:17 -05:00
committed by GitHub
parent 663bd32464
commit 78dd65219f
15 changed files with 97 additions and 44 deletions

View File

@@ -350,7 +350,7 @@ class CustomFieldTest(TestCase):
cf = CustomField.objects.create(
name='object_field',
type=CustomFieldTypeChoices.TYPE_OBJECT,
object_type=ObjectType.objects.get_for_model(VLAN),
related_object_type=ObjectType.objects.get_for_model(VLAN),
required=False
)
cf.object_types.set([self.object_type])
@@ -382,7 +382,7 @@ class CustomFieldTest(TestCase):
cf = CustomField.objects.create(
name='object_field',
type=CustomFieldTypeChoices.TYPE_MULTIOBJECT,
object_type=ObjectType.objects.get_for_model(VLAN),
related_object_type=ObjectType.objects.get_for_model(VLAN),
required=False
)
cf.object_types.set([self.object_type])
@@ -498,16 +498,28 @@ class CustomFieldTest(TestCase):
).full_clean()
# Object
CustomField(name='test', type='object', required=True, object_type=object_type, default=site.pk).full_clean()
with self.assertRaises(ValidationError):
CustomField(name='test', type='object', required=True, object_type=object_type, default="xxx").full_clean()
CustomField(
name='test',
type='object',
required=True,
related_object_type=object_type,
default=site.pk
).full_clean()
with (self.assertRaises(ValidationError)):
CustomField(
name='test',
type='object',
required=True,
related_object_type=object_type,
default="xxx"
).full_clean()
# Multi-object
CustomField(
name='test',
type='multiobject',
required=True,
object_type=object_type,
related_object_type=object_type,
default=[site.pk]
).full_clean()
with self.assertRaises(ValidationError):
@@ -515,7 +527,7 @@ class CustomFieldTest(TestCase):
name='test',
type='multiobject',
required=True,
object_type=object_type,
related_object_type=object_type,
default=["xxx"]
).full_clean()
@@ -581,13 +593,13 @@ class CustomFieldAPITest(APITestCase):
CustomField(
type=CustomFieldTypeChoices.TYPE_OBJECT,
name='object_field',
object_type=ObjectType.objects.get_for_model(VLAN),
related_object_type=ObjectType.objects.get_for_model(VLAN),
default=vlans[0].pk,
),
CustomField(
type=CustomFieldTypeChoices.TYPE_MULTIOBJECT,
name='multiobject_field',
object_type=ObjectType.objects.get_for_model(VLAN),
related_object_type=ObjectType.objects.get_for_model(VLAN),
default=[vlans[0].pk, vlans[1].pk],
),
)
@@ -1410,7 +1422,7 @@ class CustomFieldModelFilterTest(TestCase):
cf = CustomField(
name='cf11',
type=CustomFieldTypeChoices.TYPE_OBJECT,
object_type=ObjectType.objects.get_for_model(Manufacturer)
related_object_type=ObjectType.objects.get_for_model(Manufacturer)
)
cf.save()
cf.object_types.set([object_type])
@@ -1419,7 +1431,7 @@ class CustomFieldModelFilterTest(TestCase):
cf = CustomField(
name='cf12',
type=CustomFieldTypeChoices.TYPE_MULTIOBJECT,
object_type=ObjectType.objects.get_for_model(Manufacturer)
related_object_type=ObjectType.objects.get_for_model(Manufacturer)
)
cf.save()
cf.object_types.set([object_type])

View File

@@ -86,6 +86,16 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests):
ui_editable=CustomFieldUIEditableChoices.HIDDEN,
choice_set=choice_sets[1]
),
CustomField(
name='Custom Field 6',
type=CustomFieldTypeChoices.TYPE_OBJECT,
related_object_type=ObjectType.objects.get_by_natural_key('dcim', 'site'),
required=False,
weight=600,
filter_logic=CustomFieldFilterLogicChoices.FILTER_DISABLED,
ui_visible=CustomFieldUIVisibleChoices.HIDDEN,
ui_editable=CustomFieldUIEditableChoices.HIDDEN
),
)
CustomField.objects.bulk_create(custom_fields)
custom_fields[0].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'site'))
@@ -108,6 +118,12 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests):
params = {'object_type_id': [ObjectType.objects.get_by_natural_key('dcim', 'site').pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
def test_related_object_type(self):
params = {'related_object_type': 'dcim.site'}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
params = {'related_object_type_id': [ObjectType.objects.get_by_natural_key('dcim', 'site').pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
def test_required(self):
params = {'required': True}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)

View File

@@ -62,14 +62,14 @@ class CustomFieldModelFormTest(TestCase):
cf_object = CustomField.objects.create(
name='object',
type=CustomFieldTypeChoices.TYPE_OBJECT,
object_type=ObjectType.objects.get_for_model(Site)
related_object_type=ObjectType.objects.get_for_model(Site)
)
cf_object.object_types.set([object_type])
cf_multiobject = CustomField.objects.create(
name='multiobject',
type=CustomFieldTypeChoices.TYPE_MULTIOBJECT,
object_type=ObjectType.objects.get_for_model(Site)
related_object_type=ObjectType.objects.get_for_model(Site)
)
cf_multiobject.object_types.set([object_type])

View File

@@ -54,7 +54,7 @@ class CustomFieldTestCase(ViewTestCases.PrimaryObjectViewTestCase):
}
cls.csv_data = (
'name,label,type,object_types,object_type,weight,search_weight,filter_logic,choice_set,validation_minimum,validation_maximum,validation_regex,ui_visible,ui_editable',
'name,label,type,object_types,related_object_type,weight,search_weight,filter_logic,choice_set,validation_minimum,validation_maximum,validation_regex,ui_visible,ui_editable',
'field4,Field 4,text,dcim.site,,100,1000,exact,,,,[a-z]{3},always,yes',
'field5,Field 5,integer,dcim.site,,100,2000,exact,,1,100,,always,yes',
'field6,Field 6,select,dcim.site,,100,3000,exact,Choice Set 1,,,,always,yes',