39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.views.decorators.http import require_http_methods
|
|
from elastic.es_connect import get_user_by_id
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def home(request):
|
|
# Enforce login: require session user_id
|
|
session_user_id = request.session.get("user_id")
|
|
if session_user_id is None:
|
|
return redirect("/accounts/login/")
|
|
|
|
uid = session_user_id
|
|
perm = request.session.get("permission")
|
|
u = get_user_by_id(uid) if uid is not None else None
|
|
if perm is None and uid is not None:
|
|
try:
|
|
perm = int((u or {}).get("permission", 1))
|
|
except Exception:
|
|
perm = 1
|
|
request.session["permission"] = perm
|
|
else:
|
|
try:
|
|
perm = int(perm)
|
|
except Exception:
|
|
perm = 1
|
|
has_manage_key = bool((u or {}).get("manage_key") or [])
|
|
can_manage_registration_codes = bool(int((u or {}).get("can_manage_registration_codes") or 0) == 1)
|
|
has_registration_code = bool(str((u or {}).get("registration_code") or "").strip())
|
|
context = {
|
|
"user_id": uid,
|
|
"username": (u or {}).get("username"),
|
|
"is_admin": (int(perm) == 0),
|
|
"has_manage_key": has_manage_key,
|
|
"can_manage_registration_codes": can_manage_registration_codes,
|
|
"has_registration_code": has_registration_code,
|
|
}
|
|
return render(request, "main/home.html", context)
|