diff --git a/app/core/forms/ticket.py b/app/core/forms/ticket.py index d9022a33..e3722d52 100644 --- a/app/core/forms/ticket.py +++ b/app/core/forms/ticket.py @@ -53,6 +53,9 @@ def __init__(self, request, *args, **kwargs): self.fields['organization'].widget = self.fields['organization'].hidden_widget() + # self.fields['subscribed_users'].widget = self.fields['subscribed_users'].hidden_widget() + + original_fields = self.fields.copy() ticket_type = [] @@ -201,6 +204,20 @@ def is_valid(self) -> bool: raise ValidationError('Ticket Type must be set') + # if self.instance.id is None: + + # if 'subscribed_users' in self.cleaned_data: + + # if self.request.user.id not in self.cleaned_data['subscribed_users']: + + # self.cleaned_data['subscribed_users'] = self.cleaned_data['subscribed_users'] + [self.request.user.id] + + # else: + + # self.cleaned_data.update({ + # 'subscribed_users': [self.request.user.id] + # }) + return is_valid diff --git a/app/core/models/ticket/markdown.py b/app/core/models/ticket/markdown.py index 33e3415b..7f518a3a 100644 --- a/app/core/models/ticket/markdown.py +++ b/app/core/models/ticket/markdown.py @@ -75,31 +75,35 @@ def build_ticket_html(self, match): ticket_id = match.group(1) - if hasattr(self, 'ticket'): + try: + if hasattr(self, 'ticket'): - ticket = self.ticket.__class__.objects.get(pk=ticket_id) + ticket = self.ticket.__class__.objects.get(pk=ticket_id) - else: + else: - ticket = self.__class__.objects.get(pk=ticket_id) + ticket = self.__class__.objects.get(pk=ticket_id) - project_id = str('0') + project_id = str('0') - if ticket.project: + if ticket.project: - project_id = str(ticket.project.id).lower() + project_id = str(ticket.project.id).lower() - context: dict = { - 'id': ticket.id, - 'name': ticket, - 'ticket_type': str(ticket.get_ticket_type_display()).lower(), - 'ticket_status': str(ticket.get_status_display()).lower(), - 'project_id': project_id, - } + context: dict = { + 'id': ticket.id, + 'name': ticket, + 'ticket_type': str(ticket.get_ticket_type_display()).lower(), + 'ticket_status': str(ticket.get_status_display()).lower(), + 'project_id': project_id, + } - html_link = render_to_string('core/ticket/renderers/ticket_link.html.j2', context) + html_link = render_to_string('core/ticket/renderers/ticket_link.html.j2', context) - return str(html_link) + return str(html_link) + except: + + return str('#' + ticket_id) diff --git a/app/core/models/ticket/ticket.py b/app/core/models/ticket/ticket.py index de4afbf5..421abd22 100644 --- a/app/core/models/ticket/ticket.py +++ b/app/core/models/ticket/ticket.py @@ -2,6 +2,8 @@ from django.db import models from django.db.models import Q, signals, Sum from django.forms import ValidationError +from django.db.models.signals import post_save +from django.dispatch import receiver from access.fields import AutoCreatedField, AutoLastModifiedField from access.models import TenancyObject, Team @@ -812,15 +814,26 @@ def related_tickets(self) -> list(dict()): def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + # if self.id is None: + + # self.subscribed_users.set([self.opened_by.id]) + # self.subscribed_users.set([self.opened_by.id]) + before = {} try: - before = self.__class__.objects.get(pk=self.pk).__dict__.copy() + if self.id is not None: + before = self.__class__.objects.get(pk=self.pk).__dict__.copy() except Exception: pass + super().save(force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields) + # if len(before) == 0: + + # self.subscribed_users.add(self.opened_by) + after = self.__dict__.copy() changed_fields: list = [] @@ -1084,6 +1097,22 @@ def action_comment_ticket_teams(self, sender, instance, action, reverse, model, comment.save() +@receiver(post_save, sender=Ticket) +def add_user_as_watcher(sender, instance, created, **kwargs): + +# # if len(before) == 0: + +# # self.subscribed_users.add(self.opened_by.id) + if created: + + obj = Ticket.objects.get(pk=instance.pk) + + obj.subscribed_users.add(obj.opened_by.id) + + obj.save() + + a = 'a' + class RelatedTickets(TenancyObject): diff --git a/app/core/views/ticket.py b/app/core/views/ticket.py index 718ed06d..7400beaa 100644 --- a/app/core/views/ticket.py +++ b/app/core/views/ticket.py @@ -128,7 +128,17 @@ def get_initial(self): def get_success_url(self, **kwargs): - return reverse('Assistance:_ticket_request_view', args=(self.kwargs['ticket_type'], self.kwargs['pk'],)) + if self.kwargs['ticket_type'] == 'request': + + return reverse('Assistance:_ticket_request_view', args=(self.kwargs['ticket_type'],self.object.id,)) + + elif self.kwargs['ticket_type'] == 'project_task': + + return reverse('Project Management:_project_task_view', args=(self.kwargs['project_id'], 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,)) class Delete(DeleteView):