Linux agent functional. Added new client-facing server panel. Removed deferred pydantic annotations.
This commit is contained in:
67
app/apps/servers/views.py
Normal file
67
app/apps/servers/views.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Q
|
||||
from django.http import Http404
|
||||
from django.shortcuts import render
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.access.models import AccessRequest
|
||||
|
||||
|
||||
@login_required(login_url="/accounts/login/")
|
||||
def dashboard(request):
|
||||
now = timezone.now()
|
||||
access_qs = (
|
||||
AccessRequest.objects.select_related("server")
|
||||
.filter(
|
||||
requester=request.user,
|
||||
status=AccessRequest.Status.APPROVED,
|
||||
)
|
||||
.filter(Q(expires_at__isnull=True) | Q(expires_at__gt=now))
|
||||
.order_by("-requested_at")
|
||||
)
|
||||
|
||||
seen = set()
|
||||
servers = []
|
||||
for access in access_qs:
|
||||
if access.server_id in seen:
|
||||
continue
|
||||
seen.add(access.server_id)
|
||||
servers.append(
|
||||
{
|
||||
"server": access.server,
|
||||
"expires_at": access.expires_at,
|
||||
"last_accessed": None,
|
||||
}
|
||||
)
|
||||
|
||||
context = {
|
||||
"servers": servers,
|
||||
}
|
||||
return render(request, "servers/dashboard.html", context)
|
||||
|
||||
|
||||
@login_required(login_url="/accounts/login/")
|
||||
def detail(request, server_id: int):
|
||||
now = timezone.now()
|
||||
access = (
|
||||
AccessRequest.objects.select_related("server")
|
||||
.filter(
|
||||
requester=request.user,
|
||||
server_id=server_id,
|
||||
status=AccessRequest.Status.APPROVED,
|
||||
)
|
||||
.filter(Q(expires_at__isnull=True) | Q(expires_at__gt=now))
|
||||
.order_by("-requested_at")
|
||||
.first()
|
||||
)
|
||||
if not access:
|
||||
raise Http404("Server not found")
|
||||
|
||||
context = {
|
||||
"server": access.server,
|
||||
"expires_at": access.expires_at,
|
||||
"last_accessed": None,
|
||||
}
|
||||
return render(request, "servers/detail.html", context)
|
||||
Reference in New Issue
Block a user