mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Add dedicated views for organizational models
This commit is contained in:
@@ -148,6 +148,23 @@ class RIRListView(generic.ObjectListView):
|
||||
template_name = 'ipam/rir_list.html'
|
||||
|
||||
|
||||
class RIRView(generic.ObjectView):
|
||||
queryset = RIR.objects.all()
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
aggregates = Aggregate.objects.restrict(request.user, 'view').filter(
|
||||
rir=instance
|
||||
)
|
||||
|
||||
aggregates_table = tables.AggregateTable(aggregates)
|
||||
aggregates_table.columns.hide('rir')
|
||||
paginate_table(aggregates_table, request)
|
||||
|
||||
return {
|
||||
'aggregates_table': aggregates_table,
|
||||
}
|
||||
|
||||
|
||||
class RIREditView(generic.ObjectEditView):
|
||||
queryset = RIR.objects.all()
|
||||
model_form = forms.RIRForm
|
||||
@@ -286,6 +303,23 @@ class RoleListView(generic.ObjectListView):
|
||||
table = tables.RoleTable
|
||||
|
||||
|
||||
class RoleView(generic.ObjectView):
|
||||
queryset = Role.objects.all()
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
prefixes = Prefix.objects.restrict(request.user, 'view').filter(
|
||||
role=instance
|
||||
)
|
||||
|
||||
prefixes_table = tables.PrefixTable(prefixes)
|
||||
prefixes_table.columns.hide('role')
|
||||
paginate_table(prefixes_table, request)
|
||||
|
||||
return {
|
||||
'prefixes_table': prefixes_table,
|
||||
}
|
||||
|
||||
|
||||
class RoleEditView(generic.ObjectEditView):
|
||||
queryset = Role.objects.all()
|
||||
model_form = forms.RoleForm
|
||||
@@ -633,6 +667,29 @@ class VLANGroupListView(generic.ObjectListView):
|
||||
table = tables.VLANGroupTable
|
||||
|
||||
|
||||
class VLANGroupView(generic.ObjectView):
|
||||
queryset = VLANGroup.objects.all()
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
vlans = VLAN.objects.restrict(request.user, 'view').filter(group=instance).prefetch_related(
|
||||
Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user))
|
||||
)
|
||||
vlans_count = vlans.count()
|
||||
vlans = add_available_vlans(instance, vlans)
|
||||
|
||||
vlans_table = tables.VLANDetailTable(vlans)
|
||||
if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'):
|
||||
vlans_table.columns.show('pk')
|
||||
vlans_table.columns.hide('site')
|
||||
vlans_table.columns.hide('group')
|
||||
paginate_table(vlans_table, request)
|
||||
|
||||
return {
|
||||
'vlans_count': vlans_count,
|
||||
'vlans_table': vlans_table,
|
||||
}
|
||||
|
||||
|
||||
class VLANGroupEditView(generic.ObjectEditView):
|
||||
queryset = VLANGroup.objects.all()
|
||||
model_form = forms.VLANGroupForm
|
||||
@@ -666,38 +723,6 @@ class VLANGroupBulkDeleteView(generic.BulkDeleteView):
|
||||
table = tables.VLANGroupTable
|
||||
|
||||
|
||||
class VLANGroupVLANsView(generic.ObjectView):
|
||||
queryset = VLANGroup.objects.all()
|
||||
template_name = 'ipam/vlangroup_vlans.html'
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
vlans = VLAN.objects.restrict(request.user, 'view').filter(group=instance).prefetch_related(
|
||||
Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user))
|
||||
)
|
||||
vlans = add_available_vlans(instance, vlans)
|
||||
|
||||
vlan_table = tables.VLANDetailTable(vlans)
|
||||
if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'):
|
||||
vlan_table.columns.show('pk')
|
||||
vlan_table.columns.hide('site')
|
||||
vlan_table.columns.hide('group')
|
||||
paginate_table(vlan_table, request)
|
||||
|
||||
# Compile permissions list for rendering the object table
|
||||
permissions = {
|
||||
'add': request.user.has_perm('ipam.add_vlan'),
|
||||
'change': request.user.has_perm('ipam.change_vlan'),
|
||||
'delete': request.user.has_perm('ipam.delete_vlan'),
|
||||
}
|
||||
|
||||
return {
|
||||
'first_available_vlan': instance.get_next_available_vid(),
|
||||
'bulk_querystring': f'group_id={instance.pk}',
|
||||
'vlan_table': vlan_table,
|
||||
'permissions': permissions,
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# VLANs
|
||||
#
|
||||
|
Reference in New Issue
Block a user