Titivillus/quest/events.py

47 lines
965 B
Python
Raw Normal View History

#!/usr/bin/env python3
"""
Individual functions for handling WebSocket events. Gets called by the
QuestConsumer object in consumers.py.
"""
2018-08-16 15:43:43 -04:00
import time
import types
2018-08-16 15:43:43 -04:00
import bleach
from quest.models import Message, Quest
def message(socket, data):
"""
Gets called when the server receives a 'message' event.
"""
# TODO: validation
message = data.get('message')
quest_id = data.get('quest_id')
2018-08-16 15:43:43 -04:00
message = message.strip()
if not message:
return
tags = ["b", "code", "i", "s"]
message = bleach.clean(message, tags=tags)
user = socket.scope['user']
m = Message(
quest=Quest.objects.get(id=quest_id),
message=message)
if user.username:
m.user = user
m.save()
data = {}
data['message_id'] = m.id
2018-08-16 15:43:43 -04:00
data['message'] = message
data['date'] = int(time.time())
data['name'] = user.username
socket.send('message', data)
events = {}
for obj in dir():
if type(locals()[obj]) == types.FunctionType:
events[locals()[obj].__name__] = locals()[obj]