mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #9260: Apply user preferences to tables under object detail views
This commit is contained in:
@ -7,6 +7,7 @@
|
|||||||
* [#8894](https://github.com/netbox-community/netbox/issues/8894) - Include full names when listing users
|
* [#8894](https://github.com/netbox-community/netbox/issues/8894) - Include full names when listing users
|
||||||
* [#8998](https://github.com/netbox-community/netbox/issues/8998) - Enable filtering racks & reservations by site group
|
* [#8998](https://github.com/netbox-community/netbox/issues/8998) - Enable filtering racks & reservations by site group
|
||||||
* [#9122](https://github.com/netbox-community/netbox/issues/9122) - Introduce `clearcache` management command & clear cache during upgrade
|
* [#9122](https://github.com/netbox-community/netbox/issues/9122) - Introduce `clearcache` management command & clear cache during upgrade
|
||||||
|
* [#9260](https://github.com/netbox-community/netbox/issues/9260) - Apply user preferences to tables under object detail views
|
||||||
* [#9278](https://github.com/netbox-community/netbox/issues/9278) - Linkify device types count under manufacturers list
|
* [#9278](https://github.com/netbox-community/netbox/issues/9278) - Linkify device types count under manufacturers list
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
@ -32,7 +32,7 @@ class ProviderView(generic.ObjectView):
|
|||||||
).prefetch_related(
|
).prefetch_related(
|
||||||
'type', 'tenant', 'terminations__site'
|
'type', 'tenant', 'terminations__site'
|
||||||
)
|
)
|
||||||
circuits_table = tables.CircuitTable(circuits, exclude=('provider',))
|
circuits_table = tables.CircuitTable(circuits, user=request.user, exclude=('provider',))
|
||||||
circuits_table.configure(request)
|
circuits_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -93,7 +93,7 @@ class ProviderNetworkView(generic.ObjectView):
|
|||||||
).prefetch_related(
|
).prefetch_related(
|
||||||
'type', 'tenant', 'terminations__site'
|
'type', 'tenant', 'terminations__site'
|
||||||
)
|
)
|
||||||
circuits_table = tables.CircuitTable(circuits)
|
circuits_table = tables.CircuitTable(circuits, user=request.user)
|
||||||
circuits_table.configure(request)
|
circuits_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -147,7 +147,7 @@ class CircuitTypeView(generic.ObjectView):
|
|||||||
|
|
||||||
def get_extra_context(self, request, instance):
|
def get_extra_context(self, request, instance):
|
||||||
circuits = Circuit.objects.restrict(request.user, 'view').filter(type=instance)
|
circuits = Circuit.objects.restrict(request.user, 'view').filter(type=instance)
|
||||||
circuits_table = tables.CircuitTable(circuits, exclude=('type',))
|
circuits_table = tables.CircuitTable(circuits, user=request.user, exclude=('type',))
|
||||||
circuits_table.configure(request)
|
circuits_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -166,7 +166,7 @@ class RegionView(generic.ObjectView):
|
|||||||
sites = Site.objects.restrict(request.user, 'view').filter(
|
sites = Site.objects.restrict(request.user, 'view').filter(
|
||||||
region=instance
|
region=instance
|
||||||
)
|
)
|
||||||
sites_table = tables.SiteTable(sites, exclude=('region',))
|
sites_table = tables.SiteTable(sites, user=request.user, exclude=('region',))
|
||||||
sites_table.configure(request)
|
sites_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -251,7 +251,7 @@ class SiteGroupView(generic.ObjectView):
|
|||||||
sites = Site.objects.restrict(request.user, 'view').filter(
|
sites = Site.objects.restrict(request.user, 'view').filter(
|
||||||
group=instance
|
group=instance
|
||||||
)
|
)
|
||||||
sites_table = tables.SiteTable(sites, exclude=('group',))
|
sites_table = tables.SiteTable(sites, user=request.user, exclude=('group',))
|
||||||
sites_table.configure(request)
|
sites_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -435,7 +435,7 @@ class LocationView(generic.ObjectView):
|
|||||||
'rack_count',
|
'rack_count',
|
||||||
cumulative=True
|
cumulative=True
|
||||||
).filter(pk__in=location_ids).exclude(pk=instance.pk)
|
).filter(pk__in=location_ids).exclude(pk=instance.pk)
|
||||||
child_locations_table = tables.LocationTable(child_locations)
|
child_locations_table = tables.LocationTable(child_locations, user=request.user)
|
||||||
child_locations_table.configure(request)
|
child_locations_table.configure(request)
|
||||||
|
|
||||||
nonracked_devices = Device.objects.filter(
|
nonracked_devices = Device.objects.filter(
|
||||||
@ -514,7 +514,9 @@ class RackRoleView(generic.ObjectView):
|
|||||||
role=instance
|
role=instance
|
||||||
)
|
)
|
||||||
|
|
||||||
racks_table = tables.RackTable(racks, exclude=('role', 'get_utilization', 'get_power_utilization'))
|
racks_table = tables.RackTable(racks, user=request.user, exclude=(
|
||||||
|
'role', 'get_utilization', 'get_power_utilization',
|
||||||
|
))
|
||||||
racks_table.configure(request)
|
racks_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -767,7 +769,7 @@ class ManufacturerView(generic.ObjectView):
|
|||||||
manufacturer=instance
|
manufacturer=instance
|
||||||
)
|
)
|
||||||
|
|
||||||
devicetypes_table = tables.DeviceTypeTable(device_types, exclude=('manufacturer',))
|
devicetypes_table = tables.DeviceTypeTable(device_types, user=request.user, exclude=('manufacturer',))
|
||||||
devicetypes_table.configure(request)
|
devicetypes_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -1480,7 +1482,7 @@ class DeviceRoleView(generic.ObjectView):
|
|||||||
devices = Device.objects.restrict(request.user, 'view').filter(
|
devices = Device.objects.restrict(request.user, 'view').filter(
|
||||||
device_role=instance
|
device_role=instance
|
||||||
)
|
)
|
||||||
devices_table = tables.DeviceTable(devices, exclude=('device_role',))
|
devices_table = tables.DeviceTable(devices, user=request.user, exclude=('device_role',))
|
||||||
devices_table.configure(request)
|
devices_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -1544,7 +1546,7 @@ class PlatformView(generic.ObjectView):
|
|||||||
devices = Device.objects.restrict(request.user, 'view').filter(
|
devices = Device.objects.restrict(request.user, 'view').filter(
|
||||||
platform=instance
|
platform=instance
|
||||||
)
|
)
|
||||||
devices_table = tables.DeviceTable(devices, exclude=('platform',))
|
devices_table = tables.DeviceTable(devices, user=request.user, exclude=('platform',))
|
||||||
devices_table.configure(request)
|
devices_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -161,7 +161,7 @@ class RIRView(generic.ObjectView):
|
|||||||
aggregates = Aggregate.objects.restrict(request.user, 'view').filter(rir=instance).annotate(
|
aggregates = Aggregate.objects.restrict(request.user, 'view').filter(rir=instance).annotate(
|
||||||
child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
|
child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
|
||||||
)
|
)
|
||||||
aggregates_table = tables.AggregateTable(aggregates, exclude=('rir', 'utilization'))
|
aggregates_table = tables.AggregateTable(aggregates, user=request.user, exclude=('rir', 'utilization'))
|
||||||
aggregates_table.configure(request)
|
aggregates_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -221,12 +221,12 @@ class ASNView(generic.ObjectView):
|
|||||||
def get_extra_context(self, request, instance):
|
def get_extra_context(self, request, instance):
|
||||||
# Gather assigned Sites
|
# Gather assigned Sites
|
||||||
sites = instance.sites.restrict(request.user, 'view')
|
sites = instance.sites.restrict(request.user, 'view')
|
||||||
sites_table = SiteTable(sites)
|
sites_table = SiteTable(sites, user=request.user)
|
||||||
sites_table.configure(request)
|
sites_table.configure(request)
|
||||||
|
|
||||||
# Gather assigned Providers
|
# Gather assigned Providers
|
||||||
providers = instance.providers.restrict(request.user, 'view')
|
providers = instance.providers.restrict(request.user, 'view')
|
||||||
providers_table = ProviderTable(providers)
|
providers_table = ProviderTable(providers, user=request.user)
|
||||||
providers_table.configure(request)
|
providers_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -366,7 +366,7 @@ class RoleView(generic.ObjectView):
|
|||||||
role=instance
|
role=instance
|
||||||
)
|
)
|
||||||
|
|
||||||
prefixes_table = tables.PrefixTable(prefixes, exclude=('role', 'utilization'))
|
prefixes_table = tables.PrefixTable(prefixes, user=request.user, exclude=('role', 'utilization'))
|
||||||
prefixes_table.configure(request)
|
prefixes_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -805,7 +805,7 @@ class VLANGroupView(generic.ObjectView):
|
|||||||
vlans_count = vlans.count()
|
vlans_count = vlans.count()
|
||||||
vlans = add_available_vlans(vlans, vlan_group=instance)
|
vlans = add_available_vlans(vlans, vlan_group=instance)
|
||||||
|
|
||||||
vlans_table = tables.VLANTable(vlans, exclude=('group',))
|
vlans_table = tables.VLANTable(vlans, user=request.user, exclude=('group',))
|
||||||
if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'):
|
if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'):
|
||||||
vlans_table.columns.show('pk')
|
vlans_table.columns.show('pk')
|
||||||
vlans_table.configure(request)
|
vlans_table.configure(request)
|
||||||
|
@ -35,7 +35,7 @@ class TenantGroupView(generic.ObjectView):
|
|||||||
tenants = Tenant.objects.restrict(request.user, 'view').filter(
|
tenants = Tenant.objects.restrict(request.user, 'view').filter(
|
||||||
group=instance
|
group=instance
|
||||||
)
|
)
|
||||||
tenants_table = tables.TenantTable(tenants, exclude=('group',))
|
tenants_table = tables.TenantTable(tenants, user=request.user, exclude=('group',))
|
||||||
tenants_table.configure(request)
|
tenants_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -184,7 +184,7 @@ class ContactGroupView(generic.ObjectView):
|
|||||||
contacts = Contact.objects.restrict(request.user, 'view').filter(
|
contacts = Contact.objects.restrict(request.user, 'view').filter(
|
||||||
group=instance
|
group=instance
|
||||||
)
|
)
|
||||||
contacts_table = tables.ContactTable(contacts, exclude=('group',))
|
contacts_table = tables.ContactTable(contacts, user=request.user, exclude=('group',))
|
||||||
contacts_table.configure(request)
|
contacts_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -250,7 +250,7 @@ class ContactRoleView(generic.ObjectView):
|
|||||||
contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter(
|
contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter(
|
||||||
role=instance
|
role=instance
|
||||||
)
|
)
|
||||||
contacts_table = tables.ContactAssignmentTable(contact_assignments)
|
contacts_table = tables.ContactAssignmentTable(contact_assignments, user=request.user)
|
||||||
contacts_table.columns.hide('role')
|
contacts_table.columns.hide('role')
|
||||||
contacts_table.configure(request)
|
contacts_table.configure(request)
|
||||||
|
|
||||||
@ -307,7 +307,7 @@ class ContactView(generic.ObjectView):
|
|||||||
contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter(
|
contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter(
|
||||||
contact=instance
|
contact=instance
|
||||||
)
|
)
|
||||||
assignments_table = tables.ContactAssignmentTable(contact_assignments)
|
assignments_table = tables.ContactAssignmentTable(contact_assignments, user=request.user)
|
||||||
assignments_table.columns.hide('contact')
|
assignments_table.columns.hide('contact')
|
||||||
assignments_table.configure(request)
|
assignments_table.configure(request)
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class ClusterTypeView(generic.ObjectView):
|
|||||||
device_count=count_related(Device, 'cluster'),
|
device_count=count_related(Device, 'cluster'),
|
||||||
vm_count=count_related(VirtualMachine, 'cluster')
|
vm_count=count_related(VirtualMachine, 'cluster')
|
||||||
)
|
)
|
||||||
clusters_table = tables.ClusterTable(clusters, exclude=('type',))
|
clusters_table = tables.ClusterTable(clusters, user=request.user, exclude=('type',))
|
||||||
clusters_table.configure(request)
|
clusters_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -101,7 +101,7 @@ class ClusterGroupView(generic.ObjectView):
|
|||||||
device_count=count_related(Device, 'cluster'),
|
device_count=count_related(Device, 'cluster'),
|
||||||
vm_count=count_related(VirtualMachine, 'cluster')
|
vm_count=count_related(VirtualMachine, 'cluster')
|
||||||
)
|
)
|
||||||
clusters_table = tables.ClusterTable(clusters, exclude=('group',))
|
clusters_table = tables.ClusterTable(clusters, user=request.user, exclude=('group',))
|
||||||
clusters_table.configure(request)
|
clusters_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -29,7 +29,7 @@ class WirelessLANGroupView(generic.ObjectView):
|
|||||||
wirelesslans = WirelessLAN.objects.restrict(request.user, 'view').filter(
|
wirelesslans = WirelessLAN.objects.restrict(request.user, 'view').filter(
|
||||||
group=instance
|
group=instance
|
||||||
)
|
)
|
||||||
wirelesslans_table = tables.WirelessLANTable(wirelesslans, exclude=('group',))
|
wirelesslans_table = tables.WirelessLANTable(wirelesslans, user=request.user, exclude=('group',))
|
||||||
wirelesslans_table.configure(request)
|
wirelesslans_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -97,7 +97,7 @@ class WirelessLANView(generic.ObjectView):
|
|||||||
attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
|
attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
|
||||||
wireless_lans=instance
|
wireless_lans=instance
|
||||||
)
|
)
|
||||||
interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces)
|
interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces, user=request.user)
|
||||||
interfaces_table.configure(request)
|
interfaces_table.configure(request)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Reference in New Issue
Block a user