Files
centurion_erp/app/itam/views/operating_system.py

154 lines
4.2 KiB
Python

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.db.models import Q, Count
from django.urls import reverse
from django.views import generic
from access.mixin import OrganizationPermission
from core.forms.comment import AddNoteForm
from core.models.notes import Notes
from itam.models.device import DeviceOperatingSystem
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
from itam.forms.operating_system.update import Update
from settings.models.user_settings import UserSettings
class IndexView(PermissionRequiredMixin, OrganizationPermission, generic.ListView):
model = OperatingSystem
permission_required = 'itam.view_operating_system'
template_name = 'itam/operating_system_index.html.j2'
context_object_name = "operating_systems"
paginate_by = 10
def get_queryset(self):
if self.request.user.is_superuser:
return OperatingSystem.objects.filter().order_by('name')
else:
return OperatingSystem.objects.filter(Q(organization__in=self.user_organizations()) | Q(is_global = True)).order_by('name')
class View(OrganizationPermission, generic.UpdateView):
model = OperatingSystem
permission_required = [
'itam.view_operating_system'
]
template_name = 'itam/operating_system.html.j2'
form_class = Update
context_object_name = "operating_system"
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"))
context['operating_system_versions'] = operating_system_versions
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['content_title'] = self.object.name
return context
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 Add(PermissionRequiredMixin, OrganizationPermission, generic.CreateView):
model = OperatingSystem
permission_required = [
'access.add_operating_system',
]
template_name = 'form.html.j2'
fields = [
'name',
'publisher',
'organization',
'is_global'
]
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 Delete(PermissionRequiredMixin, OrganizationPermission, generic.DeleteView):
model = OperatingSystem
permission_required = [
'access.delete_operating_system',
]
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