2019-06-16 15:02:47 +02:00
|
|
|
from django.contrib.auth.decorators import login_required
|
2017-12-22 17:02:24 +01:00
|
|
|
from django.shortcuts import get_object_or_404, render
|
2019-07-25 20:34:52 +02:00
|
|
|
from django.views.generic import ListView, DetailView
|
2019-06-10 21:46:29 +02:00
|
|
|
from guardian.shortcuts import get_objects_for_user
|
2019-08-02 13:05:42 +02:00
|
|
|
from django_tables2 import RequestConfig
|
2019-08-02 16:54:32 +02:00
|
|
|
from django_filters.views import FilterView
|
|
|
|
from django_tables2.views import SingleTableMixin
|
2019-07-25 20:13:04 +02:00
|
|
|
from .decorators import computer_view_permission
|
|
|
|
from .models import (Device, Computer, ComputerRamRelation,
|
|
|
|
ComputerDiskRelation, ComputerCpuRelation,
|
2019-08-02 14:31:55 +02:00
|
|
|
ComputerSoftwareRelation, Customer, Net, RaidInComputer,
|
|
|
|
Backup)
|
|
|
|
from .tables import CustomersTable, ComputersTable, DevicesTable, NetsTable, NetDetailTable, BackupDetailTable
|
2019-08-02 16:54:32 +02:00
|
|
|
from .filters import ComputerFilter
|
2017-12-25 13:35:09 +01:00
|
|
|
|
|
|
|
|
2019-07-25 20:35:22 +02:00
|
|
|
def device_detail_view(request, device_id):
|
2019-06-16 15:02:47 +02:00
|
|
|
device = get_object_or_404(Device, pk=device_id)
|
|
|
|
return render(request, 'inventory/device_details.html',
|
|
|
|
{'device': device})
|
2017-12-25 13:35:09 +01:00
|
|
|
|
|
|
|
|
2019-06-16 15:02:47 +02:00
|
|
|
@login_required
|
|
|
|
@computer_view_permission
|
2019-07-25 20:35:22 +02:00
|
|
|
def computer_detail_view(request, computer_id):
|
2019-06-16 15:02:47 +02:00
|
|
|
computer = get_object_or_404(Computer, pk=computer_id)
|
|
|
|
disks_list = ComputerDiskRelation.objects.filter(computer=computer_id)
|
2019-06-16 22:54:25 +02:00
|
|
|
ram_list = ComputerRamRelation.objects.filter(computer=computer_id)
|
|
|
|
cpu_list = ComputerCpuRelation.objects.filter(computer=computer_id)
|
2019-07-30 23:17:56 +02:00
|
|
|
software_list = ComputerSoftwareRelation.objects.filter(computer=computer_id)
|
|
|
|
raid_relations = RaidInComputer.objects.filter(computer=computer_id)
|
2019-08-02 14:31:55 +02:00
|
|
|
raid_relations = RaidInComputer.objects.filter(computer=computer_id)
|
|
|
|
backup_list = Backup.objects.filter(computer=computer_id)
|
2019-07-30 23:17:56 +02:00
|
|
|
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,
|
|
|
|
'backup_list': backup_list }
|
2019-07-30 23:17:56 +02:00
|
|
|
return render(request, 'inventory/computer_details.html', context)
|
2017-12-25 13:35:30 +01:00
|
|
|
|
|
|
|
|
2019-07-25 20:34:52 +02:00
|
|
|
class CustomerDetailView(DetailView):
|
|
|
|
model = Customer
|
|
|
|
template_name = 'inventory/customer_details.html'
|
|
|
|
|
|
|
|
|
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-06-10 21:46:29 +02:00
|
|
|
|
|
|
|
|
2019-08-02 13:05:42 +02:00
|
|
|
def computers_table_view(request, customer_id):
|
|
|
|
table = ComputersTable(Computer.objects.filter(customer=customer_id))
|
|
|
|
RequestConfig(request).configure(table)
|
|
|
|
return render(request, 'inventory/computer_list.html', {'computers': table})
|
2019-07-24 22:56:08 +02:00
|
|
|
|
|
|
|
|
2019-08-02 13:05:42 +02:00
|
|
|
def devices_table_view(request, customer_id):
|
|
|
|
table = DevicesTable(Device.objects.filter(customer=customer_id))
|
|
|
|
RequestConfig(request).configure(table)
|
|
|
|
return render(request, 'inventory/device_list.html', {'devices': table})
|
2019-07-28 22:02:07 +02:00
|
|
|
|
|
|
|
|
2019-08-02 13:05:42 +02:00
|
|
|
def nets_table_view(request, customer_id):
|
|
|
|
table = NetsTable(Net.objects.filter(customer=customer_id))
|
|
|
|
RequestConfig(request).configure(table)
|
|
|
|
return render(request, 'inventory/net_list.html', {'nets': table})
|
2019-07-28 22:02:07 +02:00
|
|
|
|
|
|
|
|
2019-08-02 13:05:42 +02:00
|
|
|
def net_detail_view(request, pk):
|
|
|
|
table = NetDetailTable(Net.objects.filter(pk=pk))
|
|
|
|
RequestConfig(request).configure(table)
|
|
|
|
return render(request, 'inventory/net_details.html', {'net': table})
|
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 AllComputersView(SingleTableMixin, FilterView):
|
|
|
|
table_class = ComputersTable
|
|
|
|
model = Computer
|
|
|
|
template_name = "inventory/all_computers.html"
|
|
|
|
|
|
|
|
filterset_class = ComputerFilter
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
return get_objects_for_user(self.request.user,
|
|
|
|
'inventory.view_computer',
|
|
|
|
klass=Computer)
|