network_inventory/computers/views.py

76 lines
3.0 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-02-16 12:59:44 +01:00
from devices.models import Warranty
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)
2020-01-12 16:55:16 +01:00
disks_relations = ComputerDiskRelation.objects.filter(computer=pk)
2020-02-16 12:59:44 +01:00
warranty_relations = Warranty.objects.filter(device=pk)
2020-01-12 16:55:16 +01:00
ram_relations = ComputerRamRelation.objects.filter(computer=pk)
cpu_relations = ComputerCpuRelation.objects.filter(computer=pk)
software_relations = ComputerSoftwareRelation.objects.filter(computer=pk)
license_list = 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,
2020-02-16 12:59:44 +01:00
'warranty_relations': warranty_relations,
2020-01-12 16:55:16 +01:00
'disks_relations': disks_relations,
'ram_relations': ram_relations,
'cpu_relations': cpu_relations,
'software_relations': software_relations,
2020-01-03 03:29:44 +01:00
'raid_disk_pairs': raid_disk_pairs,
2020-01-12 16:55:16 +01:00
'backup_relations': backup_list,
'license_list': license_list}
2020-01-12 14:36:44 +01:00
return render(request, 'computers/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)
2020-01-12 14:36:44 +01:00
return render(request, 'computers/computer_list.html', {'computers': table})
class ComputersFilterView(LoginRequiredMixin, SingleTableMixin, FilterView):
2019-08-02 16:54:32 +02:00
table_class = ComputersTable
model = Computer
2020-01-12 14:36:44 +01:00
template_name = "computers/all_computers.html"
2019-08-02 16:54:32 +02:00
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