7025 review comments

This commit is contained in:
Arthur Hanson 2024-07-23 16:10:53 +07:00
parent b18efe5f7f
commit 2f857dea7c
10 changed files with 31 additions and 35 deletions

View File

@ -16,4 +16,4 @@ The [Circuit](./circuit.md) that is being assigned to the group.
### Priority ### 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.

View File

@ -7,7 +7,6 @@ from netbox.api.serializers import WritableNestedSerializer
__all__ = [ __all__ = [
'NestedCircuitSerializer', 'NestedCircuitSerializer',
'NestedCircuitGroupSerializer',
'NestedCircuitTerminationSerializer', 'NestedCircuitTerminationSerializer',
'NestedCircuitTypeSerializer', 'NestedCircuitTypeSerializer',
'NestedProviderNetworkSerializer', 'NestedProviderNetworkSerializer',
@ -81,10 +80,3 @@ class NestedCircuitTerminationSerializer(WritableNestedSerializer):
class Meta: class Meta:
model = CircuitTermination model = CircuitTermination
fields = ['id', 'url', 'display_url', 'display', 'circuit', 'term_side', 'cable', '_occupied'] 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']

View File

@ -81,7 +81,8 @@ class CircuitTerminationSerializer(NetBoxModelSerializer, CabledObjectSerializer
class CircuitGroupSerializer(NetBoxModelSerializer): class CircuitGroupSerializer(NetBoxModelSerializer):
# Related object counts # 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: class Meta:
model = CircuitGroup model = CircuitGroup
@ -95,7 +96,7 @@ class CircuitGroupSerializer(NetBoxModelSerializer):
class CircuitGroupAssignmentSerializer(NetBoxModelSerializer): class CircuitGroupAssignmentSerializer(NetBoxModelSerializer):
group = CircuitGroupSerializer(nested=True) group = CircuitGroupSerializer(nested=True)
circuit = CircuitSerializer(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: class Meta:
model = CircuitGroupAssignment model = CircuitGroupAssignment

View File

@ -229,12 +229,6 @@ class CircuitGroupBulkEditForm(NetBoxModelBulkEditForm):
max_length=200, max_length=200,
required=False required=False
) )
priority = forms.ChoiceField(
label=_('Priority'),
choices=add_blank_choice(CircuitPriorityChoices),
required=False
)
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
label=_('Tenant'), label=_('Tenant'),
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
@ -243,7 +237,7 @@ class CircuitGroupBulkEditForm(NetBoxModelBulkEditForm):
model = CircuitGroup model = CircuitGroup
nullable_fields = ( nullable_fields = (
'priority', 'description', 'tenant', 'description', 'tenant',
) )

View File

@ -178,6 +178,11 @@ class CircuitTerminationForm(NetBoxModelForm):
class CircuitGroupForm(TenancyForm, NetBoxModelForm): class CircuitGroupForm(TenancyForm, NetBoxModelForm):
slug = SlugField() slug = SlugField()
fieldsets = (
FieldSet('name', 'slug', 'description', 'tags', name=_('Circuit Group')),
FieldSet('tenant_group', 'tenant', name=_('Tenancy')),
)
class Meta: class Meta:
model = CircuitGroup model = CircuitGroup
fields = [ fields = [
@ -198,6 +203,5 @@ class CircuitGroupAssignmentForm(NetBoxModelForm):
class Meta: class Meta:
model = CircuitGroupAssignment model = CircuitGroupAssignment
fields = [ fields = [
'group', 'circuit', 'priority', 'group', 'circuit', 'priority', 'tags',
'tags',
] ]

View File

@ -35,7 +35,7 @@ class Migration(migrations.Migration):
blank=True, blank=True,
null=True, null=True,
on_delete=django.db.models.deletion.PROTECT, on_delete=django.db.models.deletion.PROTECT,
related_name='circuitgroups', related_name='circuit_groups',
to='tenancy.tenant', to='tenancy.tenant',
), ),
), ),
@ -43,7 +43,7 @@ class Migration(migrations.Migration):
options={ options={
'verbose_name': 'Circuit group', 'verbose_name': 'Circuit group',
'verbose_name_plural': 'Circuit group', 'verbose_name_plural': 'Circuit group',
'ordering': ('name', 'pk'), 'ordering': ('name',),
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
@ -61,7 +61,7 @@ class Migration(migrations.Migration):
'circuit', 'circuit',
models.ForeignKey( models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
related_name='circuit_group_assignments', related_name='assignments',
to='circuits.circuit', to='circuits.circuit',
), ),
), ),
@ -69,7 +69,7 @@ class Migration(migrations.Migration):
'group', 'group',
models.ForeignKey( models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, on_delete=django.db.models.deletion.CASCADE,
related_name='circuit_group_assignments', related_name='assignments',
to='circuits.circuitgroup', to='circuits.circuitgroup',
), ),
), ),

