sprint/Main/views/MessagesView.py
Egor Matveev 17573e1a76 chats
2021-12-19 23:15:19 +03:00

25 lines
988 B
Python

from Main.models import Message
from SprintLib.BaseView import BaseView, AccessError
class MessagesView(BaseView):
required_login = True
view_file = "messages.html"
endpoint = "messages"
page_size = 20
def pre_handle(self):
if not hasattr(self.entities, "chat") or 'page' not in self.request.GET:
raise AccessError()
if self.entities.chat.from_user != self.request.user and self.entities.chat.to_user != self.request.user:
raise AccessError()
def get(self):
offset = (int(self.request.GET["page"]) - 1) * self.page_size
limit = self.page_size
messages = Message.objects.filter(chat=self.entities.chat).order_by("-time_sent")
messages.update(read=True)
self.context["messages"] = messages[offset:offset + limit]
self.context["count_pages"] = range(1, (len(messages) - 1) // self.page_size + 2)
self.context["need_pagination"] = len(self.context["count_pages"]) > 1