message/tmessage/views/templates.py
2024-12-24 11:34:10 -05:00

108 lines
3 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_page(request: WSGIRequest, message_id: int) -> HttpResponse:
try:
message = tMMessage.objects.get(message_id=message_id)
except tMMessage.DoesNotExist:
return render_template(
request, "404.html",
status=404
)
return render_template(
request, "message-page.html",
title="Viewing a Message",
message=message,
username=get_username(request)
)
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",
title=f"Messaging {username}",
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",
title="Messages",
username=username
)