View File

@ -155,17 +155,18 @@ class Circuit(ContactsMixin, ImageAttachmentsMixin, PrimaryModel):
class CircuitGroup(OrganizationalModel): class CircuitGroup(OrganizationalModel):
""" """
An arbitrary collection of Circuits.
""" """
tenant = models.ForeignKey( tenant = models.ForeignKey(
to='tenancy.Tenant', to='tenancy.Tenant',
on_delete=models.PROTECT, on_delete=models.PROTECT,
related_name='circuitgroups', related_name='circuit_groups',
blank=True, blank=True,
null=True null=True
) )
class Meta: class Meta:
ordering = ('name', 'pk') # Name may be non-unique ordering = ('name',)
verbose_name = _('Circuit group') verbose_name = _('Circuit group')
verbose_name_plural = _('Circuit group') verbose_name_plural = _('Circuit group')
@ -177,15 +178,18 @@ class CircuitGroup(OrganizationalModel):
class CircuitGroupAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): class CircuitGroupAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel):
"""
Assignment of a Circuit to a CircuitGroup with an optional priority.
"""
circuit = models.ForeignKey( circuit = models.ForeignKey(
Circuit, Circuit,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='circuit_group_assignments' related_name='assignments'
) )
group = models.ForeignKey( group = models.ForeignKey(
CircuitGroup, CircuitGroup,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='circuit_group_assignments' related_name='assignments'
) )
priority = models.CharField( priority = models.CharField(
verbose_name=_('priority'), verbose_name=_('priority'),

View File

@ -140,10 +140,10 @@ class CircuitGroupTable(NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = CircuitGroup model = CircuitGroup
fields = ( fields = (
'pk', 'name', 'circuit_group_assignment_count', 'tags', 'pk', 'name', 'description', 'circuit_group_assignment_count', 'tags',
'created', 'last_updated', 'actions', 'created', 'last_updated', 'actions',
) )
default_columns = ('pk', 'name', 'circuit_group_assignment_count') default_columns = ('pk', 'name', 'description', 'circuit_group_assignment_count')
class CircuitGroupAssignmentTable(NetBoxTable): class CircuitGroupAssignmentTable(NetBoxTable):
@ -162,6 +162,6 @@ class CircuitGroupAssignmentTable(NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = CircuitGroupAssignment model = CircuitGroupAssignment
fields = ( 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') default_columns = ('pk', 'group', 'circuit', 'priority')

View File

@ -28,6 +28,10 @@
<th scope="row">{% trans "Name" %}</th> <th scope="row">{% trans "Name" %}</th>
<td>{{ object.name }}</td> <td>{{ object.name }}</td>
</tr> </tr>
<tr>
<th scope="row">{% trans "Description" %}</th>
<td>{{ object.description|placeholder }}</td>
</tr>
<tr> <tr>
<th scope="row">{% trans "Tenant" %}</th> <th scope="row">{% trans "Tenant" %}</th>
<td> <td>

View File

@ -31,11 +31,8 @@
</table> </table>
</div> </div>
{% include 'inc/panels/tags.html' %} {% include 'inc/panels/tags.html' %}
{% include 'inc/panels/custom_fields.html' %}
{% plugin_left_page object %} {% plugin_left_page object %}
</div> </div>
<div class="col col-md-6">
{% include 'inc/panels/related_objects.html' %}
{% plugin_right_page object %}
</div>
</div> </div>
{% endblock %} {% endblock %}