mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #4760: Enable power port template assignment when bulk editing power outlet templates
This commit is contained in:
@ -18,6 +18,7 @@
|
|||||||
* [#4737](https://github.com/netbox-community/netbox/issues/4737) - Fix display of role labels in virtual machines table
|
* [#4737](https://github.com/netbox-community/netbox/issues/4737) - Fix display of role labels in virtual machines table
|
||||||
* [#4743](https://github.com/netbox-community/netbox/issues/4743) - Allow users to create "next available" IPs without needing permission to create prefixes
|
* [#4743](https://github.com/netbox-community/netbox/issues/4743) - Allow users to create "next available" IPs without needing permission to create prefixes
|
||||||
* [#4756](https://github.com/netbox-community/netbox/issues/4756) - Filter parent group by site when creating rack groups
|
* [#4756](https://github.com/netbox-community/netbox/issues/4756) - Filter parent group by site when creating rack groups
|
||||||
|
* [#4760](https://github.com/netbox-community/netbox/issues/4760) - Enable power port template assignment when bulk editing power outlet templates
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1226,11 +1226,21 @@ class PowerOutletTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
|
|||||||
queryset=PowerOutletTemplate.objects.all(),
|
queryset=PowerOutletTemplate.objects.all(),
|
||||||
widget=forms.MultipleHiddenInput()
|
widget=forms.MultipleHiddenInput()
|
||||||
)
|
)
|
||||||
|
device_type = forms.ModelChoiceField(
|
||||||
|
queryset=DeviceType.objects.all(),
|
||||||
|
required=False,
|
||||||
|
disabled=True,
|
||||||
|
widget=forms.HiddenInput()
|
||||||
|
)
|
||||||
type = forms.ChoiceField(
|
type = forms.ChoiceField(
|
||||||
choices=add_blank_choice(PowerOutletTypeChoices),
|
choices=add_blank_choice(PowerOutletTypeChoices),
|
||||||
required=False,
|
required=False,
|
||||||
widget=StaticSelect2()
|
widget=StaticSelect2()
|
||||||
)
|
)
|
||||||
|
power_port = forms.ModelChoiceField(
|
||||||
|
queryset=PowerPortTemplate.objects.all(),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
feed_leg = forms.ChoiceField(
|
feed_leg = forms.ChoiceField(
|
||||||
choices=add_blank_choice(PowerOutletFeedLegChoices),
|
choices=add_blank_choice(PowerOutletFeedLegChoices),
|
||||||
required=False,
|
required=False,
|
||||||
@ -1238,7 +1248,18 @@ class PowerOutletTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
nullable_fields = ('type', 'feed_leg')
|
nullable_fields = ('type', 'power_port', 'feed_leg')
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Limit power_port queryset to PowerPortTemplates which belong to the parent DeviceType
|
||||||
|
if 'device_type' in self.initial:
|
||||||
|
device_type = DeviceType.objects.filter(pk=self.initial['device_type']).first()
|
||||||
|
self.fields['power_port'].queryset = PowerPortTemplate.objects.filter(device_type=device_type)
|
||||||
|
else:
|
||||||
|
self.fields['power_port'].choices = ()
|
||||||
|
self.fields['power_port'].widget.attrs['disabled'] = True
|
||||||
|
|
||||||
|
|
||||||
class InterfaceTemplateForm(BootstrapMixin, forms.ModelForm):
|
class InterfaceTemplateForm(BootstrapMixin, forms.ModelForm):
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
<div class="panel-footer noprint">
|
<div class="panel-footer noprint">
|
||||||
{% if table.rows %}
|
{% if table.rows %}
|
||||||
{% if edit_url %}
|
{% if edit_url %}
|
||||||
<button type="submit" name="_edit" formaction="{% url edit_url %}?return_url={{ devicetype.get_absolute_url }}" class="btn btn-xs btn-warning">
|
<button type="submit" name="_edit" formaction="{% url edit_url %}?device_type={{ devicetype.pk }}&return_url={{ devicetype.get_absolute_url }}" class="btn btn-xs btn-warning">
|
||||||
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit Selected
|
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit Selected
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if delete_url %}
|
{% if delete_url %}
|
||||||
<button type="submit" name="_delete" formaction="{% url delete_url %}?return_url={{ devicetype.get_absolute_url }}" class="btn btn-xs btn-danger">
|
<button type="submit" name="_delete" formaction="{% url delete_url %}?device_type={{ devicetype.pk }}&return_url={{ devicetype.get_absolute_url }}" class="btn btn-xs btn-danger">
|
||||||
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete Selected
|
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete Selected
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -782,6 +782,8 @@ class BulkEditView(GetReturnURLMixin, View):
|
|||||||
# TODO: Find a better way to accomplish this
|
# TODO: Find a better way to accomplish this
|
||||||
if 'device' in request.GET:
|
if 'device' in request.GET:
|
||||||
initial_data['device'] = request.GET.get('device')
|
initial_data['device'] = request.GET.get('device')
|
||||||
|
elif 'device_type' in request.GET:
|
||||||
|
initial_data['device_type'] = request.GET.get('device_type')
|
||||||
|
|
||||||
form = self.form(model, initial=initial_data)
|
form = self.form(model, initial=initial_data)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user