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 %}
-
-
-
- {% 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,
}