message/tmessage/views/templates.py
2024-12-24 12:14:38 -05:00

122 lines
3.4 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, tMUser
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:
try:
get_user_object(username)
except tMUser.DoesNotExist:
return render_template(
request, "404.html"
)
self_username = get_username(request)
return render_template(
request, "user.html",
title=username,
username=username,
self_username=self_username
)
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
)