fix some bugs

This commit is contained in:
javad committed 2026-09-15 09:50:17 +03:30
1 parent b8b3aba855
commit 963fd839dc
22 files changed
+570 -33

No files matched your search

+40
View File
@@ -112,6 +112,46 @@ def refresh_group_dispatch_status(dispatch_id):
dispatch.status=status
return dispatch
@transaction.atomic
def resolve_group_dispatch_tickets(*, dispatch, user):
"""Resolve every non-final ticket created by one group dispatch."""
dispatch = GroupDispatch.objects.select_for_update().select_related("unit").get(pk=dispatch.pk)
permitted = user.has_perm("tickets.change_ticket") or TicketPolicy.has_unit_permission(
user, dispatch.unit, "tickets.change_ticket"
)
if not (DispatchPolicy.can_view(user, dispatch) and permitted):
raise PermissionDenied("اجازه حل‌کردن تیکت‌های این ارسال گروهی را ندارید.")
now = timezone.now()
tickets = list(
dispatch.tickets.select_for_update().exclude(
status__in=(Ticket.Status.RESOLVED, Ticket.Status.CLOSED)
)
)
if not tickets:
return 0
previous_statuses = {ticket.pk: ticket.status for ticket in tickets}
for ticket in tickets:
ticket.status = Ticket.Status.RESOLVED
ticket.resolved_at = now
ticket.updated_at = now
Ticket.objects.bulk_update(tickets, ["status", "resolved_at", "updated_at"])
TicketEvent.objects.bulk_create([
TicketEvent(
ticket=ticket,
event_type=TicketEvent.Type.STATUS_CHANGED,
actor=user,
metadata={
"from": previous_statuses[ticket.pk],
"to": Ticket.Status.RESOLVED,
"group_dispatch_id": dispatch.pk,
},
)
for ticket in tickets
])
return len(tickets)
@transaction.atomic
def claim_ticket(ticket_id,user):
ticket=Ticket.objects.select_for_update().get(pk=ticket_id)