sprint/Messaging/views.py
2022-02-20 12:33:19 +03:00

27 lines
1.0 KiB
Python

from django.shortcuts import render
from Messaging.models import Chat, Message, Membership
from SprintLib.BaseView import AccessError
page_size = 20
def chat_window(request):
chat = None if request.GET['chat_id'] == '-1' else Chat.objects.get(id=request.GET['chat_id'])
if chat is not None:
if Membership.objects.filter(user=request.user, chat=chat).first() is None:
raise AccessError()
page = None if request.GET['page'] == '-1' else int(request.GET['page'])
memberships = Membership.objects.filter(user=request.user).order_by('-chat__last_message__time_sent')
messages = []
if chat is not None:
offset = page_size * (page - 1)
limit = page_size
Message.objects.filter(chat=chat, is_read=False).update(is_read=True)
messages = Message.objects.filter(chat=chat).order_by('-time_sent')[offset:offset + limit]
return render(request, "chat_window.html", context={
"memberships": memberships,
"messages": messages,
"current_chat": chat,
})