remove the ConnectedDevice model
This commit is contained in:
parent
02b8657ba2
commit
17053f586b
|
@ -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')
|
||||
|
|
|
@ -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')],
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -32,6 +32,7 @@ class DeviceUpdateForm(forms.ModelForm):
|
|||
class Meta:
|
||||
model = Device
|
||||
fields = '__all__'
|
||||
exclude = ('net',)
|
||||
|
||||
|
||||
class WarrantyCreateForm(forms.ModelForm):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from .warranty import Warranty, WarrantyType
|
||||
from .device import (
|
||||
ConnectedDevice,
|
||||
Device,
|
||||
DeviceCategory,
|
||||
DeviceInNet,
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
{% extends "core/base.html" %}
|
||||
{% load render_table from django_tables2 %}
|
||||
{% block section_title %}List of Connected Devices{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row mb-3">
|
||||
<div class="col">
|
||||
<form action="{% url 'device_create' pk %}">{% csrf_token %}
|
||||
<input type="submit" value="Add Device" class="btn btn-primary">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
{% render_table devices %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -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) + "/")
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
|
@ -4,13 +4,8 @@ from . import views
|
|||
|
||||
|
||||
urlpatterns = [
|
||||
path('connected_device/<int:pk>/', views.connected_device_detail_view,
|
||||
name='connected_device'),
|
||||
path('customer/<int:pk>/devices/', views.devices_table_view,
|
||||
name='devices'),
|
||||
path('customer/<int:pk>/connected_devices/',
|
||||
views.connected_devices_table_view,
|
||||
name='connected_devices'),
|
||||
path('device/<int:pk>/', views.device_detail_view, name='device'),
|
||||
path('customer/<int:pk>/create/device/',
|
||||
views.DeviceCreateFromCustomerView.as_view(),
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue