1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Collapsed EditTables into primary table for each object

This commit is contained in:
Jeremy Stretch
2016-05-13 11:51:50 -04:00
parent ffb1e7beb5
commit 062e64a34d
9 changed files with 82 additions and 230 deletions

View File

@@ -45,32 +45,26 @@ STATUS_LABEL = """
#
class VRFTable(tables.Table):
pk = tables.CheckBoxColumn(visible=False, default='')
name = tables.LinkColumn('ipam:vrf', args=[Accessor('pk')], verbose_name='Name')
rd = tables.Column(verbose_name='RD')
description = tables.Column(sortable=False, verbose_name='Description')
class Meta:
model = VRF
fields = ('name', 'rd', 'description')
fields = ('pk', 'name', 'rd', 'description')
empty_text = "No VRFs found."
attrs = {
'class': 'table table-hover',
}
class VRFBulkEditTable(VRFTable):
pk = tables.CheckBoxColumn()
class Meta(VRFTable.Meta):
model = None # django_tables2 bugfix
fields = ('pk', 'name', 'rd', 'description')
#
# Aggregates
#
class AggregateTable(tables.Table):
pk = tables.CheckBoxColumn(visible=False, default='')
prefix = tables.LinkColumn('ipam:aggregate', args=[Accessor('pk')], verbose_name='Aggregate')
rir = tables.Column(verbose_name='RIR')
child_count = tables.Column(verbose_name='Prefixes')
@@ -80,26 +74,19 @@ class AggregateTable(tables.Table):
class Meta:
model = Aggregate
fields = ('prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
empty_text = "No aggregates found."
attrs = {
'class': 'table table-hover',
}
class AggregateBulkEditTable(AggregateTable):
pk = tables.CheckBoxColumn()
class Meta(AggregateTable.Meta):
model = None # django_tables2 bugfix
fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
#
# Prefixes
#
class PrefixTable(tables.Table):
pk = tables.CheckBoxColumn(visible=False, default='')
status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
prefix = tables.TemplateColumn(PREFIX_LINK, verbose_name='Prefix')
vrf = tables.Column(orderable=False, default='Global', verbose_name='VRF')
@@ -109,7 +96,7 @@ class PrefixTable(tables.Table):
class Meta:
model = Prefix
fields = ('prefix', 'status', 'vrf', 'site', 'role', 'description')
fields = ('pk', 'prefix', 'status', 'vrf', 'site', 'role', 'description')
empty_text = "No prefixes found."
attrs = {
'class': 'table table-hover',
@@ -131,19 +118,12 @@ class PrefixBriefTable(tables.Table):
}
class PrefixBulkEditTable(PrefixTable):
pk = tables.CheckBoxColumn(default='')
class Meta(PrefixTable.Meta):
model = None # django_tables2 bugfix
fields = ('pk', 'prefix', 'status', 'vrf', 'site', 'role', 'description')
#
# IPAddresses
#
class IPAddressTable(tables.Table):
pk = tables.CheckBoxColumn(visible=False, default='')
address = tables.LinkColumn('ipam:ipaddress', args=[Accessor('pk')], verbose_name='IP Address')
vrf = tables.Column(orderable=False, default='Global', verbose_name='VRF')
device = tables.LinkColumn('dcim:device', args=[Accessor('interface.device.pk')], orderable=False, verbose_name='Device')
@@ -152,7 +132,7 @@ class IPAddressTable(tables.Table):
class Meta:
model = IPAddress
fields = ('address', 'vrf', 'device', 'interface', 'description')
fields = ('pk', 'address', 'vrf', 'device', 'interface', 'description')
empty_text = "No IP addresses found."
attrs = {
'class': 'table table-hover',
@@ -174,19 +154,12 @@ class IPAddressBriefTable(tables.Table):
}
class IPAddressBulkEditTable(IPAddressTable):
pk = tables.CheckBoxColumn()
class Meta(IPAddressTable.Meta):
model = None # django_tables2 bugfix
fields = ('pk', 'address', 'vrf', 'device', 'interface', 'description')
#
# VLANs
#
class VLANTable(tables.Table):
pk = tables.CheckBoxColumn(visible=False, default='')
vid = tables.LinkColumn('ipam:vlan', args=[Accessor('pk')], verbose_name='ID')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
name = tables.Column(verbose_name='Name')
@@ -195,16 +168,8 @@ class VLANTable(tables.Table):
class Meta:
model = VLAN
fields = ('vid', 'site', 'name', 'status', 'role')
fields = ('pk', 'vid', 'site', 'name', 'status', 'role')
empty_text = "No VLANs found."
attrs = {
'class': 'table table-hover',
}
class VLANBulkEditTable(VLANTable):
pk = tables.CheckBoxColumn()
class Meta(VLANTable.Meta):
model = None # django_tables2 bugfix
fields = ('pk', 'vid', 'site', 'name', 'status', 'role')

View File

@@ -17,10 +17,9 @@ from .forms import AggregateForm, AggregateImportForm, AggregateBulkEditForm, Ag
IPAddressForm, IPAddressImportForm, IPAddressBulkEditForm, IPAddressBulkDeleteForm, IPAddressFilterForm, VLANForm,\
VLANImportForm, VLANBulkEditForm, VLANBulkDeleteForm, VRFForm, VRFImportForm, VRFBulkEditForm, VRFBulkDeleteForm,\
VLANFilterForm
from .models import VRF, Aggregate, Prefix, VLAN
from .tables import AggregateTable, AggregateBulkEditTable, PrefixTable, PrefixBriefTable, PrefixBulkEditTable,\
IPAddress, IPAddressBriefTable, IPAddressTable, IPAddressBulkEditTable, VLANTable, VLANBulkEditTable, VRFTable,\
VRFBulkEditTable
from .models import VRF, Aggregate, Prefix, IPAddress, VLAN
from .tables import AggregateTable, PrefixTable, PrefixBriefTable, IPAddressBriefTable, IPAddressTable, VLANTable,\
VRFTable
def add_available_prefixes(parent, prefix_list):
@@ -47,8 +46,7 @@ class VRFListView(ObjectListView):
queryset = VRF.objects.all()
filter = VRFFilter
table = VRFTable
edit_table = VRFBulkEditTable
edit_table_permissions = ['ipam.change_vrf', 'ipam.delete_vrf']
edit_permissions = ['ipam.change_vrf', 'ipam.delete_vrf']
template_name = 'ipam/vrf_list.html'
@@ -126,8 +124,7 @@ class AggregateListView(ObjectListView):
filter = AggregateFilter
filter_form = AggregateFilterForm
table = AggregateTable
edit_table = AggregateBulkEditTable
edit_table_permissions = ['ipam.change_aggregate', 'ipam.delete_aggregate']
edit_permissions = ['ipam.change_aggregate', 'ipam.delete_aggregate']
template_name = 'ipam/aggregate_list.html'
@@ -140,10 +137,9 @@ def aggregate(request, pk):
.select_related('site', 'status', 'role').annotate_depth(limit=0)
child_prefixes = add_available_prefixes(aggregate.prefix, child_prefixes)
prefix_table = PrefixTable(child_prefixes)
if request.user.has_perm('ipam.change_prefix') or request.user.has_perm('ipam.delete_prefix'):
prefix_table = PrefixBulkEditTable(child_prefixes)
else:
prefix_table = PrefixTable(child_prefixes)
prefix_table.base_columns['pk'].visible = True
RequestConfig(request, paginate={'per_page': settings.PAGINATE_COUNT, 'klass': EnhancedPaginator})\
.configure(prefix_table)
@@ -214,8 +210,7 @@ class PrefixListView(ObjectListView):
filter = PrefixFilter
filter_form = PrefixFilterForm
table = PrefixTable
edit_table = PrefixBulkEditTable
edit_table_permissions = ['ipam.change_prefix', 'ipam.delete_prefix']
edit_permissions = ['ipam.change_prefix', 'ipam.delete_prefix']
template_name = 'ipam/prefix_list.html'
def alter_queryset(self, request):
@@ -251,10 +246,9 @@ def prefix(request, pk):
.select_related('site', 'status', 'role').annotate_depth(limit=0)
if child_prefixes:
child_prefixes = add_available_prefixes(prefix.prefix, child_prefixes)
child_prefix_table = PrefixTable(child_prefixes)
if request.user.has_perm('ipam.change_prefix') or request.user.has_perm('ipam.delete_prefix'):
child_prefix_table = PrefixBulkEditTable(child_prefixes)
else:
child_prefix_table = PrefixTable(child_prefixes)
child_prefix_table.base_columns['pk'].visible = True
RequestConfig(request, paginate={'per_page': settings.PAGINATE_COUNT, 'klass': EnhancedPaginator})\
.configure(child_prefix_table)
@@ -333,10 +327,9 @@ def prefix_ipaddresses(request, pk):
ipaddresses = IPAddress.objects.filter(address__net_contained_or_equal=str(prefix.prefix))\
.select_related('vrf', 'interface__device', 'primary_for')
ip_table = IPAddressTable(ipaddresses)
if request.user.has_perm('ipam.change_ipaddress') or request.user.has_perm('ipam.delete_ipaddress'):
ip_table = IPAddressBulkEditTable(ipaddresses)
else:
ip_table = IPAddressTable(ipaddresses)
ip_table.base_columns['pk'].visible = True
RequestConfig(request, paginate={'per_page': settings.PAGINATE_COUNT, 'klass': EnhancedPaginator})\
.configure(ip_table)
@@ -355,8 +348,7 @@ class IPAddressListView(ObjectListView):
filter = IPAddressFilter
filter_form = IPAddressFilterForm
table = IPAddressTable
edit_table = IPAddressBulkEditTable
edit_table_permissions = ['ipam.change_ipaddress', 'ipam.delete_ipaddress']
edit_permissions = ['ipam.change_ipaddress', 'ipam.delete_ipaddress']
template_name = 'ipam/ipaddress_list.html'
@@ -455,8 +447,7 @@ class VLANListView(ObjectListView):
filter = VLANFilter
filter_form = VLANFilterForm
table = VLANTable
edit_table = VLANBulkEditTable
edit_table_permissions = ['ipam.change_vlan', 'ipam.delete_vlan']
edit_permissions = ['ipam.change_vlan', 'ipam.delete_vlan']
template_name = 'ipam/vlan_list.html'