fix some bugs
This commit is contained in:
1 parent
b8b3aba855
commit
963fd839dc
22 files changed
+570
-33
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user