estelam ticket, varizha , others
This commit is contained in:
1 parent
35a1ec1794
commit
6b546aad76
71 files changed
+2865
-191
No files matched your search
@@ -0,0 +1,45 @@
|
||||
from django.core import signing
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import PermissionDenied, ValidationError
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.views.decorators.cache import never_cache
|
||||
from django.views.decorators.http import require_http_methods
|
||||
|
||||
from .dispatch_responses import can_open_responses, open_dispatch_responses, render_opening_sms, response_control
|
||||
from .models import GroupDispatch
|
||||
from apps.notifications.models import SMSTemplate
|
||||
from .views import staff_required
|
||||
|
||||
|
||||
@staff_required
|
||||
@require_http_methods(["GET", "POST"])
|
||||
@never_cache
|
||||
def open_responses(request, public_id):
|
||||
dispatch = get_object_or_404(GroupDispatch.objects.select_related("unit"), public_id=public_id)
|
||||
control = response_control(dispatch)
|
||||
if not control or control.mode != "SEALED" or not can_open_responses(request.user, dispatch):
|
||||
raise PermissionDenied
|
||||
if control.opened_at:
|
||||
return redirect("staff_tickets:dispatch_detail", public_id=public_id)
|
||||
if request.method == "POST":
|
||||
try:
|
||||
proof = signing.loads(request.POST.get("confirmation", ""), salt="dispatch-opening", max_age=600)
|
||||
if proof["user"] != request.user.pk or proof["dispatch"] != str(public_id):
|
||||
raise signing.BadSignature
|
||||
open_dispatch_responses(dispatch, request.user, proof["sms"])
|
||||
except (signing.BadSignature, KeyError):
|
||||
messages.error(request, "تأیید معتبر نیست یا مهلت آن پایان یافته؛ دوباره بررسی کنید.")
|
||||
except (ValidationError, ValueError, SMSTemplate.DoesNotExist) as error:
|
||||
messages.error(request, str(error))
|
||||
else:
|
||||
messages.success(request, "پاسخها همزمان بازگشایی شدند؛ وضعیت پیامک را در گزارش بررسی کنید.")
|
||||
return redirect("staff_tickets:dispatch_detail", public_id=public_id)
|
||||
try:
|
||||
sms = render_opening_sms(dispatch) if control.notify_sms else ""
|
||||
except (SMSTemplate.DoesNotExist, ValueError):
|
||||
messages.error(request, "قالب پیامک بازگشایی معتبر یا فعال نیست؛ تنظیمات قالب را بررسی کنید.")
|
||||
return redirect("staff_tickets:dispatch_detail", public_id=public_id)
|
||||
from .dispatch_responses import _respondents
|
||||
proof = signing.dumps({"user": request.user.pk, "dispatch": str(public_id), "sms": sms}, salt="dispatch-opening")
|
||||
return render(request, "tickets/dispatch_open_confirm.html", {"dispatch": dispatch, "control": control,
|
||||
"opening_sms": sms, "respondent_count": len(_respondents(dispatch)), "confirmation": proof})
|
||||
Reference in new issue
Block a user