From 391ebad6db2b9653ef1f271c6f2e4bf7d7cb8161 Mon Sep 17 00:00:00 2001 From: Horilla Date: Mon, 3 Nov 2025 09:57:25 +0530 Subject: [PATCH] [FIX] HELPDESK: Fixed edit ticket after deadline for users with permission and moved clean from models to form (#949) --- helpdesk/forms.py | 26 ++++++++++++++++++++++++++ helpdesk/models.py | 7 ------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/helpdesk/forms.py b/helpdesk/forms.py index 76f047dc1..b99081571 100644 --- a/helpdesk/forms.py +++ b/helpdesk/forms.py @@ -21,10 +21,12 @@ class YourForm(forms.Form): pass """ +from datetime import datetime from typing import Any from django import forms from django.template.loader import render_to_string +from django.utils.translation import gettext_lazy as _ from base.forms import ModelForm from base.methods import filtersubordinatesemployeemodel, is_reportingmanager @@ -154,6 +156,30 @@ class TicketForm(ModelForm): self.fields["tags"].choices = list(self.fields["tags"].choices) self.fields["tags"].choices.append(("create_new_tag", "Create new tag")) + def clean(self, *args, **kwargs): + cleaned_data = super().clean(*args, **kwargs) + deadline = cleaned_data.get("deadline") + today = datetime.today().date() + request = getattr(horilla_middlewares._thread_locals, "request", None) + user = getattr(request, "user", None) + + if deadline and deadline < today: + if self.instance and self.instance.pk: + if not ( + user.has_perm("helpdesk.change_ticket") + or user.has_perm( + "helpdesk.add_ticket" + or self.instance.employee_id == user.employee_get + ) + ): + raise forms.ValidationError( + _("Deadline should be greater than today") + ) + else: + raise forms.ValidationError(_("Deadline should be greater than today")) + + return cleaned_data + class TicketTagForm(ModelForm): class Meta: diff --git a/helpdesk/models.py b/helpdesk/models.py index 3e9b6f3bd..6e5ee7123 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -130,13 +130,6 @@ class Ticket(HorillaModel): verbose_name = _("Ticket") verbose_name_plural = _("Tickets") - def clean(self, *args, **kwargs): - super().clean(*args, **kwargs) - deadline = self.deadline - today = datetime.today().date() - if deadline < today: - raise ValidationError(_("Deadline should be greater than today")) - def get_raised_on(self): obj_id = self.raised_on if self.assigning_type == "department":