Files
centurion_erp/app/core/views/ticket.py

220 lines
4.8 KiB
Python

import markdown
from django.http import Http404
from django.urls import reverse
from django.views import generic
from django_celery_results.models import TaskResult
from access.mixin import OrganizationPermission
from core.forms.ticket import DetailForm, TicketForm
from core.models.ticket.ticket import Ticket
from core.views.common import AddView, ChangeView, DeleteView, IndexView
from settings.models.user_settings import UserSettings
class Add(AddView):
form_class = TicketForm
model = Ticket
def get_dynamic_permissions(self):
return [
str('core.add_ticket_' + self.kwargs['ticket_type']),
]
def get_initial(self):
initial = super().get_initial()
initial.update({
'type_ticket': self.kwargs['ticket_type'],
})
return initial
def form_valid(self, form):
form.instance.is_global = False
return super().form_valid(form)
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['request'] = self.request
return kwargs
def get_success_url(self, **kwargs):
if self.kwargs['ticket_type'] == 'request':
return reverse('Assistance:_ticket_request_view', args=(self.kwargs['ticket_type'],self.object.id,))
else:
return reverse('ITIM:_ticket_' + str(self.kwargs['ticket_type']).lower() + '_view', args=(self.kwargs['ticket_type'],self.object.id,))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['content_title'] = 'New Ticket'
return context
class Change(ChangeView):
form_class = TicketForm
model = Ticket
def get_dynamic_permissions(self):
return [
str('core.change_ticket_' + self.kwargs['ticket_type']),
]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['content_title'] = str(self.object)
return context
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['request'] = self.request
return kwargs
def get_initial(self):
return {
'type_ticket': self.kwargs['ticket_type'],
}
def get_success_url(self, **kwargs):
return reverse('Assistance:_ticket_request_view', args=(self.kwargs['ticket_type'], self.kwargs['pk'],))
class Index(OrganizationPermission, generic.ListView):
context_object_name = "tickets"
fields = [
"id",
'title',
'status',
'date_created',
]
model = Ticket
template_name = 'core/ticket/index.html.j2'
def get_dynamic_permissions(self):
return [
str('core.view_ticket_' + self.kwargs['ticket_type']),
]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if self.kwargs['ticket_type'] == 'request':
context['new_ticket_url'] = reverse('Assistance:_ticket_request_add', args=(self.kwargs['ticket_type'],))
else:
context['new_ticket_url'] = reverse(str('ITIM:_ticket_' + self.kwargs['ticket_type'] + '_add'), args=(self.kwargs['ticket_type'],))
context['ticket_type'] = self.kwargs['ticket_type']
context['content_title'] = 'Tickets'
return context
def get_queryset(self):
if not hasattr(Ticket.TicketType, str(self.kwargs['ticket_type']).upper()):
raise Http404
queryset = super().get_queryset()
queryset = queryset.filter(
ticket_type = Ticket.TicketType[str(self.kwargs['ticket_type']).upper()]
)
return queryset
def get_success_url(self, **kwargs):
return reverse('Settings:_device_model_view', args=(self.kwargs['pk'],))
class View(ChangeView):
model = Ticket
template_name = 'core/ticket.html.j2'
form_class = DetailForm
context_object_name = "ticket"
def get_dynamic_permissions(self):
return [
str('core.view_ticket_' + self.kwargs['ticket_type']),
]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['ticket_type'] = self.kwargs['ticket_type']
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['edit_url'] = reverse('Assistance:_ticket_request_change', args=(self.kwargs['ticket_type'], self.kwargs['pk'])) #/assistance/ticket/{{ ticket_type }}/{{ ticket.id }}
context['content_title'] = self.object.title
return context
def get_initial(self):
return {
'type_ticket': self.kwargs['ticket_type'],
}