diff --git a/chat_box/consumers.py b/chat_box/consumers.py deleted file mode 100644 index cb7cd18..0000000 --- a/chat_box/consumers.py +++ /dev/null @@ -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) \ No newline at end of file diff --git a/judge/utils/problem_data.py b/judge/utils/problem_data.py index da26e60..5954895 100644 --- a/judge/utils/problem_data.py +++ b/judge/utils/problem_data.py @@ -1,3 +1,4 @@ +import hashlib import json import os import re @@ -248,7 +249,7 @@ def get_visible_content(data): def get_file_cachekey(file): - return file.replace(' ', '===') + return hashlib.sha1(file.encode()).hexdigest() def get_problem_case(problem, files): result = {} diff --git a/templates/chat/chat.html b/templates/chat/chat.html index 620cc5e..8bc2d49 100644 --- a/templates/chat/chat.html +++ b/templates/chat/chat.html @@ -47,7 +47,6 @@ function remove_day_if_today() { $('.message_date').each(function() { sent_date = $(this).html() - console.log(sent_date); if (sent_date === "{{today}}") { $(this).hide(); } @@ -124,12 +123,14 @@ body: body, }; + $('#chat-input').val(''); + $.post("{{ url('post_chat_message') }}", message) .fail(function(res) { console.log('Fail to send message'); }) .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); remove_day_if_today(); load_dynamic_update({{last_msg}}); @@ -256,4 +261,4 @@ -{% endblock body %} \ No newline at end of file +{% endblock body %}