Merge pull request #13402 from netbox-community/13388-optimizations

#13388: Misc suggested optimizations
This commit is contained in:
Abhimanyu Saharan 2023-08-07 23:43:24 +05:30 committed by GitHub
commit 4633cc58c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 47 deletions

View File

@ -216,6 +216,7 @@ class ASNRangeASNsView(generic.ObjectChildrenView):
child_model = ASN
table = tables.ASNTable
filterset = filtersets.ASNFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('ASNs'),
badge=lambda x: x.get_child_asns().count(),
@ -366,9 +367,7 @@ class AggregatePrefixesView(generic.ObjectChildrenView):
return add_requested_prefixes(parent.prefix, queryset, show_available, show_assigned)
def get_extra_context(self, request, instance):
context = super().get_extra_context(request, instance)
return {
**context,
'bulk_querystring': f'within={instance.prefix}',
'first_available_prefix': instance.get_first_available_prefix(),
'show_available': bool(request.GET.get('show_available', 'true') == 'true'),
@ -555,9 +554,7 @@ class PrefixPrefixesView(generic.ObjectChildrenView):
return add_requested_prefixes(parent.prefix, queryset, show_available, show_assigned)
def get_extra_context(self, request, instance):
context = super().get_extra_context(request, instance)
return {
**context,
'bulk_querystring': f"vrf_id={instance.vrf.pk if instance.vrf else '0'}&within={instance.prefix}",
'first_available_prefix': instance.get_first_available_prefix(),
'show_available': bool(request.GET.get('show_available', 'true') == 'true'),
@ -585,9 +582,7 @@ class PrefixIPRangesView(generic.ObjectChildrenView):
)
def get_extra_context(self, request, instance):
context = super().get_extra_context(request, instance)
return {
**context,
'bulk_querystring': f"vrf_id={instance.vrf.pk if instance.vrf else '0'}&parent={instance.prefix}",
'first_available_ip': instance.get_first_available_ip(),
}
@ -616,9 +611,7 @@ class PrefixIPAddressesView(generic.ObjectChildrenView):
return queryset
def get_extra_context(self, request, instance):
context = super().get_extra_context(request, instance)
return {
**context,
'bulk_querystring': f"vrf_id={instance.vrf.pk if instance.vrf else '0'}&parent={instance.prefix}",
'first_available_ip': instance.get_first_available_ip(),
}
@ -872,6 +865,7 @@ class IPAddressRelatedIPsView(generic.ObjectChildrenView):
child_model = IPAddress
table = tables.IPAddressTable
filterset = filtersets.IPAddressFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('Related IPs'),
badge=lambda x: x.get_related_ips().count(),
@ -1081,6 +1075,7 @@ class VLANInterfacesView(generic.ObjectChildrenView):
child_model = Interface
table = tables.VLANDevicesTable
filterset = InterfaceFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('Device Interfaces'),
badge=lambda x: x.get_interfaces().count(),
@ -1098,6 +1093,7 @@ class VLANVMInterfacesView(generic.ObjectChildrenView):
child_model = VMInterface
table = tables.VLANVirtualMachinesTable
filterset = VMInterfaceFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('VM Interfaces'),
badge=lambda x: x.get_vminterfaces().count(),

View File

@ -91,7 +91,6 @@ class ObjectChildrenView(ObjectView, ActionsMixin, TableMixin):
child_model = None
table = None
filterset = None
template_name = 'generic/object_tab.html'
def get_children(self, request, parent):
"""
@ -114,28 +113,6 @@ class ObjectChildrenView(ObjectView, ActionsMixin, TableMixin):
"""
return queryset
def get_extra_context(self, request, instance):
context = super().get_extra_context(request, instance)
return_url = '?return_url=' + request.get_full_path()
bulk_edit_url = reverse(f'{self.child_model._meta.app_label}:{self.child_model._meta.model_name}_bulk_edit') + return_url
bulk_delete_url = reverse(f'{self.child_model._meta.app_label}:{self.child_model._meta.model_name}_bulk_delete') + return_url
try:
bulk_rename_url = reverse(
f'{self.child_model._meta.app_label}:{self.child_model._meta.model_name}_bulk_rename') + return_url
except NoReverseMatch:
bulk_rename_url = None
context.update({
'base_template': f'{instance._meta.app_label}/{instance._meta.model_name}.html',
'table_config': f'{self.table.__name__}_config',
'bulk_edit_url': bulk_edit_url,
'bulk_delete_url': bulk_delete_url,
'bulk_rename_url': bulk_rename_url,
})
return context
#
# Request handlers
#
@ -167,9 +144,12 @@ class ObjectChildrenView(ObjectView, ActionsMixin, TableMixin):
return render(request, self.get_template_name(), {
'object': instance,
'child_model': self.child_model,
'base_template': f'{instance._meta.app_label}/{instance._meta.model_name}.html',
'table': table,
'table_config': f'{self.table.__name__}_config',
'actions': actions,
'tab': self.tab,
'return_url': request.get_full_path(),
**self.get_extra_context(request, instance),
})

View File

@ -16,28 +16,30 @@
<div class="bulk-button-group">
{% if 'bulk_edit' in actions %}
<div class="btn-group" role="group">
<button type="submit" name="_edit"
formaction="{{ bulk_edit_url }}"
class="btn btn-warning btn-sm">
{% with bulk_edit_view=child_model|validated_viewname:"bulk_edit" %}
{% if bulk_edit_view %}
<button type="submit" name="_edit" formaction="{% url bulk_edit_view %}?return_url={{ return_url }}" class="btn btn-warning btn-sm">
<i class="mdi mdi-pencil" aria-hidden="true"></i> Edit
</button>
{% if bulk_rename_url %}
<button type="submit" name="_rename"
formaction="{{ bulk_rename_url }}"
class="btn btn-outline-warning btn-sm">
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
</button>
</button>
{% endif %}
{% endwith %}
{% with bulk_rename_view=child_model|validated_viewname:"bulk_rename" %}
{% if bulk_rename_view %}
<button type="submit" name="_rename" formaction="{% url bulk_rename_view %}?return_url={{ return_url }}" class="btn btn-outline-warning btn-sm">
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
</button>
{% endif %}
{% endwith %}
</div>
{% endif %}
<div class="btn-group" role="group">
{% if 'bulk_delete' in actions %}
<button type="submit"
formaction="{{ bulk_delete_url }}"
class="btn btn-danger btn-sm">
<i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete
{% with bulk_delete_view=child_model|validated_viewname:"bulk_delete" %}
{% if 'bulk_delete' in actions and bulk_delete_view %}
<button type="submit" formaction="{% url bulk_delete_view %}?return_url={{ return_url }}" class="btn btn-danger btn-sm">
<i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete
</button>
{% endif %}
{% endif %}
{% endwith %}
{% block bulk_delete_control %}
{% endblock %}
</div>

View File

@ -175,6 +175,7 @@ class ClusterVirtualMachinesView(generic.ObjectChildrenView):
child_model = VirtualMachine
table = tables.VirtualMachineTable
filterset = filtersets.VirtualMachineFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('Virtual Machines'),
badge=lambda obj: obj.virtual_machines.count(),
@ -192,6 +193,7 @@ class ClusterDevicesView(generic.ObjectChildrenView):
child_model = Device
table = DeviceTable
filterset = DeviceFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('Devices'),
badge=lambda obj: obj.devices.count(),
@ -344,6 +346,7 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView):
child_model = VMInterface
table = tables.VirtualMachineVMInterfaceTable
filterset = filtersets.VMInterfaceFilterSet
template_name = 'generic/object_tab.html'
tab = ViewTab(
label=_('Interfaces'),
badge=lambda obj: obj.interfaces.count(),