implement the net detail view
This commit is contained in:
parent
a6984fd258
commit
0571f6863a
|
@ -1,6 +1,6 @@
|
|||
from django.http import HttpResponseForbidden
|
||||
from django.shortcuts import get_object_or_404
|
||||
from .models import Computer, Customer, Device, ConnectedDevice
|
||||
from .models import Computer, Customer, Device, ConnectedDevice, Net
|
||||
|
||||
|
||||
def computer_view_permission(old_fuction):
|
||||
|
@ -56,3 +56,17 @@ def customer_view_permission(old_function):
|
|||
"You're not allowed to access this page."
|
||||
)
|
||||
return new_function
|
||||
|
||||
|
||||
def net_view_permission(old_fuction):
|
||||
def new_function(request, pk, *args, **kwargs):
|
||||
net = get_object_or_404(Net, pk=pk)
|
||||
customer = Customer.objects.get(pk=net.customer.pk)
|
||||
user = request.user
|
||||
if user.has_perm('inventory.view_customer', customer):
|
||||
return old_fuction(request, pk)
|
||||
else:
|
||||
return HttpResponseForbidden(
|
||||
"You're not allowed to access this device."
|
||||
)
|
||||
return new_function
|
||||
|
|
|
@ -13,19 +13,21 @@ pytestmark = pytest.mark.django_db
|
|||
def test_net_detail_view_no_permission(create_admin_user):
|
||||
create_admin_user()
|
||||
net = mixer.blend('inventory.Net')
|
||||
device = mixer.blend('inventory.Computer')
|
||||
device_in_net = DeviceInNet.objects.create(device=device, net=net, ip='10.7.89.101')
|
||||
customer = mixer.blend('inventory.Customer')
|
||||
device = mixer.blend('inventory.Computer', customer=customer)
|
||||
mixer.blend('inventory.DeviceInNet',
|
||||
device=device,
|
||||
net=net,
|
||||
ip='10.7.89.101')
|
||||
client = Client()
|
||||
client.login(username="novartis-admin", password="password")
|
||||
response = client.get('/net/' + str(net.id) + '/')
|
||||
assert (response.status_code == 200
|
||||
and helper.in_content(response, net.name)
|
||||
and helper.not_in_content(response, device_in_net.ip))
|
||||
assert (response.status_code == 403)
|
||||
|
||||
|
||||
def test_net_detail_view(create_admin_user):
|
||||
fixture = create_admin_user()
|
||||
net = mixer.blend('inventory.Net')
|
||||
net = mixer.blend('inventory.Net', customer=mixer.SELECT)
|
||||
device = mixer.blend('inventory.Computer', customer=fixture['customer'])
|
||||
device_in_net = DeviceInNet.objects.create(device=device,
|
||||
net=net, ip='10.7.89.101')
|
||||
|
|
|
@ -11,7 +11,8 @@ from django_tables2.views import SingleTableMixin
|
|||
|
||||
from django_filters.views import FilterView
|
||||
|
||||
from .decorators import computer_view_permission, customer_view_permission
|
||||
from .decorators import (computer_view_permission, customer_view_permission,
|
||||
net_view_permission)
|
||||
from .models import (Device, Computer, ComputerRamRelation,
|
||||
ComputerDiskRelation, ComputerCpuRelation,
|
||||
ComputerSoftwareRelation, Customer, Net, RaidInComputer,
|
||||
|
@ -87,6 +88,7 @@ def nets_table_view(request, pk):
|
|||
|
||||
|
||||
@login_required
|
||||
@net_view_permission
|
||||
def net_detail_view(request, pk):
|
||||
net = get_object_or_404(Net, pk=pk)
|
||||
table = NetDetailTable(DeviceInNet.objects.filter(net=net))
|
||||
|
|
Loading…
Reference in New Issue