diff --git a/computers/models/computer.py b/computers/models/computer.py index 520d33a..8d410ed 100644 --- a/computers/models/computer.py +++ b/computers/models/computer.py @@ -5,13 +5,13 @@ from softwares.models import Software from softwares.models import SoftwareArchitecture from .cpu import Cpu -from devices.models import ConnectedDevice +from devices.models import Device from .disk import Disk from .gpu import Gpu from .ram import Ram -class Computer(ConnectedDevice): +class Computer(Device): os = models.ForeignKey(OperatingSystem, models.SET_NULL, blank=True, null=True, verbose_name='OS') cpu = models.ManyToManyField(Cpu, through='ComputerCpuRelation') diff --git a/customers/tables.py b/customers/tables.py index 45b2ef1..dcb1aaf 100644 --- a/customers/tables.py +++ b/customers/tables.py @@ -15,10 +15,6 @@ class CustomersTable(CoreTable): text='Computers', args=[A('pk')], orderable=False) - connected_devices = tables.LinkColumn('connected_devices', - text='Connected Devices', - args=[A('pk')], - orderable=False) devices = tables.LinkColumn('devices', text='Devices', args=[A('pk')], diff --git a/customers/tests/test_customer_list_view.py b/customers/tests/test_customer_list_view.py index e42000d..98181cc 100644 --- a/customers/tests/test_customer_list_view.py +++ b/customers/tests/test_customer_list_view.py @@ -42,10 +42,6 @@ def test_customer_list_view(create_admin_user): "/customer/" + str(customer.id) + "/computers/") - and helper.in_content(response, - "/customer/" - + str(customer.id) - + "/connected_devices/") and helper.in_content(response, "/customer/" + str(customer.id) @@ -82,10 +78,6 @@ def test_customer_list_view_multiple_customers(create_admin_user): "/customer/" + str(customer1.id) + "/computers/") - and helper.in_content(response, - "/customer/" - + str(customer1.id) - + "/connected_devices/") and helper.in_content(response, "/customer/" + str(customer1.id) @@ -111,10 +103,6 @@ def test_customer_list_view_multiple_customers(create_admin_user): "/customer/" + str(customer2.id) + "/computers/") - and helper.in_content(response, - "/customer/" - + str(customer2.id) - + "/connected_devices/") and helper.in_content(response, "/customer/" + str(customer2.id) diff --git a/devices/admin.py b/devices/admin.py index f265893..aad4a09 100644 --- a/devices/admin.py +++ b/devices/admin.py @@ -2,7 +2,6 @@ from django.contrib import admin import nested_admin from .models import ( - ConnectedDevice, Device, DeviceCategory, DeviceInNet, @@ -51,12 +50,11 @@ class WarrantyTypeAdmin(admin.ModelAdmin): return {} -class ConnectedDeviceAdmin(nested_admin.NestedModelAdmin): +class DeviceAdmin(nested_admin.NestedModelAdmin): inlines = (DeviceInNetInline, ) -admin.site.register(ConnectedDevice, ConnectedDeviceAdmin) -admin.site.register(Device) +admin.site.register(Device, DeviceAdmin) admin.site.register(DeviceCategory, DeviceCategoryAdmin) admin.site.register(DeviceInNet) admin.site.register(DeviceManufacturer, DeviceManufacturerAdmin) diff --git a/devices/decorators.py b/devices/decorators.py index 866912e..66dc6bb 100644 --- a/devices/decorators.py +++ b/devices/decorators.py @@ -2,7 +2,6 @@ from django.http import HttpResponseForbidden from django.shortcuts import get_object_or_404 from .models import Device -from .models import ConnectedDevice def device_view_permission(old_function): @@ -16,16 +15,3 @@ def device_view_permission(old_function): "You're not allowed to access this device." ) return new_function - - -def connected_device_view_permission(old_function): - def new_function(request, pk, *args, **kwargs): - device = get_object_or_404(ConnectedDevice, pk=pk) - user = request.user - if user.has_perm('customers.view_customer', device.customer): - return old_function(request, pk) - else: - return HttpResponseForbidden( - "You're not allowed to access this device." - ) - return new_function diff --git a/devices/forms.py b/devices/forms.py index 615686b..3d8223e 100644 --- a/devices/forms.py +++ b/devices/forms.py @@ -32,6 +32,7 @@ class DeviceUpdateForm(forms.ModelForm): class Meta: model = Device fields = '__all__' + exclude = ('net',) class WarrantyCreateForm(forms.ModelForm): diff --git a/devices/models/__init__.py b/devices/models/__init__.py index b06d676..d62d572 100644 --- a/devices/models/__init__.py +++ b/devices/models/__init__.py @@ -1,6 +1,5 @@ from .warranty import Warranty, WarrantyType from .device import ( - ConnectedDevice, Device, DeviceCategory, DeviceInNet, diff --git a/devices/models/device.py b/devices/models/device.py index 9614f79..76fdd24 100644 --- a/devices/models/device.py +++ b/devices/models/device.py @@ -57,16 +57,6 @@ class Device(models.Model): null=True, blank=True) installation_date = models.DateField(null=True, blank=True) - - def __str__(self): - return self.name - - def get_absolute_url(self): - from django.urls import reverse - return reverse('device', args=[str(self.id)]) - - -class ConnectedDevice(Device): net = models.ManyToManyField(Net, through='DeviceInNet') @property @@ -82,16 +72,16 @@ class ConnectedDevice(Device): nets.append(ip_addresses) return nets - class Meta: - verbose_name_plural = "Connected Devices" + def __str__(self): + return self.name def get_absolute_url(self): from django.urls import reverse - return reverse('connected_device', args=[str(self.id)]) + return reverse('device', args=[str(self.id)]) class DeviceInNet(models.Model): - device = models.ForeignKey(ConnectedDevice, on_delete=models.CASCADE) + device = models.ForeignKey(Device, on_delete=models.CASCADE) net = models.ForeignKey(Net, on_delete=models.CASCADE) ip = models.GenericIPAddressField(verbose_name="IP", blank=True, null=True) nic = models.CharField(max_length=50, blank=True, verbose_name="NIC") diff --git a/devices/tables.py b/devices/tables.py index c2a8ad5..8b2c492 100644 --- a/devices/tables.py +++ b/devices/tables.py @@ -4,7 +4,6 @@ import django_tables2 as tables from core.tables import CoreTable -from .models import ConnectedDevice from .models import Device @@ -16,14 +15,6 @@ class DevicesTable(CoreTable): model = Device -class ConnectedDevicesTable(CoreTable): - id = tables.Column(visible=False) - name = tables.Column('ConnectedDevice', linkify=True) - - class Meta(CoreTable.Meta): - model = ConnectedDevice - - class WarrantiesTable(CoreTable): customer = tables.Column(linkify=True, orderable=False) device = tables.Column(linkify=True) diff --git a/devices/templates/devices/connected_device_list.html b/devices/templates/devices/connected_device_list.html deleted file mode 100644 index 817a80e..0000000 --- a/devices/templates/devices/connected_device_list.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "core/base.html" %} -{% load render_table from django_tables2 %} -{% block section_title %}List of Connected Devices{% endblock %} -{% block content %} -
-
-
{% csrf_token %} - -
-
-
-
-
- {% render_table devices %} -
-
-{% endblock %} diff --git a/devices/tests/test_connected_device.py b/devices/tests/test_connected_device.py deleted file mode 100644 index 0a86364..0000000 --- a/devices/tests/test_connected_device.py +++ /dev/null @@ -1,10 +0,0 @@ -import pytest -from mixer.backend.django import mixer - -pytestmark = pytest.mark.django_db - - -def test_device_reverse_url(): - device = mixer.blend('devices.ConnectedDevice') - assert (device.get_absolute_url() - == "/connected_device/" + str(device.id) + "/") diff --git a/devices/tests/test_connected_device_detail_view.py b/devices/tests/test_connected_device_detail_view.py index 384cbef..ce6d533 100644 --- a/devices/tests/test_connected_device_detail_view.py +++ b/devices/tests/test_connected_device_detail_view.py @@ -9,35 +9,9 @@ from nets.models import IpStatus pytestmark = pytest.mark.django_db -def test_connected_device_detail_view_not_logged_in(): - response = Client().get('/connected_device/1/') - assert response.status_code == 302 and 'login' in response.url - - -def test_connected_device_detail_view_not_found(create_admin_user): +def test_device_detail_view_net_relation(create_admin_user): create_admin_user() - client = Client() - client.login(username="pharma-admin", password="password") - response = client.get('/connected_device/100/') - assert response.status_code == 404 - - -def test_connected_device_detail_view_no_permission(create_admin_user): - create_admin_user() - customer = mixer.blend('customers.Customer') - connected_device = mixer.blend('devices.ConnectedDevice', - customer=customer) - client = Client() - client.login(username="pharma-admin", password="password") - response = client.get('/connected_device/' - + str(connected_device.id) - + '/') - assert response.status_code == 403 - - -def test_connected_device_detail_view_net_relation(create_admin_user): - create_admin_user() - device = mixer.blend('devices.ConnectedDevice', customer=mixer.SELECT) + device = mixer.blend('devices.Device', customer=mixer.SELECT) net1 = mixer.blend('nets.Net', customer=mixer.SELECT) net2 = mixer.blend('nets.Net', customer=mixer.SELECT) device_in_net1 = mixer.blend('devices.DeviceInNet', @@ -50,15 +24,15 @@ def test_connected_device_detail_view_net_relation(create_admin_user): ip="10.8.89.100") client = Client() client.login(username="pharma-admin", password="password") - response = client.get('/connected_device/' + str(device.id) + '/') + response = client.get('/device/' + str(device.id) + '/') assert (response.status_code == 200 and helper.in_content(response, device_in_net1.ip) and helper.in_content(response, device_in_net2.ip)) -def test_connected_device_detail_view_net_dhcp_relation(create_admin_user): +def test_device_detail_view_net_dhcp_relation(create_admin_user): create_admin_user() - device = mixer.blend('devices.ConnectedDevice', customer=mixer.SELECT) + device = mixer.blend('devices.Device', customer=mixer.SELECT) net1 = mixer.blend('nets.Net', customer=mixer.SELECT) ip_status = IpStatus.objects.filter(name="Dynamic") device_in_net1 = mixer.blend('devices.DeviceInNet', @@ -68,6 +42,6 @@ def test_connected_device_detail_view_net_dhcp_relation(create_admin_user): ip="") client = Client() client.login(username="pharma-admin", password="password") - response = client.get('/connected_device/' + str(device.id) + '/') + response = client.get('/device/' + str(device.id) + '/') assert (response.status_code == 200 and helper.in_content(response, device_in_net1.ip_status)) diff --git a/devices/tests/test_customer_connected_device_detail_view.py b/devices/tests/test_customer_connected_device_detail_view.py deleted file mode 100644 index c8f7991..0000000 --- a/devices/tests/test_customer_connected_device_detail_view.py +++ /dev/null @@ -1,66 +0,0 @@ -import pytest - -from django.test import Client -from mixer.backend.django import mixer - -from core.tests import helper -from customers.models import Customer - -pytestmark = pytest.mark.django_db - - -def test_customer_device_table_not_logged_in(): - response = Client().get('/customer/1/devices/') - assert response.status_code == 302 and 'login' in response.url - - -def test_customer_device_table(create_admin_user): - fixture = create_admin_user() - customer = fixture['customer'] - client = Client() - client.login(username="pharma-admin", password="password") - device = mixer.blend('devices.ConnectedDevice', customer=mixer.SELECT) - response = client.get('/customer/' - + str(customer.id) - + '/connected_devices/') - assert (response.status_code == 200 - and helper.in_content(response, device)) - - -def test_customer_device_table_no_device(create_admin_user): - fixture = create_admin_user() - customer = fixture['customer'] - client = Client() - client.login(username="pharma-admin", password="password") - response = client.get('/customer/' - + str(customer.id) - + '/connected_devices/') - assert (response.status_code == 200 - and helper.not_in_content(response, "Pharma Corp. PC")) - - -def test_customer_device_table_no_permission(create_admin_user): - create_admin_user() - customer = Customer.objects.create(name='Water Corp.') - client = Client() - client.login(username="pharma-admin", password="password") - mixer.blend('devices.ConnectedDevice', customer=customer) - response = client.get('/customer/' - + str(customer.id) - + '/connected_devices/') - assert response.status_code == 403 - - -def test_customer_device_table_multiple_devices(create_admin_user): - fixture = create_admin_user() - customer = fixture['customer'] - client = Client() - client.login(username="pharma-admin", password="password") - device1 = mixer.blend('devices.ConnectedDevice', customer=mixer.SELECT) - device2 = mixer.blend('devices.ConnectedDevice', customer=mixer.SELECT) - response = client.get('/customer/' - + str(customer.id) - + '/connected_devices/') - assert (response.status_code == 200 - and helper.in_content(response, device1) - and helper.in_content(response, device2)) diff --git a/devices/urls.py b/devices/urls.py index 047192a..0f43a8a 100644 --- a/devices/urls.py +++ b/devices/urls.py @@ -4,13 +4,8 @@ from . import views urlpatterns = [ - path('connected_device//', views.connected_device_detail_view, - name='connected_device'), path('customer//devices/', views.devices_table_view, name='devices'), - path('customer//connected_devices/', - views.connected_devices_table_view, - name='connected_devices'), path('device//', views.device_detail_view, name='device'), path('customer//create/device/', views.DeviceCreateFromCustomerView.as_view(), diff --git a/devices/views.py b/devices/views.py index 3e6774c..0976fe3 100644 --- a/devices/views.py +++ b/devices/views.py @@ -14,7 +14,6 @@ from customers.models import Customer from core.utils import get_objects from .decorators import device_view_permission -from .decorators import connected_device_view_permission from .forms import DeviceCreateForm from .forms import DeviceInNetCreateForm @@ -22,12 +21,10 @@ from .forms import DeviceUpdateForm from .forms import WarrantyCreateForm from .forms import WarrantyUpdateForm -from .models import ConnectedDevice from .models import Device from .models import DeviceInNet from .models import Warranty -from .tables import ConnectedDevicesTable from .tables import DevicesTable from .tables import WarrantiesTable @@ -55,29 +52,6 @@ def devices_table_view(request, pk): 'pk': pk}) -@login_required -@connected_device_view_permission -def connected_device_detail_view(request, pk): - device = get_object_or_404(ConnectedDevice, pk=pk) - warranty_relations = Warranty.objects.filter(device=pk) - return render(request, - 'devices/device_details.html', - {'device': device, - 'warranty_relations': warranty_relations, - 'pk': pk}) - - -@login_required -@customer_view_permission -def connected_devices_table_view(request, pk): - table = ConnectedDevicesTable(ConnectedDevice.objects.filter(customer=pk)) - RequestConfig(request).configure(table) - return render(request, - 'devices/connected_device_list.html', - {'devices': table, - 'pk': pk}) - - @login_required def warranties_view(request): table = WarrantiesTable(get_objects("Warranty", request.user)) @@ -178,7 +152,7 @@ class DeviceInNetCreateView(LoginRequiredMixin, CreateView): Set the device and customer dropdown to the device from the previous view and the customer related to the device. """ - self.device = get_object_or_404(ConnectedDevice, id=self.kwargs.get('pk')) + self.device = get_object_or_404(Device, id=self.kwargs.get('pk')) return { 'device': self.device, }