rewrite so that all the views get a pk object

This commit is contained in:
Andreas Zweili 2019-09-03 18:49:44 +02:00
parent 2d06992811
commit 53289a58f6
3 changed files with 31 additions and 31 deletions

View File

@ -4,12 +4,12 @@ from .models import Computer, Customer, Device, ConnectedDevice
def computer_view_permission(old_fuction):
def new_function(request, computer_id, *args, **kwargs):
computer = get_object_or_404(Computer, pk=computer_id)
def new_function(request, pk, *args, **kwargs):
computer = get_object_or_404(Computer, pk=pk)
customer = Customer.objects.get(pk=computer.customer.pk)
user = request.user
if user.has_perm('inventory.view_customer', customer):
return old_fuction(request, computer_id)
return old_fuction(request, pk)
else:
return HttpResponseForbidden(
"You're not allowed to access this device."
@ -18,12 +18,12 @@ def computer_view_permission(old_fuction):
def device_view_permission(old_function):
def new_function(request, device_id, *args, **kwargs):
device = get_object_or_404(Device, pk=device_id)
def new_function(request, pk, *args, **kwargs):
device = get_object_or_404(Device, pk=pk)
customer = Customer.objects.get(pk=device.customer.pk)
user = request.user
if user.has_perm('inventory.view_customer', customer):
return old_fuction(request, device_id)
return old_fuction(request, pk)
else:
return HttpResponseForbidden(
"You're not allowed to access this device."
@ -32,12 +32,12 @@ def device_view_permission(old_function):
def connect_device_view_permission(old_function):
def new_function(request, device_id, *args, **kwargs):
device = get_object_or_404(ConnectedDevice, pk=device_id)
def new_function(request, pk, *args, **kwargs):
device = get_object_or_404(ConnectedDevice, pk=pk)
customer = Customer.objects.get(pk=device.customer.pk)
user = request.user
if user.has_perm('inventory.view_customer', customer):
return old_fuction(request, device_id)
return old_fuction(request, pk)
else:
return HttpResponseForbidden(
"You're not allowed to access this device."

View File

@ -7,15 +7,15 @@ urlpatterns = [
path('', views.customers_table_view, name='customers'),
path('customer/<int:pk>/', views.CustomerDetailView.as_view(),
name='customer'),
path('customer/<int:customer_id>/computers/',
path('customer/<int:pk>/computers/',
views.computers_table_view, name='computers'),
path('customer/<int:customer_id>/devices/', views.devices_table_view,
path('customer/<int:pk>/devices/', views.devices_table_view,
name='devices'),
path('customer/<int:customer_id>/nets/', views.nets_table_view,
path('customer/<int:pk>/nets/', views.nets_table_view,
name='nets'),
path('computer/<int:computer_id>/', views.computer_detail_view,
path('computer/<int:pk>/', views.computer_detail_view,
name='computer'),
path('device/<int:device_id>/', views.device_detail_view, name='device'),
path('device/<int:pk>/', views.device_detail_view, name='device'),
path('net/<int:pk>/', views.net_detail_view, name='net'),
path('backup/<int:pk>/', views.backup_detail_view, name='backup'),
path('computers/all/', views.ComputersFilterView.as_view(), name='all_computers')

View File

@ -22,23 +22,23 @@ from .filters import ComputerFilter
@login_required
def device_detail_view(request, device_id):
device = get_object_or_404(Device, pk=device_id)
def device_detail_view(request, pk):
device = get_object_or_404(Device, pk=pk)
return render(request, 'inventory/device_details.html',
{'device': device})
@login_required
@computer_view_permission
def computer_detail_view(request, computer_id):
computer = get_object_or_404(Computer, pk=computer_id)
disks_list = ComputerDiskRelation.objects.filter(computer=computer_id)
ram_list = ComputerRamRelation.objects.filter(computer=computer_id)
cpu_list = ComputerCpuRelation.objects.filter(computer=computer_id)
software_list = ComputerSoftwareRelation.objects.filter(computer=computer_id)
raid_relations = RaidInComputer.objects.filter(computer=computer_id)
raid_relations = RaidInComputer.objects.filter(computer=computer_id)
backup_list = Backup.objects.filter(computer=computer_id)
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,
@ -66,22 +66,22 @@ def customers_table_view(request):
@login_required
def computers_table_view(request, customer_id):
table = ComputersTable(Computer.objects.filter(customer=customer_id))
def computers_table_view(request, pk):
table = ComputersTable(Computer.objects.filter(customer=pk))
RequestConfig(request).configure(table)
return render(request, 'inventory/computer_list.html', {'computers': table})
@login_required
def devices_table_view(request, customer_id):
table = DevicesTable(Device.objects.filter(customer=customer_id))
def devices_table_view(request, pk):
table = DevicesTable(Device.objects.filter(customer=pk))
RequestConfig(request).configure(table)
return render(request, 'inventory/device_list.html', {'devices': table})
@login_required
def nets_table_view(request, customer_id):
table = NetsTable(Net.objects.filter(customer=customer_id))
def nets_table_view(request, pk):
table = NetsTable(Net.objects.filter(customer=pk))
RequestConfig(request).configure(table)
return render(request, 'inventory/net_list.html', {'nets': table})