mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
Misc cleanup
This commit is contained in:
parent
b22fd2bc44
commit
05c19af2a3
@ -544,7 +544,7 @@ class VirtualChassisViewSet(ModelViewSet):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class PowerPanelViewSet(ModelViewSet):
|
class PowerPanelViewSet(ModelViewSet):
|
||||||
queryset = PowerPanel.objects.all()
|
queryset = PowerPanel.objects.select_related('site', 'rack_group')
|
||||||
serializer_class = serializers.PowerPanelSerializer
|
serializer_class = serializers.PowerPanelSerializer
|
||||||
filterset_class = filters.PowerPanelFilter
|
filterset_class = filters.PowerPanelFilter
|
||||||
|
|
||||||
@ -553,8 +553,8 @@ class PowerPanelViewSet(ModelViewSet):
|
|||||||
# Power feeds
|
# Power feeds
|
||||||
#
|
#
|
||||||
|
|
||||||
class PowerFeedViewSet(ModelViewSet):
|
class PowerFeedViewSet(CustomFieldModelViewSet):
|
||||||
queryset = PowerFeed.objects.all()
|
queryset = PowerFeed.objects.select_related('power_panel', 'rack').prefetch_related('tags')
|
||||||
serializer_class = serializers.PowerFeedSerializer
|
serializer_class = serializers.PowerFeedSerializer
|
||||||
filterset_class = filters.PowerFeedFilter
|
filterset_class = filters.PowerFeedFilter
|
||||||
|
|
||||||
|
@ -1135,10 +1135,11 @@ class PowerFeedFilter(CustomFieldFilterSet):
|
|||||||
queryset=Rack.objects.all(),
|
queryset=Rack.objects.all(),
|
||||||
label='Rack (ID)',
|
label='Rack (ID)',
|
||||||
)
|
)
|
||||||
|
tag = TagFilter()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerFeed
|
model = PowerFeed
|
||||||
fields = ['name', 'status', 'type', 'supply', 'phase']
|
fields = ['name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'power_factor']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -3456,6 +3456,7 @@ class PowerFeedForm(BootstrapMixin, CustomFieldForm):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
comments = CommentField()
|
||||||
tags = TagField(
|
tags = TagField(
|
||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
@ -3479,6 +3480,14 @@ class PowerFeedForm(BootstrapMixin, CustomFieldForm):
|
|||||||
'phase': StaticSelect2(),
|
'phase': StaticSelect2(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Initialize site field
|
||||||
|
if self.instance and self.instance.power_panel:
|
||||||
|
self.initial['site'] = self.instance.power_panel.site
|
||||||
|
|
||||||
|
|
||||||
class PowerFeedCSVForm(forms.ModelForm):
|
class PowerFeedCSVForm(forms.ModelForm):
|
||||||
site = forms.ModelChoiceField(
|
site = forms.ModelChoiceField(
|
||||||
@ -3573,11 +3582,11 @@ class PowerFeedBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEd
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
rackgroup = forms.ModelChoiceField(
|
rack = forms.ModelChoiceField(
|
||||||
queryset=RackGroup.objects.all(),
|
queryset=Rack.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
widget=APISelect(
|
widget=APISelect(
|
||||||
api_url="/api/dcim/rack-groups",
|
api_url="/api/dcim/racks",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
status = forms.ChoiceField(
|
status = forms.ChoiceField(
|
||||||
@ -3669,3 +3678,12 @@ class PowerFeedFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
|||||||
required=False,
|
required=False,
|
||||||
widget=StaticSelect2()
|
widget=StaticSelect2()
|
||||||
)
|
)
|
||||||
|
voltage = forms.IntegerField(
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
amperage = forms.IntegerField(
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
power_factor = forms.IntegerField(
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
@ -2853,6 +2853,14 @@ class PowerPanel(ChangeLoggedModel):
|
|||||||
self.name,
|
self.name,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
|
||||||
|
# RackGroup must belong to assigned Site
|
||||||
|
if self.rack_group and self.rack_group.site != self.site:
|
||||||
|
raise ValidationError("Rack group {} ({}) is in a different site than {}".format(
|
||||||
|
self.rack_group, self.rack_group.site, self.site
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
class PowerFeed(ChangeLoggedModel, CableTermination, CustomFieldModel):
|
class PowerFeed(ChangeLoggedModel, CableTermination, CustomFieldModel):
|
||||||
"""
|
"""
|
||||||
@ -2953,6 +2961,14 @@ class PowerFeed(ChangeLoggedModel, CableTermination, CustomFieldModel):
|
|||||||
self.comments,
|
self.comments,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
|
||||||
|
# Rack must belong to same Site as PowerPanel
|
||||||
|
if self.rack and self.rack.site != self.power_panel.site:
|
||||||
|
raise ValidationError("Rack {} ({}) and power panel {} ({}) are in different sites".format(
|
||||||
|
self.rack, self.rack.site, self.power_panel, self.power_panel.site
|
||||||
|
))
|
||||||
|
|
||||||
def get_type_class(self):
|
def get_type_class(self):
|
||||||
return STATUS_CLASSES[self.type]
|
return STATUS_CLASSES[self.type]
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<div class="col-sm-8 col-md-9">
|
<div class="col-sm-8 col-md-9">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="{% url 'dcim:powerfeed_list' %}">Power Feeds</a></li>
|
<li><a href="{% url 'dcim:powerfeed_list' %}">Power Feeds</a></li>
|
||||||
|
<li><a href="{{ powerfeed.power_panel.site.get_absolute_url }}">{{ powerfeed.power_panel.site }}</a></li>
|
||||||
<li><a href="{{ powerfeed.power_panel.get_absolute_url }}">{{ powerfeed.power_panel }}</a></li>
|
<li><a href="{{ powerfeed.power_panel.get_absolute_url }}">{{ powerfeed.power_panel }}</a></li>
|
||||||
{% if powerfeed.rack %}
|
{% if powerfeed.rack %}
|
||||||
<li><a href="{{ powerfeed.rack.get_absolute_url }}">{{ powerfeed.rack }}</a></li>
|
<li><a href="{{ powerfeed.rack.get_absolute_url }}">{{ powerfeed.rack }}</a></li>
|
||||||
@ -118,7 +119,7 @@
|
|||||||
<td>{{ powerfeed.get_phase_display }}</td>
|
<td>{{ powerfeed.get_phase_display }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Max Utilization</td>
|
<td>Power Factor</td>
|
||||||
<td>{{ powerfeed.power_factor }}%</td>
|
<td>{{ powerfeed.power_factor }}%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user