27 lines
1.0 KiB
Python
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,
|
|
})
|