share ticket and ticket message
This commit is contained in:
1 parent
39e64854b8
commit
79fe1cddbb
35 files changed
+1742
-95
No files matched your search
@@ -12,7 +12,11 @@ def staff_ticket_rows(user):
|
||||
def filter_staff_tickets(qs, user, params):
|
||||
search=params.get("q", "").strip()
|
||||
if search:
|
||||
qs=qs.filter(Q(ticket_number__icontains=search)|Q(subject__icontains=search)|Q(customer__mobile__icontains=search)|Q(customer__customer_profile__first_name__icontains=search)|Q(customer__customer_profile__last_name__icontains=search))
|
||||
matches=Q(ticket_number__icontains=search)|Q(subject__icontains=search)|Q(customer__mobile__icontains=search)|Q(customer__customer_profile__first_name__icontains=search)|Q(customer__customer_profile__last_name__icontains=search)
|
||||
if params.get("tab") == "shared":
|
||||
from .staff_conversation import received_messages
|
||||
matches |= Q(pk__in=received_messages(user).filter(message__body__icontains=search).values("message__ticket_id"))
|
||||
qs=qs.filter(matches)
|
||||
if params.get("status") in Ticket.Status.values: qs=qs.filter(status=params["status"])
|
||||
if params.get("priority") in Ticket.Priority.values: qs=qs.filter(priority=params["priority"])
|
||||
if params.get("category", "").isdigit(): qs=qs.filter(category_id=params["category"])
|
||||
@@ -41,13 +45,18 @@ def filter_staff_tickets(qs, user, params):
|
||||
if tab=="new": qs=qs.filter(status=Ticket.Status.NEW,owner__isnull=True,selected_expert__isnull=True)
|
||||
elif tab=="selected": qs=qs.filter(selected_expert=user,owner__isnull=True)
|
||||
elif tab=="mine": qs=qs.filter(owner=user)
|
||||
elif tab=="shared": qs=qs.filter(access_grants__user=user,access_grants__revoked_at__isnull=True)
|
||||
elif tab=="shared":
|
||||
from .staff_conversation import received_messages
|
||||
qs=qs.filter(Q(access_grants__user=user,access_grants__revoked_at__isnull=True) | Q(pk__in=received_messages(user).values("message__ticket_id")))
|
||||
elif tab=="waiting_staff": qs=qs.filter(status__in=[Ticket.Status.WAITING_STAFF,Ticket.Status.REOPENED])
|
||||
elif tab=="waiting_customer": qs=qs.filter(status=Ticket.Status.WAITING_CUSTOMER)
|
||||
elif tab=="resolved": qs=qs.filter(status=Ticket.Status.RESOLVED)
|
||||
elif tab=="closed": qs=qs.filter(status=Ticket.Status.CLOSED)
|
||||
if params.get("unread"):
|
||||
qs=qs.filter(Q(read_states__user=user,read_states__last_read_at__lt=F("last_activity_at"))|Q(read_states__isnull=True))
|
||||
if tab == "shared":
|
||||
qs=qs.filter(Q(access_grants__user=user,access_grants__revoked_at__isnull=True,access_grants__first_viewed_at__isnull=True) | Q(pk__in=received_messages(user).filter(first_viewed_at__isnull=True).values("message__ticket_id")))
|
||||
else:
|
||||
qs=qs.filter(Q(read_states__user=user,read_states__last_read_at__lt=F("last_activity_at"))|Q(read_states__isnull=True))
|
||||
qs=qs.distinct()
|
||||
if tab in ("", "waiting_staff"):
|
||||
return qs.annotate(
|
||||
|
||||
Reference in new issue
Block a user