This commit is contained in:
javad committed 2026-09-10 11:34:19 +03:30
commit fa9d154db9
260 files changed
+17643

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
from django.utils import timezone
from .models import TicketMagicLink
MAGIC_LINK_SESSION_KEY = "ticket_magic_link_id"
def grant_ticket_magic_access(request, link):
"""Grant an anonymous session access to exactly one ticket until link expiry."""
request.session.cycle_key()
request.session[MAGIC_LINK_SESSION_KEY] = link.pk
remaining = max(1, int((link.expires_at - timezone.now()).total_seconds()))
request.session.set_expiry(remaining)
def get_ticket_magic_access(request, ticket=None):
link_id = request.session.get(MAGIC_LINK_SESSION_KEY)
if not link_id:
return None
filters = {
"pk": link_id,
"revoked_at__isnull": True,
"expires_at__gt": timezone.now(),
"customer__is_active": True,
}
if ticket is not None:
filters["ticket_id"] = ticket.pk
link = TicketMagicLink.objects.select_related("customer", "ticket").filter(**filters).first()
if link is None and ticket is None:
request.session.pop(MAGIC_LINK_SESSION_KEY, None)
return link