network_inventory/network_inventory/inventory/views.py

130 lines
4.7 KiB
Python
Raw Normal View History

from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
2017-12-22 17:02:24 +01:00
from django.shortcuts import get_object_or_404, render
2019-12-03 22:14:50 +01:00
from django.views.generic import DetailView
2019-09-01 12:06:27 +02:00
from guardian.shortcuts import get_objects_for_user
from guardian.mixins import PermissionRequiredMixin
2019-09-01 12:06:27 +02:00
2019-08-02 13:05:42 +02:00
from django_tables2 import RequestConfig
2019-08-02 16:54:32 +02:00
from django_tables2.views import SingleTableMixin
2019-09-01 12:06:27 +02:00
from django_filters.views import FilterView
2019-12-11 17:57:48 +01:00
from .decorators import (computer_view_permission, customer_view_permission,
net_view_permission)
2019-07-25 20:13:04 +02:00
from .models import (Device, Computer, ComputerRamRelation,
ComputerDiskRelation, ComputerCpuRelation,
2019-08-02 14:31:55 +02:00
ComputerSoftwareRelation, Customer, Net, RaidInComputer,
2019-09-01 12:06:27 +02:00
Backup, DeviceInNet)
from .tables import (CustomersTable, ComputersTable, DevicesTable, NetsTable,
2019-09-24 20:30:43 +02:00
BackupsTable, NetDetailTable, BackupDetailTable)
2019-08-02 16:54:32 +02:00
from .filters import ComputerFilter
2017-12-25 13:35:09 +01:00
2019-08-04 20:44:37 +02:00
@login_required
def device_detail_view(request, pk):
device = get_object_or_404(Device, pk=pk)
return render(request, 'inventory/device_details.html',
{'device': device})
2017-12-25 13:35:09 +01:00
@login_required
@computer_view_permission
def computer_detail_view(request, pk):
computer = get_object_or_404(Computer, pk=pk)
disks_list = ComputerDiskRelation.objects.filter(computer=pk)
ram_list = ComputerRamRelation.objects.filter(computer=pk)
cpu_list = ComputerCpuRelation.objects.filter(computer=pk)
software_list = ComputerSoftwareRelation.objects.filter(computer=pk)
raid_relations = RaidInComputer.objects.filter(computer=pk)
raid_relations = RaidInComputer.objects.filter(computer=pk)
backup_list = Backup.objects.filter(computer=pk)
context = {'computer': computer,
'disks_list': disks_list,
'ram_list': ram_list,
'cpu_list': cpu_list,
'software_list': software_list,
2019-08-02 14:31:55 +02:00
'raid_relations': raid_relations,
2019-11-30 16:37:20 +01:00
'backup_list': backup_list}
return render(request, 'inventory/computer_details.html', context)
2017-12-25 13:35:30 +01:00
2019-08-30 22:37:49 +02:00
class CustomerDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
2019-07-25 20:34:52 +02:00
model = Customer
template_name = 'inventory/customer_details.html'
2019-08-13 18:53:39 +02:00
permission_required = 'view_customer'
2019-07-25 20:34:52 +02:00
2019-08-04 20:44:37 +02:00
@login_required
2019-08-02 13:05:42 +02:00
def customers_table_view(request):
table = CustomersTable(
get_objects_for_user(request.user,
'inventory.view_customer',
klass=Customer))
RequestConfig(request).configure(table)
return render(request, 'inventory/customer_list.html', {'customers': table})
2019-08-04 20:44:37 +02:00
@login_required
def computers_table_view(request, pk):
table = ComputersTable(Computer.objects.filter(customer=pk))
2019-08-02 13:05:42 +02:00
RequestConfig(request).configure(table)
return render(request, 'inventory/computer_list.html', {'computers': table})
2019-08-04 20:44:37 +02:00
@login_required
def devices_table_view(request, pk):
table = DevicesTable(Device.objects.filter(customer=pk))
2019-08-02 13:05:42 +02:00
RequestConfig(request).configure(table)
return render(request, 'inventory/device_list.html', {'devices': table})
2019-07-28 22:02:07 +02:00
2019-08-04 20:44:37 +02:00
@login_required
def nets_table_view(request, pk):
table = NetsTable(Net.objects.filter(customer=pk))
2019-08-02 13:05:42 +02:00
RequestConfig(request).configure(table)
return render(request, 'inventory/net_list.html', {'nets': table})
2019-07-28 22:02:07 +02:00
2019-08-04 20:44:37 +02:00
@login_required
2019-12-11 17:57:48 +01:00
@net_view_permission
2019-08-02 13:05:42 +02:00
def net_detail_view(request, pk):
net = get_object_or_404(Net, pk=pk)
table = NetDetailTable(DeviceInNet.objects.filter(net=net))
2019-08-02 13:05:42 +02:00
RequestConfig(request).configure(table)
return render(request, 'inventory/net_details.html',
{'table': table,
'net': net})
2019-08-02 14:31:55 +02:00
2019-09-24 20:30:43 +02:00
@login_required
2019-11-30 14:15:20 +01:00
@customer_view_permission
2019-09-24 20:30:43 +02:00
def backups_table_view(request, pk):
computers = Computer.objects.filter(customer=pk)
table = BackupsTable(Backup.objects.filter(computer__in=computers))
RequestConfig(request).configure(table)
return render(request, 'inventory/backup_list.html', {'backups': table})
2019-08-04 20:44:37 +02:00
@login_required
2019-08-02 14:31:55 +02:00
def backup_detail_view(request, pk):
table = BackupDetailTable(Backup.objects.filter(pk=pk))
RequestConfig(request).configure(table)
return render(request, 'inventory/backup_details.html', {'backup': table})
2019-08-02 16:54:32 +02:00
class ComputersFilterView(LoginRequiredMixin, SingleTableMixin, FilterView):
2019-08-02 16:54:32 +02:00
table_class = ComputersTable
model = Computer
template_name = "inventory/all_computers.html"
filterset_class = ComputerFilter
def get_queryset(self):
customers = get_objects_for_user(self.request.user,
'inventory.view_customer',
klass=Customer)
2019-08-30 21:04:23 +02:00
results = Computer.objects.filter(customer__in=customers)
return results