1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
2017-08-16 15:25:33 -04:00

230 lines
7.2 KiB
Python

from __future__ import unicode_literals
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.db.models import Count
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.views.generic import View
from utilities.views import (
BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ComponentDeleteView, ComponentEditView,
ObjectDeleteView, ObjectEditView, ObjectListView,
)
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
from . import forms
from . import tables
#
# Cluster types
#
class ClusterTypeListView(ObjectListView):
queryset = ClusterType.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterTypeTable
template_name = 'virtualization/clustertype_list.html'
class ClusterTypeCreateView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'virtualization.add_clustertype'
model = ClusterType
form_class = forms.ClusterTypeForm
def get_return_url(self, request, obj):
return reverse('virtualization:clustertype_list')
class ClusterTypeEditView(ClusterTypeCreateView):
permission_required = 'virtualization.change_clustertype'
class ClusterTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'virtualization.delete_clustertype'
cls = ClusterType
queryset = ClusterType.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterTypeTable
default_return_url = 'virtualization:clustertype_list'
#
# Cluster groups
#
class ClusterGroupListView(ObjectListView):
queryset = ClusterGroup.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterGroupTable
template_name = 'virtualization/clustergroup_list.html'
class ClusterGroupCreateView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'virtualization.add_clustergroup'
model = ClusterGroup
form_class = forms.ClusterGroupForm
def get_return_url(self, request, obj):
return reverse('virtualization:clustergroup_list')
class ClusterGroupEditView(ClusterGroupCreateView):
permission_required = 'virtualization.change_clustergroup'
class ClusterGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'virtualization.delete_clustergroup'
cls = ClusterGroup
queryset = ClusterGroup.objects.annotate(cluster_count=Count('clusters'))
table = tables.ClusterGroupTable
default_return_url = 'virtualization:clustergroup_list'
#
# Clusters
#
class ClusterListView(ObjectListView):
queryset = Cluster.objects.annotate(vm_count=Count('virtual_machines'))
table = tables.ClusterTable
template_name = 'virtualization/cluster_list.html'
class ClusterView(View):
def get(self, request, pk):
cluster = get_object_or_404(Cluster, pk=pk)
return render(request, 'virtualization/cluster.html', {
'cluster': cluster,
})
class ClusterCreateView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'virtualization.add_cluster'
model = Cluster
form_class = forms.ClusterForm
def get_return_url(self, request, obj):
return reverse('virtualization:cluster_list')
class ClusterEditView(ClusterCreateView):
permission_required = 'virtualization.change_cluster'
class ClusterDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'virtualization.delete_cluster'
model = Cluster
default_return_url = 'virtualization:cluster_list'
class ClusterBulkImportView(PermissionRequiredMixin, BulkImportView):
permission_required = 'virtualization.add_cluster'
model_form = forms.ClusterCSVForm
table = tables.ClusterTable
default_return_url = 'virtualization:cluster_list'
class ClusterBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'virtualization.delete_cluster'
cls = Cluster
queryset = Cluster.objects.annotate(vm_count=Count('virtual_machines'))
table = tables.ClusterTable
default_return_url = 'virtualization:cluster_list'
#
# Virtual machines
#
class VirtualMachineListView(ObjectListView):
queryset = VirtualMachine.objects.select_related('tenant')
# filter = filters.VirtualMachineFilter
# filter_form = forms.VirtualMachineFilterForm
table = tables.VirtualMachineTable
template_name = 'virtualization/virtualmachine_list.html'
class VirtualMachineView(View):
def get(self, request, pk):
vm = get_object_or_404(VirtualMachine.objects.select_related('tenant__group'), pk=pk)
return render(request, 'virtualization/virtualmachine.html', {
'vm': vm,
})
class VirtualMachineCreateView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'virtualization.add_virtualmachine'
model = VirtualMachine
form_class = forms.VirtualMachineForm
template_name = 'virtualization/virtualmachine_edit.html'
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineEditView(VirtualMachineCreateView):
permission_required = 'virtualization.change_virtualmachine'
class VirtualMachineDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'virtualization.delete_virtualmachine'
model = VirtualMachine
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkImportView(PermissionRequiredMixin, BulkImportView):
permission_required = 'virtualization.add_virtualmachine'
model_form = forms.VirtualMachineCSVForm
table = tables.VirtualMachineTable
default_return_url = 'virtualization:virtualmachine_list'
class VirtualMachineBulkEditView(PermissionRequiredMixin, BulkEditView):
permission_required = 'virtualization.change_virtualmachine'
cls = VirtualMachine
queryset = VirtualMachine.objects.select_related('tenant')
# filter = filters.VirtualMachineFilter
table = tables.VirtualMachineTable
form = forms.VirtualMachineBulkEditForm
default_return_url = 'virtualization:virtualmachine_list'
#
# VM interfaces
#
# class VMInterfaceCreateView(PermissionRequiredMixin, ComponentCreateView):
# permission_required = 'virtualization.add_vminterface'
# parent_model = VirtualMachine
# parent_field = 'vm'
# model = VMInterface
# form = forms.VMInterfaceCreateForm
# model_form = forms.VMInterfaceForm
#
#
# class VMInterfaceEditView(PermissionRequiredMixin, ComponentEditView):
# permission_required = 'virtualization.change_vminterface'
# model = VMInterface
# form_class = forms.VMInterfaceForm
#
#
# class VMInterfaceDeleteView(PermissionRequiredMixin, ComponentDeleteView):
# permission_required = 'virtualization.delete_vminterface'
# model = VMInterface
#
#
# class VMInterfaceBulkEditView(PermissionRequiredMixin, BulkEditView):
# permission_required = 'virtualization.change_vminterface'
# cls = VMInterface
# parent_cls = VirtualMachine
# table = tables.VMInterfaceTable
# form = forms.VMInterfaceBulkEditForm
#
#
# class VMInterfaceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
# permission_required = 'virtualization.delete_vminterface'
# cls = VMInterface
# parent_cls = VirtualMachine
# table = tables.VMInterfaceTable