import json from django.core.handlers.wsgi import WSGIRequest from django.http import HttpResponse from .helper import get_user_object, get_username def get_message_list(request: WSGIRequest) -> HttpResponse: username = get_username(request) if username is None: return HttpResponse( json.dumps({ "success": False }), content_type="application/json", status=401 ) user = get_user_object(username, i_promise_this_user_exists=True) queryFilter = {} if "offset" in request.GET and (request.GET.get("offset") or "").isdigit(): queryFilter["message_id__lt"] = int(request.GET.get("offset") or "") if "unread" in request.GET: queryFilter["response"] = None if queryFilter: msgObjects = user.received.filter(**queryFilter) else: msgObjects = user.received.all() # type: ignore output = [] messages = msgObjects.order_by("-message_id")[:50].values_list( "message_id", "content", "response", "anonymous", "u_from" ) for message in messages: output.append({ "id": message[0], "content": message[1], "response": message[2], "from": message[4].username if not message[3] and message[4] else None }) return HttpResponse( json.dumps({ "success": True, "canRespond": True, "messages": output, "more": msgObjects.count() > 50 }), content_type="application/json" )