link view ticket for staff
This commit is contained in:
1 parent
6b546aad76
commit
089db0afa4
13 files changed
+412
-3
No files matched your search
@@ -0,0 +1,38 @@
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.views.decorators.cache import never_cache
|
||||
from django.views.decorators.http import require_GET
|
||||
|
||||
from apps.accounts.models import User
|
||||
from .models import StaffTicketShortLink
|
||||
from .policies import TicketPolicy
|
||||
|
||||
|
||||
def append_supervisor_ticket_link(ticket, message):
|
||||
unit = ticket.owning_unit
|
||||
if not unit or not unit.supervisor_sms_ticket_link_enabled:
|
||||
return message
|
||||
link, _ = StaffTicketShortLink.objects.get_or_create(ticket=ticket)
|
||||
if link.expires_at <= timezone.now():
|
||||
return message
|
||||
url = settings.PUBLIC_BASE_URL.rstrip("/") + reverse("staff_ticket_short_link", args=[link.token])
|
||||
return f"{message}\nمشاهده و پاسخ: {url}"
|
||||
|
||||
|
||||
@never_cache
|
||||
@require_GET
|
||||
@login_required(login_url="/staff/login/")
|
||||
def open_staff_ticket_link(request, token):
|
||||
if not request.user.is_active or request.user.account_type != User.AccountType.STAFF:
|
||||
raise PermissionDenied
|
||||
link = get_object_or_404(
|
||||
StaffTicketShortLink.objects.select_related("ticket"),
|
||||
token=token, expires_at__gt=timezone.now(),
|
||||
)
|
||||
if not TicketPolicy.can_view(request.user, link.ticket):
|
||||
raise PermissionDenied
|
||||
return redirect("staff_tickets:detail", public_id=link.ticket.public_id)
|
||||
Reference in new issue
Block a user