diff --git a/docs/models/circuits/circuitgroupassignment.md b/docs/models/circuits/circuitgroupassignment.md index 70915a774..f176a1241 100644 --- a/docs/models/circuits/circuitgroupassignment.md +++ b/docs/models/circuits/circuitgroupassignment.md @@ -16,4 +16,4 @@ The [Circuit](./circuit.md) that is being assigned to the group. ### Priority -A value between 0 and 255 indicating the circuit's priority for being elected as the master/primary node in the group. +A selection (Primary, Secondary, Tertiary) indicating the circuit's priority for being elected as the master/primary node in the group. diff --git a/netbox/circuits/api/nested_serializers.py b/netbox/circuits/api/nested_serializers.py index aafd8314c..4201b3761 100644 --- a/netbox/circuits/api/nested_serializers.py +++ b/netbox/circuits/api/nested_serializers.py @@ -7,7 +7,6 @@ from netbox.api.serializers import WritableNestedSerializer __all__ = [ 'NestedCircuitSerializer', - 'NestedCircuitGroupSerializer', 'NestedCircuitTerminationSerializer', 'NestedCircuitTypeSerializer', 'NestedProviderNetworkSerializer', @@ -81,10 +80,3 @@ class NestedCircuitTerminationSerializer(WritableNestedSerializer): class Meta: model = CircuitTermination fields = ['id', 'url', 'display_url', 'display', 'circuit', 'term_side', 'cable', '_occupied'] - - -class NestedCircuitGroupSerializer(WritableNestedSerializer): - - class Meta: - model = CircuitGroup - fields = ['id', 'url', 'display_url', 'display', 'name'] diff --git a/netbox/circuits/api/serializers_/circuits.py b/netbox/circuits/api/serializers_/circuits.py index 7b444cd87..42e639954 100644 --- a/netbox/circuits/api/serializers_/circuits.py +++ b/netbox/circuits/api/serializers_/circuits.py @@ -81,7 +81,8 @@ class CircuitTerminationSerializer(NetBoxModelSerializer, CabledObjectSerializer class CircuitGroupSerializer(NetBoxModelSerializer): # Related object counts - circuit_group_assignment_count = RelatedObjectCountField('circuit_group_assignments') + circuit_group_assignment_count = RelatedObjectCountField('assignments') + tenant = TenantSerializer(nested=True, required=False, allow_null=True) class Meta: model = CircuitGroup @@ -95,7 +96,7 @@ class CircuitGroupSerializer(NetBoxModelSerializer): class CircuitGroupAssignmentSerializer(NetBoxModelSerializer): group = CircuitGroupSerializer(nested=True) circuit = CircuitSerializer(nested=True) - priority = ChoiceField(choices=CircuitPriorityChoices, allow_blank=True, required=False, default=lambda: '') + priority = ChoiceField(choices=CircuitPriorityChoices, allow_blank=True, required=False) class Meta: model = CircuitGroupAssignment diff --git a/netbox/circuits/forms/bulk_edit.py b/netbox/circuits/forms/bulk_edit.py index fef368e65..3bb50a8d0 100644 --- a/netbox/circuits/forms/bulk_edit.py +++ b/netbox/circuits/forms/bulk_edit.py @@ -229,12 +229,6 @@ class CircuitGroupBulkEditForm(NetBoxModelBulkEditForm): 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(), @@ -243,7 +237,7 @@ class CircuitGroupBulkEditForm(NetBoxModelBulkEditForm): model = CircuitGroup nullable_fields = ( - 'priority', 'description', 'tenant', + 'description', 'tenant', ) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 3d284e040..554f2af5a 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -178,6 +178,11 @@ class CircuitTerminationForm(NetBoxModelForm): class CircuitGroupForm(TenancyForm, NetBoxModelForm): slug = SlugField() + fieldsets = ( + FieldSet('name', 'slug', 'description', 'tags', name=_('Circuit Group')), + FieldSet('tenant_group', 'tenant', name=_('Tenancy')), + ) + class Meta: model = CircuitGroup fields = [ @@ -198,6 +203,5 @@ class CircuitGroupAssignmentForm(NetBoxModelForm): class Meta: model = CircuitGroupAssignment fields = [ - 'group', 'circuit', 'priority', - 'tags', + 'group', 'circuit', 'priority', 'tags', ] diff --git a/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py b/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py index 70feda951..7a6d1365f 100644 --- a/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py +++ b/netbox/circuits/migrations/0044_circuitgroup_circuitgroupassignment_and_more.py @@ -35,7 +35,7 @@ class Migration(migrations.Migration): blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, - related_name='circuitgroups', + related_name='circuit_groups', to='tenancy.tenant', ), ), @@ -43,7 +43,7 @@ class Migration(migrations.Migration): options={ 'verbose_name': 'Circuit group', 'verbose_name_plural': 'Circuit group', - 'ordering': ('name', 'pk'), + 'ordering': ('name',), }, ), migrations.CreateModel( @@ -61,7 +61,7 @@ class Migration(migrations.Migration): 'circuit', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, - related_name='circuit_group_assignments', + related_name='assignments', to='circuits.circuit', ), ), @@ -69,7 +69,7 @@ class Migration(migrations.Migration): 'group', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, - related_name='circuit_group_assignments', + related_name='assignments', to='circuits.circuitgroup', ), ), diff --git a/netbox/circuits/models/circuits.py b/netbox/circuits/models/circuits.py index 5da3c8405..e9143c362 100644 --- a/netbox/circuits/models/circuits.py +++ b/netbox/circuits/models/circuits.py @@ -155,17 +155,18 @@ class Circuit(ContactsMixin, ImageAttachmentsMixin, PrimaryModel): class CircuitGroup(OrganizationalModel): """ + An arbitrary collection of Circuits. """ tenant = models.ForeignKey( to='tenancy.Tenant', on_delete=models.PROTECT, - related_name='circuitgroups', + related_name='circuit_groups', blank=True, null=True ) class Meta: - ordering = ('name', 'pk') # Name may be non-unique + ordering = ('name',) verbose_name = _('Circuit group') verbose_name_plural = _('Circuit group') @@ -177,15 +178,18 @@ class CircuitGroup(OrganizationalModel): class CircuitGroupAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): + """ + Assignment of a Circuit to a CircuitGroup with an optional priority. + """ circuit = models.ForeignKey( Circuit, on_delete=models.CASCADE, - related_name='circuit_group_assignments' + related_name='assignments' ) group = models.ForeignKey( CircuitGroup, on_delete=models.CASCADE, - related_name='circuit_group_assignments' + related_name='assignments' ) priority = models.CharField( verbose_name=_('priority'), diff --git a/netbox/circuits/tables/circuits.py b/netbox/circuits/tables/circuits.py index 76fd1a0a1..d493217b9 100644 --- a/netbox/circuits/tables/circuits.py +++ b/netbox/circuits/tables/circuits.py @@ -140,10 +140,10 @@ class CircuitGroupTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = CircuitGroup fields = ( - 'pk', 'name', 'circuit_group_assignment_count', 'tags', + 'pk', 'name', 'description', 'circuit_group_assignment_count', 'tags', 'created', 'last_updated', 'actions', ) - default_columns = ('pk', 'name', 'circuit_group_assignment_count') + default_columns = ('pk', 'name', 'description', 'circuit_group_assignment_count') class CircuitGroupAssignmentTable(NetBoxTable): @@ -162,6 +162,6 @@ class CircuitGroupAssignmentTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = CircuitGroupAssignment fields = ( - 'pk', 'id', 'group', 'circuit', 'priority', 'created', 'last_updated', 'actions', + 'pk', 'id', 'group', 'circuit', 'priority', 'created', 'last_updated', 'actions', 'tags', ) default_columns = ('pk', 'group', 'circuit', 'priority') diff --git a/netbox/templates/circuits/circuitgroup.html b/netbox/templates/circuits/circuitgroup.html index 4148f3f46..01c719a6b 100644 --- a/netbox/templates/circuits/circuitgroup.html +++ b/netbox/templates/circuits/circuitgroup.html @@ -28,6 +28,10 @@ {% trans "Name" %} {{ object.name }} + + {% trans "Description" %} + {{ object.description|placeholder }} + {% trans "Tenant" %} diff --git a/netbox/templates/circuits/circuitgroupassignment.html b/netbox/templates/circuits/circuitgroupassignment.html index 54462e542..aadc6c86e 100644 --- a/netbox/templates/circuits/circuitgroupassignment.html +++ b/netbox/templates/circuits/circuitgroupassignment.html @@ -31,11 +31,8 @@ {% include 'inc/panels/tags.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_left_page object %} -
- {% include 'inc/panels/related_objects.html' %} - {% plugin_right_page object %} -
{% endblock %}