network_inventory/inventory/views.py

73 lines
2.7 KiB
Python
Raw Normal View History

from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
2019-12-30 11:09:47 +01:00
from django.shortcuts import get_object_or_404
from django.shortcuts import render
2019-09-01 12:06:27 +02:00
2019-12-30 11:09:47 +01:00
from django_filters.views import FilterView
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-12-30 11:09:47 +01:00
from guardian.shortcuts import get_objects_for_user
2019-09-01 12:06:27 +02:00
from backups.models import Backup
2020-01-10 00:01:06 +01:00
from customers.models import Customer
from customers.decorators import customer_view_permission
2020-01-12 12:43:01 +01:00
from licenses.models import LicenseWithComputer
2019-12-30 11:09:47 +01:00
from .decorators import computer_view_permission
2019-08-02 16:54:32 +02:00
from .filters import ComputerFilter
2019-12-30 11:09:47 +01:00
from .models import Computer
from .models import ComputerCpuRelation
from .models import ComputerDiskRelation
from .models import ComputerRamRelation
from .models import ComputerSoftwareRelation
2020-01-03 03:29:44 +01:00
from .models import DisksInRaid
2019-12-30 11:09:47 +01:00
from .models import Raid
from .tables import ComputersTable
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)
licenses = LicenseWithComputer.objects.filter(computer=pk)
2020-01-03 03:29:44 +01:00
raid_disk_pairs = {}
for raid in Raid.objects.filter(computer=pk):
raid_disk_pairs[raid] = DisksInRaid.objects.filter(raid=raid)
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,
2020-01-03 03:29:44 +01:00
'raid_disk_pairs': raid_disk_pairs,
'backup_list': backup_list,
'licenses': licenses}
return render(request, 'inventory/computer_details.html', context)
2017-12-25 13:35:30 +01:00
2019-08-04 20:44:37 +02:00
@login_required
@customer_view_permission
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})
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,
2020-01-10 00:01:06 +01:00
'customers.view_customer',
klass=Customer)
2019-08-30 21:04:23 +02:00
results = Computer.objects.filter(customer__in=customers)
return results