@ -1,113 +0,0 @@
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device import Device
|
||||
|
||||
|
||||
class DeviceForm(CommonModelForm):
|
||||
|
||||
prefix = 'device'
|
||||
|
||||
class Meta:
|
||||
model = Device
|
||||
fields = [
|
||||
'id',
|
||||
'name',
|
||||
'device_model',
|
||||
'serial_number',
|
||||
'uuid',
|
||||
'device_type',
|
||||
'organization',
|
||||
'is_virtual',
|
||||
'model_notes',
|
||||
'config',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class DetailForm(DeviceForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'device_model',
|
||||
'serial_number',
|
||||
'uuid',
|
||||
'device_type',
|
||||
'organization',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
'lastinventory',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
'is_virtual',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"software": {
|
||||
"name": "Software",
|
||||
"slug": "software",
|
||||
"sections": []
|
||||
},
|
||||
"tickets": {
|
||||
"name": "Tickets",
|
||||
"slug": "tickets",
|
||||
"sections": []
|
||||
},
|
||||
"notes": {
|
||||
"name": "Notes",
|
||||
"slug": "notes",
|
||||
"sections": []
|
||||
},
|
||||
"config_management": {
|
||||
"name": "Config Management",
|
||||
"slug": "config_management",
|
||||
"sections": []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.fields['lastinventory'] = forms.DateTimeField(
|
||||
label="Last Inventory Date",
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
initial=kwargs['instance'].inventorydate,
|
||||
disabled=True,
|
||||
required=False,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('ITAM:_device_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('ITAM:Devices')
|
@ -1,37 +0,0 @@
|
||||
from django import forms
|
||||
from django.db.models import Q
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device import DeviceOperatingSystem
|
||||
|
||||
|
||||
|
||||
class Update(CommonModelForm):
|
||||
|
||||
prefix = 'operating_system'
|
||||
|
||||
class Meta:
|
||||
model = DeviceOperatingSystem
|
||||
fields = [
|
||||
"id",
|
||||
"version",
|
||||
'operating_system_version',
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if 'instance' in kwargs.keys():
|
||||
|
||||
if kwargs['instance'] is not None:
|
||||
|
||||
self.fields['_created'] = forms.DateTimeField(
|
||||
label="Install Date",
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
initial=kwargs['instance'].installdate,
|
||||
disabled=True
|
||||
)
|
||||
|
@ -1,91 +0,0 @@
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device_models import DeviceModel
|
||||
|
||||
from settings.forms.admin_settings_global import AdminGlobalModels
|
||||
|
||||
|
||||
|
||||
class DeviceModelForm(
|
||||
AdminGlobalModels,
|
||||
CommonModelForm
|
||||
):
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
fields = [
|
||||
'name',
|
||||
'slug',
|
||||
'manufacturer',
|
||||
'id',
|
||||
'organization',
|
||||
'is_global',
|
||||
'model_notes',
|
||||
]
|
||||
|
||||
model = DeviceModel
|
||||
|
||||
|
||||
|
||||
class DetailForm(DeviceModelForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'slug',
|
||||
'manufacturer',
|
||||
'organization',
|
||||
'is_global',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
# "notes": {
|
||||
# "name": "Notes",
|
||||
# "slug": "notes",
|
||||
# "sections": []
|
||||
# },
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('Settings:_device_model_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('Settings:_device_models')
|
@ -1,23 +0,0 @@
|
||||
from django.db.models import Q
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device import DeviceSoftware
|
||||
from itam.models.software import Software
|
||||
|
||||
|
||||
|
||||
class SoftwareAdd(CommonModelForm):
|
||||
|
||||
class Meta:
|
||||
model = DeviceSoftware
|
||||
fields = [
|
||||
'software',
|
||||
'action'
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
organizations = kwargs.pop('organizations')
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.fields['software'].queryset = Software.objects.filter(Q(organization_id__in=organizations) | Q(is_global = True))
|
@ -1,23 +0,0 @@
|
||||
from django.db.models import Q
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device import DeviceSoftware
|
||||
from itam.models.software import Software, SoftwareVersion
|
||||
|
||||
|
||||
class SoftwareUpdate(CommonModelForm):
|
||||
|
||||
class Meta:
|
||||
model = DeviceSoftware
|
||||
fields = [
|
||||
'action',
|
||||
'version',
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.fields['version'].queryset = SoftwareVersion.objects.filter(software_id=self.instance.software.id)
|
||||
|
@ -1,89 +0,0 @@
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.device import DeviceType
|
||||
|
||||
from settings.forms.admin_settings_global import AdminGlobalModels
|
||||
|
||||
|
||||
|
||||
class DeviceTypeForm(
|
||||
AdminGlobalModels,
|
||||
CommonModelForm
|
||||
):
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
fields = [
|
||||
'name',
|
||||
'slug',
|
||||
'id',
|
||||
'organization',
|
||||
'is_global',
|
||||
'model_notes',
|
||||
]
|
||||
|
||||
model = DeviceType
|
||||
|
||||
|
||||
|
||||
class DetailForm(DeviceTypeForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'slug',
|
||||
'organization',
|
||||
'is_global',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
# "notes": {
|
||||
# "name": "Notes",
|
||||
# "slug": "notes",
|
||||
# "sections": []
|
||||
# }
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('Settings:_device_type_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('Settings:_device_types')
|
@ -1,130 +0,0 @@
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.operating_system import OperatingSystem
|
||||
|
||||
|
||||
|
||||
class OperatingSystemForm(CommonModelForm):
|
||||
|
||||
class Meta:
|
||||
|
||||
fields = [
|
||||
"name",
|
||||
'publisher',
|
||||
'slug',
|
||||
'id',
|
||||
'organization',
|
||||
'is_global',
|
||||
'model_notes',
|
||||
]
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
|
||||
|
||||
# class Update(OperatingSystemFormCommon):
|
||||
|
||||
|
||||
# def __init__(self, *args, **kwargs):
|
||||
# super().__init__(*args, **kwargs)
|
||||
|
||||
# self.fields['_created'] = forms.DateTimeField(
|
||||
# label="Created",
|
||||
# input_formats=settings.DATETIME_FORMAT,
|
||||
# initial=kwargs['instance'].created,
|
||||
# disabled=True
|
||||
# )
|
||||
|
||||
# self.fields['_modified'] = forms.DateTimeField(
|
||||
# label="Modified",
|
||||
# input_formats=settings.DATETIME_FORMAT,
|
||||
# initial=kwargs['instance'].modified,
|
||||
# disabled=True
|
||||
# )
|
||||
|
||||
|
||||
# if kwargs['instance'].is_global:
|
||||
|
||||
# self.fields['is_global'].widget.attrs['disabled'] = True
|
||||
|
||||
|
||||
class DetailForm(OperatingSystemForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'publisher',
|
||||
'serial_number',
|
||||
'organization',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"versions": {
|
||||
"name": "Versions",
|
||||
"slug": "versions",
|
||||
"sections": []
|
||||
},
|
||||
"licences": {
|
||||
"name": "Licences",
|
||||
"slug": "licences",
|
||||
"sections": []
|
||||
},
|
||||
"installations": {
|
||||
"name": "Installations",
|
||||
"slug": "installations",
|
||||
"sections": []
|
||||
},
|
||||
"tickets": {
|
||||
"name": "Tickets",
|
||||
"slug": "tickets",
|
||||
"sections": []
|
||||
},
|
||||
"notes": {
|
||||
"name": "Notes",
|
||||
"slug": "notes",
|
||||
"sections": []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('ITAM:_operating_system_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('ITAM:Operating Systems')
|
@ -1,17 +0,0 @@
|
||||
from django.db.models import Q
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.operating_system import OperatingSystemVersion
|
||||
|
||||
|
||||
|
||||
class OperatingSystemVersionForm(CommonModelForm):
|
||||
|
||||
class Meta:
|
||||
|
||||
fields = [
|
||||
'name',
|
||||
]
|
||||
|
||||
model = OperatingSystemVersion
|
@ -1,127 +0,0 @@
|
||||
from django import forms
|
||||
from django.db.models import Q
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.software import Software
|
||||
|
||||
|
||||
|
||||
class SoftwareForm(CommonModelForm):
|
||||
|
||||
class Meta:
|
||||
model = Software
|
||||
fields = [
|
||||
'name',
|
||||
'publisher',
|
||||
'slug',
|
||||
'category',
|
||||
'model_notes',
|
||||
]
|
||||
|
||||
|
||||
class SoftwareChange(SoftwareForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
if not self.instance.is_global:
|
||||
|
||||
|
||||
self.fields['is_global'] = forms.BooleanField(
|
||||
label = 'Is Global',
|
||||
initial = self.instance.is_global
|
||||
)
|
||||
|
||||
self.fields['organization'] = forms.CharField(
|
||||
label = 'Tenant',
|
||||
initial = self.instance.organization
|
||||
)
|
||||
|
||||
|
||||
class DetailForm(SoftwareForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'publisher',
|
||||
'slug',
|
||||
'organization',
|
||||
'is_global',
|
||||
'category',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"versions": {
|
||||
"name": "Versions",
|
||||
"slug": "versions",
|
||||
"sections": []
|
||||
},
|
||||
"licences": {
|
||||
"name": "Licences",
|
||||
"slug": "licences",
|
||||
"sections": []
|
||||
},
|
||||
"tickets": {
|
||||
"name": "Tickets",
|
||||
"slug": "tickets",
|
||||
"sections": []
|
||||
},
|
||||
"notes": {
|
||||
"name": "Notes",
|
||||
"slug": "notes",
|
||||
"sections": []
|
||||
},
|
||||
"installations": {
|
||||
"name": "Installations",
|
||||
"slug": "installations",
|
||||
"sections": []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields[ 'organization' ] = forms.CharField(
|
||||
label = 'Tenant',
|
||||
initial = self.instance.organization
|
||||
)
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('ITAM:_software_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('ITAM:Software')
|
@ -1,88 +0,0 @@
|
||||
from django import forms
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from core.forms.common import CommonModelForm
|
||||
|
||||
from itam.models.software import SoftwareCategory
|
||||
|
||||
from settings.forms.admin_settings_global import AdminGlobalModels
|
||||
|
||||
|
||||
|
||||
class SoftwareCategoryForm(
|
||||
AdminGlobalModels,
|
||||
CommonModelForm
|
||||
):
|
||||
|
||||
class Meta:
|
||||
|
||||
fields = [
|
||||
'name',
|
||||
'slug',
|
||||
'id',
|
||||
'organization',
|
||||
'is_global',
|
||||
'model_notes',
|
||||
]
|
||||
|
||||
model = SoftwareCategory
|
||||
|
||||
|
||||
|
||||
class DetailForm(SoftwareCategoryForm):
|
||||
|
||||
tabs: dict = {
|
||||
"details": {
|
||||
"name": "Details",
|
||||
"slug": "details",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "double",
|
||||
"left": [
|
||||
'name',
|
||||
'slug',
|
||||
'organization',
|
||||
'is_global',
|
||||
'c_created',
|
||||
'c_modified',
|
||||
],
|
||||
"right": [
|
||||
'model_notes',
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
# "notes": {
|
||||
# "name": "Notes",
|
||||
# "slug": "notes",
|
||||
# "sections": []
|
||||
# },
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
self.fields['c_created'] = forms.DateTimeField(
|
||||
label = 'Created',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.created,
|
||||
)
|
||||
|
||||
self.fields['c_modified'] = forms.DateTimeField(
|
||||
label = 'Modified',
|
||||
input_formats=settings.DATETIME_FORMAT,
|
||||
disabled = True,
|
||||
initial = self.instance.modified,
|
||||
)
|
||||
|
||||
self.tabs['details'].update({
|
||||
"edit_url": reverse('Settings:_software_category_change', args=(self.instance.pk,))
|
||||
})
|
||||
|
||||
self.url_index_view = reverse('Settings:_software_categories')
|
@ -1,216 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
<hr />
|
||||
|
||||
<div style="display: block; width: 100%;">
|
||||
<h3>Operating System</h3>
|
||||
<br>
|
||||
{{ operating_system.as_p }}
|
||||
<input type="submit" name="{{ operating_system.prefix }}" value="Submit" />
|
||||
</div>
|
||||
|
||||
|
||||
<div style="display: block; width: 100%;">
|
||||
<h3>Dependent Services</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Ports</th>
|
||||
</tr>
|
||||
{% if services %}
|
||||
{% for service in services %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITIM:_service_view' service.pk %}">{{ service }}</a></td>
|
||||
<td>{% for port in service.port.all %}{{ port }} ({{ port.description}}), {% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor%}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="2"> Nothing Found</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="display: block; width: 100%;">
|
||||
<h3>Device Config</h3>
|
||||
<br>
|
||||
<textarea cols="90" rows="30" readonly>{{ device.config }}</textarea>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="software" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.software %}
|
||||
|
||||
<hr>
|
||||
Installed Software: {{ installed_software }}
|
||||
<input type="button" value="Add Software Action" onclick="window.location='{% url 'ITAM:_device_software_add' device.id %}';">
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Category</th>
|
||||
<th>Action</th>
|
||||
<th>Desired Version</th>
|
||||
<th>Installed Version</th>
|
||||
<th>Installed</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if softwares %}
|
||||
{% for software in softwares %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_software_view' pk=software.software_id %}">{{ software.software }}</a></td>
|
||||
<td>{{ software.software.category }}</td>
|
||||
<td>
|
||||
{% url 'ITAM:_device_software_view' device_id=device.id pk=software.id as icon_link %}
|
||||
{% if software.get_action_display == 'Install' %}
|
||||
{% include 'icons/success_text.html.j2' with icon_text=software.get_action_display icon_link=icon_link %}
|
||||
{% elif software.get_action_display == 'Remove'%}
|
||||
{% include 'icons/cross_text.html.j2' with icon_text=software.get_action_display icon_link=icon_link %}
|
||||
{% else %}
|
||||
{% include 'icons/add_link.html.j2' with icon_text='Add' icon_link=icon_link %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if software.version %}
|
||||
{{ software.version }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if software.installedversion %}
|
||||
{{ software.installedversion }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if software.installed %}
|
||||
{{ software.installed }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<td colspan="5">Nothing Found</td>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1&tab=software">« first</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}&tab=software">previous</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}&tab=software">next</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}&tab=software">last »</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tickets" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.tickets %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if tickets %}
|
||||
{% for ticket in tickets %}
|
||||
<tr>
|
||||
<td>{% concat_strings "#" ticket.ticket.id as ticket_ref %}{{ ticket_ref | markdown | safe}}</td>
|
||||
<td>{% include 'core/ticket/badge_ticket_status.html.j2' with ticket_status_text=ticket.ticket.get_status_display ticket_status=ticket.ticket.get_status_display|ticket_status %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="3">No related tickets exist</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="config_management" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.config_management %}
|
||||
|
||||
<div>
|
||||
<textarea cols="90" rows="30" readonly>{{ config }}</textarea>
|
||||
</div>
|
||||
<br />
|
||||
<hr />
|
||||
<table class="data">
|
||||
<tr>
|
||||
<th>Group</th>
|
||||
<th>Added</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
{% if device.configgroups_set %}
|
||||
{% for group in device.configgroups_set.all %}
|
||||
<tr>
|
||||
<td><a href="{% url 'Config Management:_group_view' pk=group.id %}">{{ group }}</a></td>
|
||||
<td>{{ group.created }}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="3">Nothing Found.</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
@ -1,155 +0,0 @@
|
||||
{% extends 'base.html.j2' %}
|
||||
|
||||
{% block title %}Devices{% endblock %}
|
||||
{% block content_header_icon %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<style>
|
||||
|
||||
a.status_icon {
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
/*background-color: aqua;*/
|
||||
}
|
||||
|
||||
span.status_icon {
|
||||
/* display: inline-block;*/
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
/*background-color: aqua;*/
|
||||
width: auto;
|
||||
align-items: center;
|
||||
/*position: relative;*/
|
||||
vertical-align: middle; padding: auto; margin: 0px
|
||||
}
|
||||
|
||||
.status_icon_ok svg {
|
||||
fill: #319c3a;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
vertical-align: middle;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
border-radius: 11px;
|
||||
/*background-color: #c7e2ca;*/
|
||||
}
|
||||
|
||||
.status_icon_warn svg {
|
||||
fill: #cf9925;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
vertical-align: middle;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
border-radius: 11px;
|
||||
/*background-color: #ffefc5;*/
|
||||
}
|
||||
|
||||
.status_icon_bad svg {
|
||||
fill: #cf3025;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
vertical-align: middle;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
border-radius: 11px;
|
||||
/*background-color: #ffefc5;*/
|
||||
}
|
||||
|
||||
.status_icon_ukn svg {
|
||||
fill: #999;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border: none;
|
||||
border-radius: 11px;
|
||||
/*background-color: #e9e9e9;*/
|
||||
}
|
||||
|
||||
</style>
|
||||
<input type="button" value="New Device" onclick="window.location='{% url 'ITAM:_device_add' %}';">
|
||||
<table class="data">
|
||||
<tr>
|
||||
<th style="width: 50px;"> </th>
|
||||
<th>Name</th>
|
||||
<th>Device Type</th>
|
||||
<th>Manufacturer</th>
|
||||
<th>Model</th>
|
||||
<th>Organization</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
{% for device in devices %}
|
||||
<tr>
|
||||
<td>
|
||||
<span class="status_icon status_icon_ok">
|
||||
{% if device.status == 'OK' %}
|
||||
<span class="status_icon status_icon_ok">
|
||||
{% include 'icons/inventory_status_ok.svg' %}
|
||||
</span>
|
||||
{% elif device.status == 'WARN' %}
|
||||
<span class="status_icon status_icon_warn">
|
||||
{% include 'icons/inventory_status_warning.svg' %}
|
||||
</span>
|
||||
{% elif device.status == 'BAD' %}
|
||||
<span class="status_icon status_icon_bad">
|
||||
{% include 'icons/inventory_status_bad.svg' %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="status_icon status_icon_ukn">
|
||||
{% include 'icons/inventory_status_unknown.svg' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{% url 'ITAM:_device_view' pk=device.id %}">{{ device.name }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if device.device_type %}
|
||||
{{ device.device_type }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.device_model.manufacturer %}
|
||||
<a href="{% url 'Settings:_manufacturer_view' pk=device.device_model.manufacturer.id %}">{{ device.device_model.manufacturer }}</a>
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.device_model.name %}
|
||||
<a href="{% url 'Settings:_device_model_view' pk=device.device_model.id %}">{{ device.device_model.name }}</a>
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{% if software.is_global %}Global{% else %}{{ device.organization }}{% endif %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1">« first</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}">next</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
@ -1,34 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
@ -1,36 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
|
||||
{% csrf_token %}
|
||||
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
@ -1,154 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="versions" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.versions %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Version</th>
|
||||
<th>Installations</th>
|
||||
<th>Vulnerable</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% for version in operating_system_versions %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_operating_system_version_view' operating_system_id=operating_system.id pk=version.id %}">{{ version.name }}</a></td>
|
||||
<td>{% if version.installs == 0%}-{% else %}{{ version.installs }}{% endif %}</td>
|
||||
<td> </td>
|
||||
<td><a href="{% url 'ITAM:_operating_system_version_delete' operating_system_id=operating_system.id pk=version.id %}">DELETE</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="licences" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.licences %}
|
||||
|
||||
{% include 'icons/issue_link.html.j2' with issue=4 %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Available</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
<tr>
|
||||
<td>GPL-3</td>
|
||||
<td>Open Source</td>
|
||||
<td>1 / 5</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MIT</td>
|
||||
<td>Open Source</td>
|
||||
<td>Unlimited</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Windows Device</td>
|
||||
<td>CAL</td>
|
||||
<td>11 / 15</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="installations" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.installations %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Device</th>
|
||||
<th>Organization</th>
|
||||
<th>Version</th>
|
||||
<th title="Date Software Installed">Installed</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% for install in installs %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_device_view' pk=install.device_id %}">{{ install.device }}</a></td>
|
||||
<td>{{ install.organization }}</td>
|
||||
<td>{{ install.version }}</td>
|
||||
<td>
|
||||
{% if install.installdate %}
|
||||
{{ install.installdate }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="tickets" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.tickets %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if tickets %}
|
||||
{% for ticket in tickets %}
|
||||
<tr>
|
||||
<td>{% concat_strings "#" ticket.ticket.id as ticket_ref %}{{ ticket_ref | markdown | safe}}</td>
|
||||
<td>{% include 'core/ticket/badge_ticket_status.html.j2' with ticket_status_text=ticket.ticket.get_status_display ticket_status=ticket.ticket.get_status_display|ticket_status %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="3">No related tickets exist</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
@ -1,51 +0,0 @@
|
||||
{% extends 'base.html.j2' %}
|
||||
|
||||
{% block title %}Operating Systems{% endblock %}
|
||||
{% block content_header_icon %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<input type="button" value="New Operating System" onclick="window.location='{% url 'ITAM:_operating_system_add' %}';">
|
||||
<table class="data">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Publisher</th>
|
||||
<th>Organization</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
{% for operating_system in operating_systems %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_operating_system_view' pk=operating_system.id %}">{{ operating_system.name }}</a></td>
|
||||
<td>
|
||||
{% if operating_system.publisher %}
|
||||
<a href="{% url 'Settings:_manufacturer_view' pk=operating_system.publisher.id %}">{{ operating_system.publisher }}</a>
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{% if operating_system.is_global %}Global{% else %}{{ operating_system.organization }}{% endif %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1">« first</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}">next</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -1,177 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="versions" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.versions %}
|
||||
|
||||
<input type="button" value="New Software Version" onclick="window.location='{% url 'ITAM:_software_version_add' pk=software.id %}';">
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Version</th>
|
||||
<th>Installations</th>
|
||||
<th>Vulnerable</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% for version in software_versions %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_software_version_view' software_id=software.id pk=version.id %}">{{ version.name }}</a></td>
|
||||
<td>{{ version.installs }}</td>
|
||||
<td>{% include 'icons/issue_link.html.j2' with issue=3 %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="licences" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.licences %}
|
||||
|
||||
{% include 'icons/issue_link.html.j2' with issue=4 %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Available</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
<tr>
|
||||
<td>GPL-3</td>
|
||||
<td>Open Source</td>
|
||||
<td>1 / 5</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MIT</td>
|
||||
<td>Open Source</td>
|
||||
<td>Unlimited</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Windows Device</td>
|
||||
<td>CAL</td>
|
||||
<td>11 / 15</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="tickets" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.tickets %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if tickets %}
|
||||
{% for ticket in tickets %}
|
||||
<tr>
|
||||
<td>{% concat_strings "#" ticket.ticket.id as ticket_ref %}{{ ticket_ref | markdown | safe}}</td>
|
||||
<td>{% include 'core/ticket/badge_ticket_status.html.j2' with ticket_status_text=ticket.ticket.get_status_display ticket_status=ticket.ticket.get_status_display|ticket_status %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="3">No related tickets exist</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="installations" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.installations %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Device</th>
|
||||
<th>Organization</th>
|
||||
<th title="Not Set/Install/Remove">Action</th>
|
||||
<th>Installed Version</th>
|
||||
<th title="Date Software Installed">Install Date</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if device_software %}
|
||||
{% for device in device_software %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_device_view' pk=device.device.id %}">{{ device.device }}</a></td>
|
||||
<td>{{ device.organization }}</td>
|
||||
<td>
|
||||
{% if device.get_action_display == 'Install' %}
|
||||
{% include 'icons/success_text.html.j2' with icon_text=device.get_action_display %}
|
||||
{% elif device.get_action_display == 'Remove'%}
|
||||
{% include 'icons/cross_text.html.j2' with icon_text=device.get_action_display %}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.installedversion %}
|
||||
{{ device.installedversion }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.installed %}
|
||||
{{ device.installed }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="6">Nothing Found</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
@ -1,150 +0,0 @@
|
||||
{% extends 'detail.html.j2' %}
|
||||
|
||||
{% load json %}
|
||||
{% load markdown %}
|
||||
|
||||
|
||||
{% block tabs %}
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div id="details" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.details %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="versions" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.versions %}
|
||||
|
||||
<input type="button" value="New Software Version" onclick="window.location='{% url 'ITAM:_software_version_add' pk=software.id %}';">
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Version</th>
|
||||
<th>Installations</th>
|
||||
<th>Vulnerable</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% for version in software_versions %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_software_version_view' software_id=software.id pk=version.id %}">{{ version.name }}</a></td>
|
||||
<td>{{ version.installs }}</td>
|
||||
<td>{% include 'icons/issue_link.html.j2' with issue=3 %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="licences" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.licences %}
|
||||
|
||||
{% include 'icons/issue_link.html.j2' with issue=4 %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Available</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
<tr>
|
||||
<td>GPL-3</td>
|
||||
<td>Open Source</td>
|
||||
<td>1 / 5</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MIT</td>
|
||||
<td>Open Source</td>
|
||||
<td>Unlimited</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Windows Device</td>
|
||||
<td>CAL</td>
|
||||
<td>11 / 15</td>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="notes" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.notes %}
|
||||
|
||||
{{ notes_form }}
|
||||
<input type="submit" name="{{notes_form.prefix}}" value="Submit" />
|
||||
<div class="comments">
|
||||
{% if notes %}
|
||||
{% for note in notes%}
|
||||
{% include 'note.html.j2' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="installations" class="content-tab">
|
||||
|
||||
{% include 'content/section.html.j2' with tab=form.tabs.installations %}
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Device</th>
|
||||
<th>Organization</th>
|
||||
<th title="Not Set/Install/Remove">Action</th>
|
||||
<th>Installed Version</th>
|
||||
<th title="Date Software Installed">Install Date</th>
|
||||
<th> </th>
|
||||
</thead>
|
||||
{% if device_software %}
|
||||
{% for device in device_software %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_device_view' pk=device.device.id %}">{{ device.device }}</a></td>
|
||||
<td>{{ device.organization }}</td>
|
||||
<td>
|
||||
{% if device.get_action_display == 'Install' %}
|
||||
{% include 'icons/success_text.html.j2' with icon_text=device.get_action_display %}
|
||||
{% elif device.get_action_display == 'Remove'%}
|
||||
{% include 'icons/cross_text.html.j2' with icon_text=device.get_action_display %}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.installedversion %}
|
||||
{{ device.installedversion }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if device.installed %}
|
||||
{{ device.installed }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="6">Nothing Found</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
@ -1,53 +0,0 @@
|
||||
{% extends 'base.html.j2' %}
|
||||
|
||||
{% block title %}Software{% endblock %}
|
||||
{% block content_header_icon %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<input type="button" value="New Software" onclick="window.location='{% url 'ITAM:_software_add' %}';">
|
||||
<table class="data">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Publisher</th>
|
||||
<th>Category</th>
|
||||
<th>Organization</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
{% for software in softwares %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ITAM:_software_view' pk=software.id %}">{{ software.name }}</a></td>
|
||||
<td>
|
||||
{% if software.publisher %}
|
||||
<a href="{% url 'Settings:_manufacturer_view' pk=software.publisher.id %}">{{ software.publisher }}</a>
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ software.category }}</td>
|
||||
<td>{% if software.is_global %}Global{% else %}{{ software.organization }}{% endif %}</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_obj.has_previous %}
|
||||
<a href="?page=1">« first</a>
|
||||
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
{% if page_obj.has_next %}
|
||||
<a href="?page={{ page_obj.next_page_number }}">next</a>
|
||||
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -1,195 +0,0 @@
|
||||
import django
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.device import Device
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
class DevicePermissions(TestCase, ModelPermissions):
|
||||
|
||||
|
||||
model = Device
|
||||
|
||||
app_label = 'itam'
|
||||
|
||||
app_namespace = 'ITAM'
|
||||
|
||||
url_name_view = '_device_view'
|
||||
|
||||
url_name_add = '_device_add'
|
||||
|
||||
url_name_change = '_device_change'
|
||||
|
||||
url_name_delete = '_device_delete'
|
||||
|
||||
url_delete_response = reverse('ITAM:Devices')
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a device
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'deviceone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'device': 'device', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'device': 'device'}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'device': 'device'}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,28 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
class DeviceViews(
|
||||
TestCase,
|
||||
PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.device'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = 'itam.views.device'
|
||||
change_view = 'Change'
|
||||
|
||||
delete_module = 'itam.views.device'
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = 'itam.views.device'
|
||||
display_view = 'View'
|
||||
|
||||
index_module = 'itam.views.device'
|
||||
index_view = 'IndexView'
|
@ -1,197 +0,0 @@
|
||||
import django
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase, Client
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.device import DeviceModel
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
|
||||
class DeviceModelPermissions(TestCase, ModelPermissions):
|
||||
|
||||
model = DeviceModel
|
||||
|
||||
model_name = 'devicemodel'
|
||||
app_label = 'itam'
|
||||
|
||||
|
||||
app_namespace = 'Settings'
|
||||
|
||||
url_name_view = '_device_model_view'
|
||||
|
||||
url_name_add = '_device_model_add'
|
||||
|
||||
url_name_change = '_device_model_change'
|
||||
|
||||
url_name_delete = '_device_model_delete'
|
||||
|
||||
url_delete_response = reverse('Settings:_device_models')
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a device
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'deviceone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'devicemodel': 'devicemodel', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'devicemodel': 'devicemodel', 'organization': self.organization.id}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'devicemodel': 'devicemodel', 'organization': self.organization.id}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,29 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
|
||||
class DeviceModelViews(
|
||||
TestCase,
|
||||
PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.device_model'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
index_module = 'settings.views.device_models'
|
||||
index_view = 'Index'
|
@ -1,35 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
|
||||
class DeviceOperatingSystemViews(
|
||||
TestCase,
|
||||
# PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.device_model'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
index_module = 'settings.views.device_models'
|
||||
index_view = 'Index'
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="refactor moddel views to proper CRUD views")
|
||||
def test_dummy(self):
|
||||
|
||||
pass
|
@ -1,28 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import ModelAdd, ModelChange, ModelDisplay
|
||||
|
||||
|
||||
|
||||
class DeviceSoftwareViews(
|
||||
TestCase,
|
||||
ModelAdd,
|
||||
ModelChange,
|
||||
ModelDisplay
|
||||
):
|
||||
|
||||
add_module = 'itam.views.device'
|
||||
add_view = 'SoftwareAdd'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'SoftwareView'
|
||||
|
||||
# delete_module = add_module
|
||||
# delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'SoftwareView'
|
@ -1,194 +0,0 @@
|
||||
import django
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase, Client
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.device import DeviceType
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
|
||||
class DeviceTypePermissions(TestCase, ModelPermissions):
|
||||
|
||||
model = DeviceType
|
||||
|
||||
app_namespace = 'Settings'
|
||||
|
||||
url_name_view = '_device_type_view'
|
||||
|
||||
url_name_add = '_device_type_add'
|
||||
|
||||
url_name_change = '_device_type_change'
|
||||
|
||||
url_name_delete = '_device_type_delete'
|
||||
|
||||
url_delete_response = reverse('Settings:_device_types')
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a device
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'deviceone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'device': 'device', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'device': 'device', 'organization': self.organization.id}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'device': 'device', 'organization': self.organization.id}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,32 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import ModelAdd, ModelChange, ModelDelete, ModelDisplay
|
||||
|
||||
|
||||
|
||||
class DeviceTypeViews(
|
||||
TestCase,
|
||||
ModelAdd,
|
||||
ModelChange,
|
||||
ModelDelete,
|
||||
ModelDisplay
|
||||
):
|
||||
|
||||
add_module = 'itam.views.device_type'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
# index_module = 'settings.views.device_models'
|
||||
# index_view = 'Index'
|
@ -1,194 +0,0 @@
|
||||
import django
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase, Client
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.operating_system import OperatingSystem
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
|
||||
class OperatingSystemPermissions(TestCase, ModelPermissions):
|
||||
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
app_namespace = 'ITAM'
|
||||
|
||||
url_name_view = '_operating_system_view'
|
||||
|
||||
url_name_add = '_operating_system_add'
|
||||
|
||||
url_name_change = '_operating_system_change'
|
||||
|
||||
url_name_delete = '_operating_system_delete'
|
||||
|
||||
url_delete_response = reverse('ITAM:Operating Systems')
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a device
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'deviceone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'operating_system': 'operating_system', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'operating_system': 'operating_system', 'organization': self.organization.id}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'operating_system': 'operating_system', 'organization': self.organization.id}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,29 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
|
||||
class OperatingSystemViews(
|
||||
TestCase,
|
||||
PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.operating_system'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
index_module = 'settings.views.device_models'
|
||||
index_view = 'Index'
|
@ -1,32 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import ModelAdd, ModelChange, ModelDelete, ModelDisplay
|
||||
|
||||
|
||||
|
||||
class OperatingSystemVersionViews(
|
||||
TestCase,
|
||||
ModelAdd,
|
||||
ModelChange,
|
||||
ModelDelete,
|
||||
ModelDisplay
|
||||
):
|
||||
|
||||
add_module = 'itam.views.operating_system_version'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
# index_module = 'settings.views.device_models'
|
||||
# index_view = 'Index'
|
@ -1,194 +0,0 @@
|
||||
import django
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase, Client
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.software import Software
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
|
||||
class SoftwarePermissions(TestCase, ModelPermissions):
|
||||
|
||||
model = Software
|
||||
|
||||
app_namespace = 'ITAM'
|
||||
|
||||
url_name_view = '_software_view'
|
||||
|
||||
url_name_add = '_software_add'
|
||||
|
||||
url_name_change = '_software_change'
|
||||
|
||||
url_name_delete = '_software_delete'
|
||||
|
||||
url_delete_response = reverse('ITAM:Software')
|
||||
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a software
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'softwareone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'software': 'software', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'software': 'software', 'organization': self.organization.id}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'software': 'software', 'organization': self.organization.id}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model._meta.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.model._meta.app_label,
|
||||
model = self.model._meta.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,29 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
|
||||
class SoftwareViews(
|
||||
TestCase,
|
||||
PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.software'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
index_module = add_module
|
||||
index_view = 'IndexView'
|
@ -1,196 +0,0 @@
|
||||
import django
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import AnonymousUser, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase, Client
|
||||
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
from access.models.team import Team
|
||||
from access.models.team_user import TeamUsers
|
||||
|
||||
from centurion.tests.abstract.model_permissions import ModelPermissions
|
||||
|
||||
from itam.models.software import SoftwareCategory
|
||||
|
||||
User = django.contrib.auth.get_user_model()
|
||||
|
||||
|
||||
|
||||
class SoftwareCategoryPermissions(TestCase, ModelPermissions):
|
||||
|
||||
model = SoftwareCategory
|
||||
|
||||
model_name = 'softwarecategory'
|
||||
app_label = 'itam'
|
||||
|
||||
app_namespace = 'Settings'
|
||||
|
||||
url_name_view = '_software_category_view'
|
||||
|
||||
url_name_add = '_software_category_add'
|
||||
|
||||
url_name_change = '_software_category_change'
|
||||
|
||||
url_name_delete = '_software_category_delete'
|
||||
|
||||
url_delete_response = reverse('Settings:_software_categories')
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(self):
|
||||
"""Setup Test
|
||||
|
||||
1. Create an organization for user and item
|
||||
. create an organization that is different to item
|
||||
2. Create a softwarecategory
|
||||
3. create teams with each permission: view, add, change, delete
|
||||
4. create a user per team
|
||||
"""
|
||||
|
||||
organization = Organization.objects.create(name='test_org')
|
||||
|
||||
self.organization = organization
|
||||
|
||||
different_organization = Organization.objects.create(name='test_different_organization')
|
||||
|
||||
|
||||
self.item = self.model.objects.create(
|
||||
organization=organization,
|
||||
name = 'softwarecategoryone'
|
||||
)
|
||||
|
||||
|
||||
self.url_view_kwargs = {'pk': self.item.id}
|
||||
|
||||
# self.url_add_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.add_data = {'softwarecategory': 'softwarecategory', 'organization': self.organization.id}
|
||||
|
||||
self.url_change_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.change_data = {'softwarecategory': 'softwarecategory', 'organization': self.organization.id}
|
||||
|
||||
self.url_delete_kwargs = {'pk': self.item.id}
|
||||
|
||||
self.delete_data = {'softwarecategory': 'softwarecategory', 'organization': self.organization.id}
|
||||
|
||||
|
||||
view_permissions = Permission.objects.get(
|
||||
codename = 'view_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
view_team = Team.objects.create(
|
||||
team_name = 'view_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
view_team.permissions.set([view_permissions])
|
||||
|
||||
|
||||
|
||||
add_permissions = Permission.objects.get(
|
||||
codename = 'add_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
add_team = Team.objects.create(
|
||||
team_name = 'add_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
add_team.permissions.set([add_permissions])
|
||||
|
||||
|
||||
|
||||
change_permissions = Permission.objects.get(
|
||||
codename = 'change_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
change_team = Team.objects.create(
|
||||
team_name = 'change_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
change_team.permissions.set([change_permissions])
|
||||
|
||||
|
||||
|
||||
delete_permissions = Permission.objects.get(
|
||||
codename = 'delete_' + self.model_name,
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = self.app_label,
|
||||
model = self.model_name,
|
||||
)
|
||||
)
|
||||
|
||||
delete_team = Team.objects.create(
|
||||
team_name = 'delete_team',
|
||||
organization = organization,
|
||||
)
|
||||
|
||||
delete_team.permissions.set([delete_permissions])
|
||||
|
||||
|
||||
self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password")
|
||||
|
||||
|
||||
self.view_user = User.objects.create_user(username="test_user_view", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = view_team,
|
||||
user = self.view_user
|
||||
)
|
||||
|
||||
self.add_user = User.objects.create_user(username="test_user_add", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = add_team,
|
||||
user = self.add_user
|
||||
)
|
||||
|
||||
self.change_user = User.objects.create_user(username="test_user_change", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = change_team,
|
||||
user = self.change_user
|
||||
)
|
||||
|
||||
self.delete_user = User.objects.create_user(username="test_user_delete", password="password")
|
||||
teamuser = TeamUsers.objects.create(
|
||||
team = delete_team,
|
||||
user = self.delete_user
|
||||
)
|
||||
|
||||
|
||||
self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password")
|
||||
|
||||
|
||||
different_organization_team = Team.objects.create(
|
||||
team_name = 'different_organization_team',
|
||||
organization = different_organization,
|
||||
)
|
||||
|
||||
different_organization_team.permissions.set([
|
||||
view_permissions,
|
||||
add_permissions,
|
||||
change_permissions,
|
||||
delete_permissions,
|
||||
])
|
||||
|
||||
TeamUsers.objects.create(
|
||||
team = different_organization_team,
|
||||
user = self.different_organization_user
|
||||
)
|
@ -1,29 +0,0 @@
|
||||
import pytest
|
||||
import unittest
|
||||
import requests
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from centurion.tests.abstract.models import PrimaryModel
|
||||
|
||||
|
||||
|
||||
class SoftwareCategoryViews(
|
||||
TestCase,
|
||||
PrimaryModel
|
||||
):
|
||||
|
||||
add_module = 'itam.views.software'
|
||||
add_view = 'Add'
|
||||
|
||||
change_module = add_module
|
||||
change_view = 'View'
|
||||
|
||||
delete_module = add_module
|
||||
delete_view = 'Delete'
|
||||
|
||||
display_module = add_module
|
||||
display_view = 'View'
|
||||
|
||||
index_module = 'settings.views.software_categories'
|
||||
index_view = 'Index'
|
@ -1,39 +0,0 @@
|
||||
from django.urls import path
|
||||
|
||||
from .views import device, software, software_version, operating_system, operating_system_version
|
||||
|
||||
app_name = "ITAM"
|
||||
urlpatterns = [
|
||||
|
||||
path("device/", device.IndexView.as_view(), name="Devices"),
|
||||
|
||||
path("device/<int:pk>/", device.View.as_view(), name="_device_view"),
|
||||
path("device/<int:pk>/edit", device.Change.as_view(), name="_device_change"),
|
||||
path("device/<int:pk>/software/add", device.SoftwareAdd.as_view(), name="_device_software_add"),
|
||||
path("device/<int:device_id>/software/<int:pk>", device.SoftwareView.as_view(), name="_device_software_view"),
|
||||
path("device/<int:pk>/delete", device.Delete.as_view(), name="_device_delete"),
|
||||
path("device/add/", device.Add.as_view(), name="_device_add"),
|
||||
|
||||
|
||||
path("operating_system", operating_system.IndexView.as_view(), name="Operating Systems"),
|
||||
path("operating_system/<int:pk>", operating_system.View.as_view(), name="_operating_system_view"),
|
||||
path("operating_system/<int:pk>/edit", operating_system.Change.as_view(), name="_operating_system_change"),
|
||||
path("operating_system/add", operating_system.Add.as_view(), name="_operating_system_add"),
|
||||
path("operating_system/delete/<int:pk>", operating_system.Delete.as_view(), name="_operating_system_delete"),
|
||||
|
||||
|
||||
path("operating_system/<int:operating_system_id>/version/<int:pk>", operating_system_version.View.as_view(), name="_operating_system_version_view"),
|
||||
path("operating_system/<int:pk>/version/add", operating_system_version.Add.as_view(), name="_operating_system_version_add"),
|
||||
path("operating_system/<int:operating_system_id>/version/<int:pk>/delete", operating_system_version.Delete.as_view(), name="_operating_system_version_delete"),
|
||||
|
||||
|
||||
|
||||
path("software/", software.IndexView.as_view(), name="Software"),
|
||||
path("software/<int:pk>/", software.View.as_view(), name="_software_view"),
|
||||
path("software/<int:pk>/change", software.Change.as_view(), name="_software_change"),
|
||||
path("software/<int:pk>/delete", software.Delete.as_view(), name="_software_delete"),
|
||||
path("software/<int:pk>/version/add", software_version.Add.as_view(), name="_software_version_add"),
|
||||
path("software/<int:software_id>/version/<int:pk>", software_version.View.as_view(), name="_software_version_view"),
|
||||
path("software/add/", software.Add.as_view(), name="_software_add"),
|
||||
|
||||
]
|
@ -1,373 +0,0 @@
|
||||
import json
|
||||
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.core.paginator import Paginator
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from access.models.tenant import Tenant as Organization
|
||||
|
||||
from ..models.device import Device, DeviceSoftware, DeviceOperatingSystem
|
||||
from ..models.software import Software
|
||||
|
||||
from core.forms.comment import AddNoteForm
|
||||
from core.models.notes import Notes
|
||||
from core.models.ticket.ticket_linked_items import Ticket, TicketLinkedItem
|
||||
from core.views.common import AddView, ChangeView, DeleteView, IndexView
|
||||
|
||||
from itam.forms.device_softwareadd import SoftwareAdd
|
||||
from itam.forms.device_softwareupdate import SoftwareUpdate
|
||||
from itam.forms.device.device import DetailForm, DeviceForm
|
||||
from itam.forms.device.operating_system import Update as OperatingSystemForm
|
||||
|
||||
from itim.models.services import Service
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
|
||||
class IndexView(IndexView):
|
||||
|
||||
model = Device
|
||||
|
||||
permission_required = [
|
||||
'itam.view_device'
|
||||
]
|
||||
|
||||
template_name = 'itam/device_index.html.j2'
|
||||
|
||||
context_object_name = "devices"
|
||||
|
||||
paginate_by = 10
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_docs_path'] = self.model._meta.app_label + '/' + self.model._meta.model_name + '/'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
|
||||
return Device.objects.filter().order_by('name')
|
||||
|
||||
else:
|
||||
|
||||
return Device.objects.filter().order_by('name')
|
||||
|
||||
|
||||
|
||||
def _get_form(request, formcls, prefix, **kwargs):
|
||||
data = request.POST if prefix in request.POST else None
|
||||
return formcls(data, prefix=prefix, **kwargs)
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
model = Device
|
||||
|
||||
permission_required = [
|
||||
'itam.view_device',
|
||||
]
|
||||
|
||||
template_name = 'itam/device.html.j2'
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
context_object_name = "device"
|
||||
|
||||
paginate_by = 10
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
try:
|
||||
operating_system_version = DeviceOperatingSystem.objects.get(device=self.kwargs['pk'])
|
||||
|
||||
except DeviceOperatingSystem.DoesNotExist:
|
||||
|
||||
operating_system_version = None
|
||||
|
||||
if operating_system_version:
|
||||
|
||||
context['operating_system'] = OperatingSystemForm(prefix='operating_system', instance=operating_system_version)
|
||||
|
||||
else:
|
||||
|
||||
context['operating_system'] = OperatingSystemForm(prefix='operating_system')
|
||||
|
||||
context['services'] = Service.objects.filter(device=self.kwargs['pk'])
|
||||
|
||||
context['tickets'] = TicketLinkedItem.objects.filter(
|
||||
item = int(self.kwargs['pk']),
|
||||
item_type = TicketLinkedItem.Modules.DEVICE
|
||||
)
|
||||
|
||||
softwares = DeviceSoftware.objects.filter(device=self.kwargs['pk'])
|
||||
softwares = Paginator(softwares, 10)
|
||||
|
||||
context['installed_software'] = len(DeviceSoftware.objects.filter(device=self.kwargs['pk']))
|
||||
|
||||
if 'page' in self.request.GET:
|
||||
|
||||
context['page_number'] = int(self.request.GET.get("page"))
|
||||
|
||||
else:
|
||||
context['page_number'] = 1
|
||||
|
||||
|
||||
if 'tab' in self.request.GET:
|
||||
|
||||
context['tab'] = str(self.request.GET.get("tab")).lower()
|
||||
|
||||
else:
|
||||
context['tab'] = None
|
||||
|
||||
context['page_obj'] = softwares.get_page(context['page_number'])
|
||||
|
||||
context['softwares'] = softwares.page(context['page_number']).object_list
|
||||
|
||||
context['notes_form'] = AddNoteForm(prefix='note')
|
||||
|
||||
context['notes'] = Notes.objects.filter(device=self.kwargs['pk'])
|
||||
|
||||
config = self.object.get_configuration
|
||||
context['config'] = json.dumps(config, indent=4, sort_keys=True)
|
||||
|
||||
|
||||
context['model_pk'] = self.kwargs['pk']
|
||||
context['model_name'] = self.model._meta.verbose_name.replace(' ', '')
|
||||
|
||||
context['model_delete_url'] = reverse('ITAM:_device_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
device = Device.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
try:
|
||||
|
||||
existing_os = DeviceOperatingSystem.objects.get(device=self.kwargs['pk'])
|
||||
|
||||
except DeviceOperatingSystem.DoesNotExist:
|
||||
|
||||
existing_os = None
|
||||
|
||||
operating_system = OperatingSystemForm(request.POST, prefix='operating_system', instance=existing_os)
|
||||
|
||||
if operating_system.is_bound and operating_system.is_valid():
|
||||
|
||||
if request.user.has_perm('itam.change_device'):
|
||||
|
||||
operating_system.instance.organization = device.organization
|
||||
operating_system.instance.device = device
|
||||
|
||||
operating_system.save()
|
||||
|
||||
|
||||
notes = AddNoteForm(request.POST, prefix='note')
|
||||
|
||||
if notes.is_bound and notes.is_valid() and notes.instance.note != '':
|
||||
|
||||
if request.user.has_perm('core.add_notes'):
|
||||
|
||||
notes.instance.organization = device.organization
|
||||
notes.instance.device = device
|
||||
notes.instance.usercreated = request.user
|
||||
|
||||
notes.save()
|
||||
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/device/{self.kwargs['pk']}/"
|
||||
|
||||
|
||||
|
||||
class SoftwareView(ChangeView):
|
||||
model = DeviceSoftware
|
||||
permission_required = [
|
||||
'itam.view_devicesoftware'
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
|
||||
context_object_name = "devicesoftware"
|
||||
|
||||
form_class = SoftwareUpdate
|
||||
|
||||
|
||||
def form_valid(self, form):
|
||||
device = Device.objects.get(pk=self.kwargs['device_id'])
|
||||
|
||||
form.instance.organization_id = device.organization.id
|
||||
form.instance.device_id = self.kwargs['device_id']
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/device/{self.kwargs['device_id']}/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Edit Software Action'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = DeviceForm
|
||||
|
||||
model = Device
|
||||
permission_required = [
|
||||
'itam.add_device',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
return {
|
||||
'organization': UserSettings.objects.get(user = self.request.user).default_organization
|
||||
}
|
||||
|
||||
def form_valid(self, form):
|
||||
form.instance.is_global = False
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/device/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Device'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class SoftwareAdd(AddView):
|
||||
model = DeviceSoftware
|
||||
permission_required = [
|
||||
'itam.add_devicesoftware',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
# fields = [
|
||||
# 'software',
|
||||
# 'action'
|
||||
# ]
|
||||
|
||||
form_class = SoftwareAdd
|
||||
|
||||
|
||||
def form_valid(self, form):
|
||||
device = Device.objects.get(pk=self.kwargs['pk'])
|
||||
form.instance.organization_id = device.organization.id
|
||||
form.instance.device_id = self.kwargs['pk']
|
||||
|
||||
software = Software.objects.get(pk=form.instance.software.id)
|
||||
|
||||
if DeviceSoftware.objects.get(device=device, software=software):
|
||||
|
||||
|
||||
software_version = DeviceSoftware.objects.get(
|
||||
device=device,
|
||||
software=software
|
||||
)
|
||||
|
||||
software_version.action = form.instance.action
|
||||
software_version.save()
|
||||
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
else:
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
device = Device.objects.get(pk=self.kwargs['pk'])
|
||||
kwargs['organizations'] = [ device.organization.id ]
|
||||
return kwargs
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/device/{self.kwargs['pk']}/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Software Action'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = Device
|
||||
permission_required = [
|
||||
'itam.delete_device',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/device/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
model = Device
|
||||
permission_required = [
|
||||
'itam.change_device',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
form_class = DeviceForm
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_device_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Edit ' + self.object.name
|
||||
|
||||
return context
|
@ -1,133 +0,0 @@
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from itam.forms.device_model import DetailForm, DeviceModelForm
|
||||
from itam.models.device_models import DeviceModel
|
||||
|
||||
from core.views.common import AddView, ChangeView, DeleteView
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
|
||||
form_class = DeviceModelForm
|
||||
|
||||
context_object_name = "device_model"
|
||||
|
||||
model = DeviceModel
|
||||
|
||||
permission_required = [
|
||||
'itam.change_devicemodel',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_model_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
context_object_name = "device_model"
|
||||
|
||||
model = DeviceModel
|
||||
|
||||
permission_required = [
|
||||
'itam.view_devicemodel',
|
||||
]
|
||||
|
||||
template_name = 'itam/device_model.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_pk'] = self.kwargs['pk']
|
||||
context['model_name'] = self.model._meta.verbose_name.replace(' ', '')
|
||||
|
||||
context['model_delete_url'] = reverse('Settings:_device_model_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_model_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
@method_decorator(auth_decorator.permission_required("itam.change_devicemodel", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = DeviceModelForm
|
||||
|
||||
model = DeviceModel
|
||||
|
||||
permission_required = [
|
||||
'itam.add_devicemodel',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
|
||||
return {
|
||||
'organization': UserSettings.objects.get(user = self.request.user).default_organization
|
||||
}
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_models')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Device Model'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = DeviceModel
|
||||
permission_required = [
|
||||
'itam.delete_devicemodel',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_models')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
@ -1,129 +0,0 @@
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from core.views.common import AddView, ChangeView, DeleteView, IndexView
|
||||
|
||||
from itam.models.device import DeviceType
|
||||
from itam.forms.device_type import DetailForm, DeviceTypeForm
|
||||
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = DeviceTypeForm
|
||||
|
||||
model = DeviceType
|
||||
|
||||
permission_required = [
|
||||
'itam.add_devicetype',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_types')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Device Type'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
|
||||
form_class = DeviceTypeForm
|
||||
|
||||
model = DeviceType
|
||||
|
||||
permission_required = [
|
||||
'itam.change_devicetype'
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
context_object_name = "device_category"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_delete_url'] = reverse('Settings:_device_type_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_type_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = DeviceType
|
||||
permission_required = [
|
||||
'itam.delete_devicetype',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
# fields = [
|
||||
# 'name',
|
||||
# 'organization',
|
||||
# 'is_global'
|
||||
# ]
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_types')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
model = DeviceType
|
||||
|
||||
permission_required = [
|
||||
'itam.view_devicetype',
|
||||
]
|
||||
|
||||
template_name = 'itam/device_type.html.j2'
|
||||
|
||||
context_object_name = "device_category"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_delete_url'] = reverse('Settings:_device_type_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_device_type_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
@method_decorator(auth_decorator.permission_required("itam.change_devicetype", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
@ -1,233 +0,0 @@
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.db.models import Count, Q
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from core.forms.comment import AddNoteForm
|
||||
from core.models.notes import Notes
|
||||
from core.models.ticket.ticket_linked_items import Ticket, TicketLinkedItem
|
||||
from core.views.common import AddView, ChangeView, DeleteView, IndexView
|
||||
|
||||
from itam.models.device import DeviceOperatingSystem
|
||||
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
|
||||
from itam.forms.operating_system.update import DetailForm, OperatingSystemForm
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = OperatingSystemForm
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
permission_required = [
|
||||
'itam.add_operatingsystem',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
|
||||
return {
|
||||
'organization': UserSettings.objects.get(user = self.request.user).default_organization
|
||||
}
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:Operating Systems')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Operating System'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
|
||||
context_object_name = "operating_system"
|
||||
|
||||
form_class = OperatingSystemForm
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
permission_required = [
|
||||
'itam.change_operatingsystem',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
@method_decorator(auth_decorator.permission_required("itam.change_operatingsystem", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
operatingsystem = OperatingSystem.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
notes = AddNoteForm(request.POST, prefix='note')
|
||||
|
||||
if notes.is_bound and notes.is_valid() and notes.instance.note != '':
|
||||
|
||||
notes.instance.organization = operatingsystem.organization
|
||||
notes.instance.operatingsystem = operatingsystem
|
||||
notes.instance.usercreated = request.user
|
||||
|
||||
notes.save()
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_operating_system_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
permission_required = [
|
||||
'itam.delete_operatingsystem',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:Operating Systems')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_pk'] = self.kwargs['pk']
|
||||
context['model_name'] = self.model._meta.verbose_name.replace(' ', '')
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class IndexView(IndexView):
|
||||
model = OperatingSystem
|
||||
permission_required = [
|
||||
'itam.view_operatingsystem'
|
||||
]
|
||||
template_name = 'itam/operating_system_index.html.j2'
|
||||
context_object_name = "operating_systems"
|
||||
paginate_by = 10
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_docs_path'] = self.model._meta.app_label + '/operating_system/'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
|
||||
return OperatingSystem.objects.filter().order_by('name')
|
||||
|
||||
else:
|
||||
|
||||
return OperatingSystem.objects.filter().order_by('name')
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
context_object_name = "operating_system"
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
model = OperatingSystem
|
||||
|
||||
permission_required = [
|
||||
'itam.view_operatingsystem',
|
||||
]
|
||||
|
||||
template_name = 'itam/operating_system.html.j2'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
operating_system_versions = OperatingSystemVersion.objects.filter(
|
||||
operating_system=self.kwargs['pk']
|
||||
).order_by(
|
||||
'name'
|
||||
).annotate(
|
||||
installs=Count(
|
||||
"deviceoperatingsystem",
|
||||
filter=Q(deviceoperatingsystem__device__organization__in = self.user_organizations())
|
||||
),
|
||||
# filter=Q(deviceoperatingsystem__operating_system_version__organization__in = self.user_organizations())
|
||||
# filter=Q(deviceoperatingsystem__operating_system_version__deviceoperatingsystem__device__organization__in = self.user_organizations()),
|
||||
filter=Q(deviceoperatingsystem__operating_system_version__organization__in = self.user_organizations()),
|
||||
|
||||
)
|
||||
|
||||
context['operating_system_versions'] = operating_system_versions
|
||||
|
||||
context['tickets'] = TicketLinkedItem.objects.filter(
|
||||
item = int(self.kwargs['pk']),
|
||||
item_type = TicketLinkedItem.Modules.OPERATING_SYSTEM
|
||||
)
|
||||
|
||||
installs = DeviceOperatingSystem.objects.filter(operating_system_version__operating_system_id=self.kwargs['pk'])
|
||||
context['installs'] = installs
|
||||
|
||||
context['notes_form'] = AddNoteForm(prefix='note')
|
||||
|
||||
context['notes'] = Notes.objects.filter(operatingsystem=self.kwargs['pk'])
|
||||
|
||||
context['model_pk'] = self.kwargs['pk']
|
||||
context['model_name'] = self.model._meta.verbose_name.replace(' ', '')
|
||||
|
||||
context['model_delete_url'] = reverse('ITAM:_operating_system_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
# @method_decorator(auth_decorator.permission_required("itam.change_operatingsystem", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
operatingsystem = OperatingSystem.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
notes = AddNoteForm(request.POST, prefix='note')
|
||||
|
||||
if notes.is_bound and notes.is_valid() and notes.instance.note != '':
|
||||
|
||||
notes.instance.organization = operatingsystem.organization
|
||||
notes.instance.operatingsystem = operatingsystem
|
||||
notes.instance.usercreated = request.user
|
||||
|
||||
notes.save()
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_operating_system_view', args=(self.kwargs['pk'],))
|
@ -1,89 +0,0 @@
|
||||
from django.urls import reverse
|
||||
|
||||
from core.views.common import AddView, ChangeView, DeleteView
|
||||
|
||||
from itam.forms.operating_system_version import OperatingSystemVersionForm
|
||||
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
form_class = OperatingSystemVersionForm
|
||||
|
||||
model = OperatingSystemVersion
|
||||
|
||||
permission_required = [
|
||||
'itam.view_operating_systemversion'
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = self.object.operating_system.name + ' ' + self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_operating_system_view', args=(self.kwargs['operating_system_id'],))
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = OperatingSystemVersionForm
|
||||
|
||||
model = OperatingSystemVersion
|
||||
|
||||
permission_required = [
|
||||
'access.add_operating_systemversion',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
def form_valid(self, form):
|
||||
operating_system = OperatingSystem.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
form.instance.is_global = operating_system.is_global
|
||||
form.instance.organization_id = operating_system.organization.id
|
||||
form.instance.operating_system_id = self.kwargs['pk']
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_operating_system_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Operating System Version'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = OperatingSystemVersion
|
||||
permission_required = [
|
||||
'access.delete_operating_system',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_operating_system_view', args=(self.kwargs['operating_system_id'],))
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
@ -1,224 +0,0 @@
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.db.models import Count, Q
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from core.forms.comment import AddNoteForm
|
||||
from core.models.notes import Notes
|
||||
from core.models.ticket.ticket_linked_items import Ticket, TicketLinkedItem
|
||||
from core.views.common import AddView, ChangeView, DeleteView, IndexView
|
||||
|
||||
from itam.models.device import DeviceSoftware
|
||||
from itam.models.software import Software, SoftwareVersion
|
||||
from itam.forms.software.update import DetailForm, SoftwareForm, SoftwareChange
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
|
||||
class IndexView(IndexView):
|
||||
|
||||
context_object_name = "softwares"
|
||||
|
||||
model = Software
|
||||
|
||||
paginate_by = 10
|
||||
|
||||
permission_required = [
|
||||
'itam.view_software'
|
||||
|
||||
]
|
||||
|
||||
template_name = 'itam/software_index.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_docs_path'] = self.model._meta.app_label + '/' + self.model._meta.model_name + '/'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
|
||||
return Software.objects.filter().order_by('name')
|
||||
|
||||
else:
|
||||
|
||||
return Software.objects.filter().order_by('name')
|
||||
|
||||
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
|
||||
model = Software
|
||||
|
||||
permission_required = [
|
||||
'itam.change_software',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
form_class = SoftwareChange
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('ITAM:_software_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Edit ' + self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
context_object_name = "software"
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
model = Software
|
||||
|
||||
permission_required = [
|
||||
'itam.view_software',
|
||||
'itam.change_software'
|
||||
]
|
||||
|
||||
template_name = 'itam/software.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
software_versions = SoftwareVersion.objects.filter(
|
||||
software=self.kwargs['pk'],
|
||||
).annotate(
|
||||
installs=Count(
|
||||
"installedversion",
|
||||
filter=Q(installedversion__organization__in = self.user_organizations())
|
||||
)
|
||||
)
|
||||
|
||||
context['software_versions'] = software_versions
|
||||
|
||||
context['tickets'] = TicketLinkedItem.objects.filter(
|
||||
item = int(self.kwargs['pk']),
|
||||
item_type = TicketLinkedItem.Modules.SOFTWARE
|
||||
)
|
||||
|
||||
context['notes_form'] = AddNoteForm(prefix='note')
|
||||
context['notes'] = Notes.objects.filter(software=self.kwargs['pk'])
|
||||
|
||||
context['model_pk'] = self.kwargs['pk']
|
||||
context['model_name'] = self.model._meta.verbose_name.replace(' ', '')
|
||||
|
||||
context['model_delete_url'] = reverse('ITAM:_software_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
|
||||
context['device_software'] = DeviceSoftware.objects.filter(
|
||||
software=self.kwargs['pk']
|
||||
).order_by(
|
||||
'device',
|
||||
'organization'
|
||||
)
|
||||
|
||||
elif not self.request.user.is_superuser:
|
||||
|
||||
context['device_software'] = DeviceSoftware.objects.filter(
|
||||
software=self.kwargs['pk']
|
||||
).order_by(
|
||||
'device',
|
||||
'organization'
|
||||
)
|
||||
|
||||
return context
|
||||
|
||||
|
||||
@method_decorator(auth_decorator.permission_required("itam.change_software", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
software = Software.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
notes = AddNoteForm(request.POST, prefix='note')
|
||||
|
||||
if notes.is_bound and notes.is_valid() and notes.instance.note != '':
|
||||
|
||||
notes.instance.organization = software.organization
|
||||
notes.instance.software = software
|
||||
notes.instance.usercreated = request.user
|
||||
|
||||
notes.save()
|
||||
|
||||
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/software/{self.kwargs['pk']}/"
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = SoftwareForm
|
||||
|
||||
model = Software
|
||||
|
||||
permission_required = [
|
||||
'itam.add_software',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
|
||||
return {
|
||||
'organization': UserSettings.objects.get(user = self.request.user).default_organization
|
||||
}
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/software/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Software'
|
||||
|
||||
return context
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = Software
|
||||
permission_required = [
|
||||
'itam.delete_software',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/software/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
@ -1,133 +0,0 @@
|
||||
from django.contrib.auth import decorators as auth_decorator
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from core.views.common import AddView, ChangeView, DeleteView
|
||||
|
||||
from itam.forms.software_category import DetailForm, SoftwareCategoryForm
|
||||
from itam.models.software import Software, SoftwareCategory
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
class Change(ChangeView):
|
||||
|
||||
context_object_name = "software"
|
||||
|
||||
form_class = SoftwareCategoryForm
|
||||
|
||||
model = SoftwareCategory
|
||||
|
||||
permission_required = [
|
||||
'itam.change_softwarecategory',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_delete_url'] = reverse('Settings:_software_category_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_software_category_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
@method_decorator(auth_decorator.permission_required("itam.change_softwarecategory", raise_exception=True))
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
return super().post(request, *args, **kwargs)
|
||||
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
|
||||
context_object_name = "software"
|
||||
|
||||
form_class = DetailForm
|
||||
|
||||
model = SoftwareCategory
|
||||
|
||||
permission_required = [
|
||||
'itam.view_softwarecategory',
|
||||
]
|
||||
|
||||
template_name = 'itam/software_categories.html.j2'
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['model_delete_url'] = reverse('Settings:_software_category_delete', args=(self.kwargs['pk'],))
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_software_category_view', args=(self.kwargs['pk'],))
|
||||
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
|
||||
form_class = SoftwareCategoryForm
|
||||
|
||||
model = SoftwareCategory
|
||||
|
||||
permission_required = [
|
||||
'itam.add_softwarecategory',
|
||||
]
|
||||
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
def get_initial(self):
|
||||
|
||||
return {
|
||||
'organization': UserSettings.objects.get(user = self.request.user).default_organization
|
||||
}
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_software_categories')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Software Category'
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class Delete(DeleteView):
|
||||
model = SoftwareCategory
|
||||
permission_required = [
|
||||
'itam.delete_softwarecategory',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return reverse('Settings:_software_categories')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Delete ' + self.object.name
|
||||
|
||||
return context
|
@ -1,59 +0,0 @@
|
||||
from core.views.common import AddView, ChangeView
|
||||
|
||||
from ..models.software import Software, SoftwareVersion
|
||||
|
||||
|
||||
class View(ChangeView):
|
||||
model = SoftwareVersion
|
||||
permission_required = [
|
||||
'itam.view_softwareversion'
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
|
||||
fields = [
|
||||
"name",
|
||||
]
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = self.object.name
|
||||
|
||||
return context
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/software/{self.kwargs['software_id']}/"
|
||||
|
||||
|
||||
|
||||
class Add(AddView):
|
||||
model = SoftwareVersion
|
||||
permission_required = [
|
||||
'access.add_softwareversion',
|
||||
]
|
||||
template_name = 'form.html.j2'
|
||||
fields = [
|
||||
'name'
|
||||
]
|
||||
|
||||
def form_valid(self, form):
|
||||
software = Software.objects.get(pk=self.kwargs['pk'])
|
||||
|
||||
form.instance.is_global = software.is_global
|
||||
form.instance.organization_id = software.organization.id
|
||||
form.instance.software_id = self.kwargs['pk']
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
|
||||
return f"/itam/software/{self.kwargs['pk']}/"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context['content_title'] = 'Add Software Version'
|
||||
|
||||
return context
|
Reference in New Issue
Block a user