This commit is contained in:
cuom1999 2021-07-01 20:18:17 -05:00
commit 5e21332911
3 changed files with 10 additions and 80 deletions

View file

@ -1,76 +0,0 @@
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from .models import Message
from django.urls import reverse
from django.http import HttpResponse, HttpResponseRedirect
from django.core import serializers
from judge.jinja2.gravatar import gravatar
from judge.models.profile import Profile
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = 'room'
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name,
)
await self.accept()
async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name,
)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
author = self.scope['user']
author = Profile.objects.get(user=author)
message['author'] = author.username
message['css_class'] = author.css_class
message['image'] = gravatar(author, 32)
message_saved = save_data_and_return(message, author)
message['time'] = message_saved[0]['fields']['time']
message['id'] = message_saved[0]['pk']
# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
},
)
# Receive message from room group
async def chat_message(self, event):
message = event['message']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message,
}))
# return time
def save_data_and_return(message, author):
new_message = Message(body=message['body'],
author=author,
)
new_message.save()
json_data = serializers.serialize("json",
Message.objects
.filter(pk=new_message.id)
)
return json.loads(json_data)

View file

@ -1,3 +1,4 @@
import hashlib
import json import json
import os import os
import re import re
@ -248,7 +249,7 @@ def get_visible_content(data):
def get_file_cachekey(file): def get_file_cachekey(file):
return file.replace(' ', '===') return hashlib.sha1(file.encode()).hexdigest()
def get_problem_case(problem, files): def get_problem_case(problem, files):
result = {} result = {}

View file

@ -47,7 +47,6 @@
function remove_day_if_today() { function remove_day_if_today() {
$('.message_date').each(function() { $('.message_date').each(function() {
sent_date = $(this).html() sent_date = $(this).html()
console.log(sent_date);
if (sent_date === "{{today}}") { if (sent_date === "{{today}}") {
$(this).hide(); $(this).hide();
} }
@ -124,12 +123,14 @@
body: body, body: body,
}; };
$('#chat-input').val('');
$.post("{{ url('post_chat_message') }}", message) $.post("{{ url('post_chat_message') }}", message)
.fail(function(res) { .fail(function(res) {
console.log('Fail to send message'); console.log('Fail to send message');
}) })
.done(function(res, status) { .done(function(res, status) {
$('#chat-input').val('').focus(); $('#chat-input').focus();
}) })
} }
}); });
@ -196,6 +197,10 @@
}) })
}) })
setInterval(function() {
$('#refresh-button').click();
}, 5 * 60 * 1000);
$('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight);
remove_day_if_today(); remove_day_if_today();
load_dynamic_update({{last_msg}}); load_dynamic_update({{last_msg}});