diff --git a/netbox/circuits/api/serializers_/circuits.py b/netbox/circuits/api/serializers_/circuits.py index c6cdab211..2a465bbf7 100644 --- a/netbox/circuits/api/serializers_/circuits.py +++ b/netbox/circuits/api/serializers_/circuits.py @@ -84,10 +84,10 @@ class CircuitGroupSerializer(NetBoxModelSerializer): class Meta: model = CircuitGroup fields = [ - 'id', 'url', 'display_url', 'display', 'name', + 'id', 'url', 'display_url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', ] - brief_fields = ('id', 'url', 'display', 'name',) + brief_fields = ('id', 'url', 'display', 'name', 'slug',) class CircuitGroupAssignmentSerializer(NetBoxModelSerializer): diff --git a/netbox/circuits/forms/bulk_edit.py b/netbox/circuits/forms/bulk_edit.py index 8c05d4435..fef368e65 100644 --- a/netbox/circuits/forms/bulk_edit.py +++ b/netbox/circuits/forms/bulk_edit.py @@ -224,19 +224,26 @@ class CircuitTerminationBulkEditForm(NetBoxModelBulkEditForm): class CircuitGroupBulkEditForm(NetBoxModelBulkEditForm): + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + + priority = forms.ChoiceField( + label=_('Priority'), + choices=add_blank_choice(CircuitPriorityChoices), + required=False + ) tenant = DynamicModelChoiceField( label=_('Tenant'), queryset=Tenant.objects.all(), required=False ) - comments = CommentField() model = CircuitGroup - fieldsets = ( - FieldSet('tenant', name=_('Tenancy')), - ) nullable_fields = ( - 'tenant', 'comments', + 'priority', 'description', 'tenant', ) diff --git a/netbox/circuits/forms/bulk_import.py b/netbox/circuits/forms/bulk_import.py index 44655a4ac..1e7b6361a 100644 --- a/netbox/circuits/forms/bulk_import.py +++ b/netbox/circuits/forms/bulk_import.py @@ -165,7 +165,7 @@ class CircuitGroupImportForm(NetBoxModelImportForm): class Meta: model = CircuitGroup - fields = ('name', 'tenant', 'tags') + fields = ('name', 'slug', 'description', 'tenant', 'tags') class CircuitGroupAssignmentImportForm(NetBoxModelImportForm): diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 7317840e6..3d284e040 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -176,13 +176,12 @@ class CircuitTerminationForm(NetBoxModelForm): class CircuitGroupForm(TenancyForm, NetBoxModelForm): - comments = CommentField() + slug = SlugField() class Meta: model = CircuitGroup fields = [ - 'name', 'tenant_group', 'tenant', - 'comments', 'tags', + 'name', 'slug', 'description', 'tenant_group', 'tenant', 'tags', ] diff --git a/netbox/circuits/graphql/types.py b/netbox/circuits/graphql/types.py index b82663859..48207d2cf 100644 --- a/netbox/circuits/graphql/types.py +++ b/netbox/circuits/graphql/types.py @@ -100,7 +100,7 @@ class CircuitType(NetBoxObjectType, ContactsMixin): fields='__all__', filters=CircuitGroupFilter ) -class CircuitGroupType(CustomFieldsMixin, TagsMixin, ObjectType): +class CircuitGroupType(NetBoxObjectType): pass diff --git a/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py b/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py index 7b888c7c3..6f784ff19 100644 --- a/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py +++ b/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.7 on 2024-07-19 04:18 +# Generated by Django 5.0.7 on 2024-07-19 08:04 import django.db.models.deletion import taggit.managers @@ -25,10 +25,9 @@ class Migration(migrations.Migration): 'custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder), ), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), ('description', models.CharField(blank=True, max_length=200)), - ('comments', models.TextField(blank=True)), - ('name', models.CharField(max_length=100)), - ('slug', models.SlugField(max_length=100)), ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), ( 'tenant', diff --git a/netbox/circuits/models/circuits.py b/netbox/circuits/models/circuits.py index 49b613f69..efe7069a9 100644 --- a/netbox/circuits/models/circuits.py +++ b/netbox/circuits/models/circuits.py @@ -153,17 +153,9 @@ class Circuit(ContactsMixin, ImageAttachmentsMixin, PrimaryModel): raise ValidationError({'provider_account': "The assigned account must belong to the assigned provider."}) -class CircuitGroup(PrimaryModel): +class CircuitGroup(OrganizationalModel): """ """ - name = models.CharField( - verbose_name=_('name'), - max_length=100 - ) - slug = models.SlugField( - verbose_name=_('slug'), - max_length=100 - ) tenant = models.ForeignKey( to='tenancy.Tenant', on_delete=models.PROTECT, diff --git a/netbox/circuits/tests/test_api.py b/netbox/circuits/tests/test_api.py index 6875c4844..09f76b0bd 100644 --- a/netbox/circuits/tests/test_api.py +++ b/netbox/circuits/tests/test_api.py @@ -208,57 +208,32 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase): class CircuitGroupTest(APIViewTestCases.APIViewTestCase): model = CircuitGroup - brief_fields = ['name', 'description', 'display', 'id', 'url'] + brief_fields = ['id', 'url', 'display', 'name'] bulk_update_data = { - 'status': 'planned', + 'comments': 'New comments', } @classmethod def setUpTestData(cls): - - providers = ( - Provider(name='Provider 1', slug='provider-1'), - Provider(name='Provider 2', slug='provider-2'), + circuit_groups = ( + CircuitGroup(name="Circuit Group 1", slug='circuit-group-1'), + CircuitGroup(name="Circuit Group 2", slug='circuit-group-2'), + CircuitGroup(name="Circuit Group 3", slug='circuit-group-3'), ) - Provider.objects.bulk_create(providers) - - provider_accounts = ( - ProviderAccount(name='Provider Account 1', provider=providers[0], account='1234'), - ProviderAccount(name='Provider Account 2', provider=providers[1], account='2345'), - ) - ProviderAccount.objects.bulk_create(provider_accounts) - - circuit_types = ( - CircuitType(name='Circuit Type 1', slug='circuit-type-1'), - CircuitType(name='Circuit Type 2', slug='circuit-type-2'), - ) - CircuitType.objects.bulk_create(circuit_types) - - circuits = ( - Circuit(cid='Circuit 1', provider=providers[0], provider_account=provider_accounts[0], type=circuit_types[0]), - Circuit(cid='Circuit 2', provider=providers[0], provider_account=provider_accounts[0], type=circuit_types[0]), - Circuit(cid='Circuit 3', provider=providers[0], provider_account=provider_accounts[0], type=circuit_types[0]), - ) - Circuit.objects.bulk_create(circuits) + CircuitGroup.objects.bulk_create(circuit_groups) cls.create_data = [ { - 'cid': 'Circuit 4', - 'provider': providers[1].pk, - 'provider_account': provider_accounts[1].pk, - 'type': circuit_types[1].pk, + 'name': 'Circuit Group 4', + 'slug': 'circuit-group-4', }, { - 'cid': 'Circuit 5', - 'provider': providers[1].pk, - 'provider_account': provider_accounts[1].pk, - 'type': circuit_types[1].pk, + 'name': 'Circuit Group 5', + 'slug': 'circuit-group-5', }, { - 'cid': 'Circuit 6', - 'provider': providers[1].pk, - # Omit provider account to test uniqueness constraint - 'type': circuit_types[1].pk, + 'name': 'Circuit Group 6', + 'slug': 'circuit-group-6', }, ]