57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
|
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"
|
||
|
)
|