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

158 lines
4.9 KiB
Python
Raw Normal View History

2016-03-01 11:23:03 -05:00
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.db.models import Count
from django.shortcuts import get_object_or_404, render
2016-03-01 11:23:03 -05:00
from extras.models import Graph, GRAPH_TYPE_PROVIDER
2016-05-18 15:17:58 -04:00
from utilities.views import (
2016-05-18 16:02:53 -04:00
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
2016-05-18 15:17:58 -04:00
)
2016-03-01 11:23:03 -05:00
2016-05-18 16:35:35 -04:00
from . import filters, forms, tables
2016-05-13 12:44:03 -04:00
from .models import Circuit, CircuitType, Provider
2016-03-01 11:23:03 -05:00
#
# Providers
#
class ProviderListView(ObjectListView):
2016-03-01 11:23:03 -05:00
queryset = Provider.objects.annotate(count_circuits=Count('circuits'))
filter = filters.ProviderFilter
filter_form = forms.ProviderFilterForm
2016-05-18 16:35:35 -04:00
table = tables.ProviderTable
edit_permissions = ['circuits.change_provider', 'circuits.delete_provider']
template_name = 'circuits/provider_list.html'
2016-03-01 11:23:03 -05:00
def provider(request, slug):
provider = get_object_or_404(Provider, slug=slug)
circuits = Circuit.objects.filter(provider=provider).select_related('site', 'interface__device')
show_graphs = Graph.objects.filter(type=GRAPH_TYPE_PROVIDER).exists()
2016-03-01 11:23:03 -05:00
return render(request, 'circuits/provider.html', {
'provider': provider,
'circuits': circuits,
'show_graphs': show_graphs,
2016-03-01 11:23:03 -05:00
})
class ProviderEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'circuits.change_provider'
model = Provider
2016-05-18 15:17:58 -04:00
form_class = forms.ProviderForm
template_name = 'circuits/provider_edit.html'
cancel_url = 'circuits:provider_list'
2016-03-01 11:23:03 -05:00
class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'circuits.delete_provider'
model = Provider
redirect_url = 'circuits:provider_list'
2016-03-01 11:23:03 -05:00
class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView):
permission_required = 'circuits.add_provider'
2016-05-18 15:17:58 -04:00
form = forms.ProviderImportForm
2016-05-18 16:35:35 -04:00
table = tables.ProviderTable
2016-03-01 11:23:03 -05:00
template_name = 'circuits/provider_import.html'
obj_list_url = 'circuits:provider_list'
class ProviderBulkEditView(PermissionRequiredMixin, BulkEditView):
permission_required = 'circuits.change_provider'
cls = Provider
2016-05-18 15:17:58 -04:00
form = forms.ProviderBulkEditForm
2016-03-01 11:23:03 -05:00
template_name = 'circuits/provider_bulk_edit.html'
default_redirect_url = 'circuits:provider_list'
2016-03-01 11:23:03 -05:00
class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'circuits.delete_provider'
cls = Provider
default_redirect_url = 'circuits:provider_list'
2016-03-01 11:23:03 -05:00
2016-05-13 12:44:03 -04:00
#
# Circuit Types
#
class CircuitTypeListView(ObjectListView):
queryset = CircuitType.objects.annotate(circuit_count=Count('circuits'))
2016-05-18 16:35:35 -04:00
table = tables.CircuitTypeTable
2016-05-13 12:44:03 -04:00
edit_permissions = ['circuits.change_circuittype', 'circuits.delete_circuittype']
template_name = 'circuits/circuittype_list.html'
class CircuitTypeEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'circuits.change_circuittype'
model = CircuitType
2016-05-18 15:17:58 -04:00
form_class = forms.CircuitTypeForm
success_url = 'circuits:circuittype_list'
cancel_url = 'circuits:circuittype_list'
2016-05-13 12:44:03 -04:00
class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'circuits.delete_circuittype'
cls = CircuitType
default_redirect_url = 'circuits:circuittype_list'
2016-03-01 11:23:03 -05:00
#
# Circuits
#
class CircuitListView(ObjectListView):
2016-07-26 15:42:26 -04:00
queryset = Circuit.objects.select_related('provider', 'type', 'tenant', 'site')
2016-05-18 16:35:35 -04:00
filter = filters.CircuitFilter
2016-05-18 15:17:58 -04:00
filter_form = forms.CircuitFilterForm
2016-05-18 16:35:35 -04:00
table = tables.CircuitTable
edit_permissions = ['circuits.change_circuit', 'circuits.delete_circuit']
template_name = 'circuits/circuit_list.html'
2016-03-01 11:23:03 -05:00
def circuit(request, pk):
circuit = get_object_or_404(Circuit, pk=pk)
return render(request, 'circuits/circuit.html', {
'circuit': circuit,
})
class CircuitEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'circuits.change_circuit'
model = Circuit
2016-05-18 15:17:58 -04:00
form_class = forms.CircuitForm
fields_initial = ['site']
template_name = 'circuits/circuit_edit.html'
cancel_url = 'circuits:circuit_list'
2016-03-01 11:23:03 -05:00
class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'circuits.delete_circuit'
model = Circuit
redirect_url = 'circuits:circuit_list'
2016-03-01 11:23:03 -05:00
class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):
permission_required = 'circuits.add_circuit'
2016-05-18 15:17:58 -04:00
form = forms.CircuitImportForm
2016-05-18 16:35:35 -04:00
table = tables.CircuitTable
2016-03-01 11:23:03 -05:00
template_name = 'circuits/circuit_import.html'
obj_list_url = 'circuits:circuit_list'
class CircuitBulkEditView(PermissionRequiredMixin, BulkEditView):
permission_required = 'circuits.change_circuit'
cls = Circuit
2016-05-18 15:17:58 -04:00
form = forms.CircuitBulkEditForm
2016-03-01 11:23:03 -05:00
template_name = 'circuits/circuit_bulk_edit.html'
default_redirect_url = 'circuits:circuit_list'
2016-03-01 11:23:03 -05:00
class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'circuits.delete_circuit'
cls = Circuit
default_redirect_url = 'circuits:circuit_list'