|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
import os.path |
|
|
|
|
import html |
|
|
|
|
from tornado import gen, web, websocket, escape, options |
|
|
|
|
from tornado.ioloop import IOLoop |
|
|
|
|
from tornado.httpserver import HTTPServer |
|
|
|
|
@ -33,7 +33,6 @@ class ChatHandler(websocket.WebSocketHandler): |
|
|
|
|
if 'dummy' in parsed: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
print(parsed['format_type']) |
|
|
|
|
if 'approve_stages' in parsed['format_type']: |
|
|
|
|
self.approve_stages(parsed) |
|
|
|
|
else: |
|
|
|
|
@ -60,6 +59,8 @@ class ChatHandler(websocket.WebSocketHandler): |
|
|
|
|
order_id = message_data['data'].get('order_id', None) |
|
|
|
|
team_id = message_data['data'].get('team_id', None) |
|
|
|
|
message = message_data['data'].get('chat_message', None) |
|
|
|
|
message = html.escape(message) |
|
|
|
|
message = message.replace('\n', '<br />') |
|
|
|
|
|
|
|
|
|
answer_type = message_data['format_type'] |
|
|
|
|
private_type = 'true' if not order_id and not team_id else 'false' |
|
|
|
|
@ -74,14 +75,26 @@ class ChatHandler(websocket.WebSocketHandler): |
|
|
|
|
|
|
|
|
|
insert_sql = "INSERT INTO chat_message (id,text,created, sender_id,recipent_id," \ |
|
|
|
|
" private_type,team_id, order_id,is_delete,is_new) " \ |
|
|
|
|
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},{4},{5},{6},{7})".\ |
|
|
|
|
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},{4},{5},{6},{7}) RETURNING id".\ |
|
|
|
|
format(message, sender_id, recipent_id, private_type, team_value,order_value, is_delete, is_new) |
|
|
|
|
|
|
|
|
|
yield self.db.execute(insert_sql) |
|
|
|
|
waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id) |
|
|
|
|
cursor_list = yield dict(cursor=self.db.execute(insert_sql)) |
|
|
|
|
cursor = cursor_list.get('cursor') |
|
|
|
|
result = cursor.fetchone() |
|
|
|
|
message_id = result[0] |
|
|
|
|
select_last_sql = "SELECT chat_message.id, chat_message.text, chat_message.created, chat_message.sender_id," \ |
|
|
|
|
"users_user.id, users_user.username FROM chat_message" \ |
|
|
|
|
" INNER JOIN users_user ON (chat_message.sender_id = users_user.id)" \ |
|
|
|
|
" WHERE chat_message.id = {0}".format(message_id) |
|
|
|
|
|
|
|
|
|
cursor_msg = yield self.db.execute(select_last_sql) |
|
|
|
|
msg_data = cursor_msg.fetchone() |
|
|
|
|
sender_name = msg_data[5] |
|
|
|
|
msg_time = msg_data[2].strftime("%Y-%m-%d %H:%M:%S") |
|
|
|
|
|
|
|
|
|
waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id) |
|
|
|
|
for waiter in waiters: |
|
|
|
|
waiter.write_message({'msg': message, 'answer_type': answer_type}) |
|
|
|
|
waiter.write_message({'msg': message, 'msg_time': msg_time, 'sender_id': sender_id, 'sender_name': sender_name, 'answer_type': answer_type}) |
|
|
|
|
|
|
|
|
|
def check_origin(self, origin): |
|
|
|
|
return True |
|
|
|
|
|