message/tmessage/views/templates.py
2024-12-24 10:22:37 -05:00

90 lines
2.5 KiB
Python

import math
import time
from datetime import datetime
from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse, HttpResponseRedirect
from tmessage.models import tMMessage
from .helper import (get_user_object, get_username, render_template,
username_exists)
def auth(request: WSGIRequest) -> HttpResponseRedirect:
resp = HttpResponseRedirect("/")
if "remove" in request.GET:
resp.set_cookie("session_id", "", max_age=0, expires=datetime(0, 0, 0))
else:
resp.set_cookie("session_id", request.GET.get("sessionid") or "")
return resp
def index(request: WSGIRequest) -> HttpResponse:
username = get_username(request)
if username:
user = get_user_object(username, i_promise_this_user_exists=True)
return render_template(
request, "index.html",
username=username,
new=user.received.filter(response=None).count() # type: ignore
)
return render_template(
request, "noauth/index.html"
)
def profile(request: WSGIRequest, username: str) -> HttpResponse:
...
def message(request: WSGIRequest, username: str) -> HttpResponse:
if not username_exists(username):
return render_template(
request, "404.html"
)
error = ""
if request.method == "POST":
content = (request.POST.get("message") or "").strip()
if len(content) > 10000:
error = "Invalid message"
else:
self_username = get_username(request)
if self_username is None:
anonymous = True
u_from = None
else:
anonymous = request.POST.get("anonymous") is not None
u_from = get_user_object(self_username, i_promise_this_user_exists=True)
tMMessage.objects.create(
content=content,
response=None,
sent_timestamp=math.floor(time.time()),
anonymous=anonymous,
u_to=get_user_object(username, i_promise_this_user_exists=True),
u_from=u_from
)
error = "Sent!"
return render_template(
request, "message.html",
username=username,
error=error,
self_username=get_username(request)
)
def messages(request: WSGIRequest) -> HttpResponse:
username = get_username(request)
if username is None:
return HttpResponseRedirect("/")
return render_template(
request, "messages.html",
username=username
)