NDOJ/chat_box/views.py

49 lines
1.3 KiB
Python
Raw Normal View History

2020-01-27 14:37:52 -06:00
from django.utils.translation import gettext as _
2020-03-15 20:23:14 -06:00
from django.views.generic import ListView
2020-04-10 01:30:19 -05:00
from django.http import HttpResponse
2020-03-20 22:48:04 -06:00
from django.core.paginator import Paginator
2020-01-27 14:37:52 -06:00
2020-03-20 22:48:04 -06:00
from judge.jinja2.gravatar import gravatar
2020-03-15 20:23:14 -06:00
from .models import Message
2020-03-20 22:48:04 -06:00
import json
2020-01-27 14:37:52 -06:00
2020-03-15 20:23:14 -06:00
2020-03-20 15:34:33 -06:00
def format_time(time):
return time.strftime('%H:%M %p %d-%m-%Y')
2020-03-20 22:48:04 -06:00
def format_messages(messages):
msg_list = [{
'time': format_time(msg.time),
'author': str(msg.author),
'body': msg.body,
'image': gravatar(msg.author, 32),
} for msg in messages]
return json.dumps(msg_list)
2020-03-15 20:23:14 -06:00
class ChatView(ListView):
model = Message
2020-03-19 16:51:56 -06:00
context_object_name = 'message'
2020-03-15 20:23:14 -06:00
template_name = 'chat/chat.html'
2020-03-18 23:13:55 -06:00
title = _('Chat Box')
2020-03-20 15:34:33 -06:00
paginate_by = 50
2020-03-20 22:48:04 -06:00
paginator = Paginator(Message.objects.all(), paginate_by)
def get(self, request, *args, **kwargs):
page = request.GET.get('page')
if (page == None):
return super().get(request, *args, **kwargs)
cur_page = self.paginator.get_page(page)
return HttpResponse(format_messages(cur_page.object_list))
2020-03-18 23:13:55 -06:00
def get_context_data(self, **kwargs):
2020-03-19 16:51:56 -06:00
context = super().get_context_data(**kwargs)
2020-03-18 23:13:55 -06:00
context['title'] = self.title
2020-03-20 15:34:33 -06:00
2020-03-20 22:48:04 -06:00
for msg in context['message']:
2020-03-20 15:34:33 -06:00
msg.time = format_time(msg.time)
2020-03-18 23:13:55 -06:00
return context