Attempting to resolve unfold form inconsistencies.
This commit is contained in:
26
app/apps/access/permissions.py
Normal file
26
app/apps/access/permissions.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from django.db.models import Q
|
||||
from django.utils import timezone
|
||||
from guardian.shortcuts import assign_perm, remove_perm
|
||||
|
||||
from .models import AccessRequest
|
||||
|
||||
|
||||
def sync_server_view_perm(access_request: AccessRequest) -> None:
|
||||
if not access_request or not access_request.requester_id or not access_request.server_id:
|
||||
return
|
||||
now = timezone.now()
|
||||
has_valid_access = (
|
||||
AccessRequest.objects.filter(
|
||||
requester_id=access_request.requester_id,
|
||||
server_id=access_request.server_id,
|
||||
status=AccessRequest.Status.APPROVED,
|
||||
)
|
||||
.filter(Q(expires_at__isnull=True) | Q(expires_at__gt=now))
|
||||
.exists()
|
||||
)
|
||||
if has_valid_access:
|
||||
assign_perm("servers.view_server", access_request.requester, access_request.server)
|
||||
return
|
||||
remove_perm("servers.view_server", access_request.requester, access_request.server)
|
||||
Reference in New Issue
Block a user