|
|
|
|
@ -56,10 +56,8 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
waiters = set() |
|
|
|
|
|
|
|
|
|
def open(self, *args, **kwargs): |
|
|
|
|
self.waiters.add(self) |
|
|
|
|
# print(dir(self)) |
|
|
|
|
print(self.patch) |
|
|
|
|
# print(self.waiters) |
|
|
|
|
self.user_id = kwargs.get('user_id',1) |
|
|
|
|
self.waiters.add((self.user_id, self)) |
|
|
|
|
|
|
|
|
|
# @gen.coroutine |
|
|
|
|
def on_message(self, message): |
|
|
|
|
@ -70,13 +68,16 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
if parsed['format_type'] == 'add_message_contact': |
|
|
|
|
self.add_message_for_contact(parsed['data']['chat_message'], parsed['data']['sender_id'], |
|
|
|
|
parsed['data']['recipent_id']) |
|
|
|
|
elif parsed['format_type'] == 'add_message_order': |
|
|
|
|
self.add_message_for_order(parsed['data']['chat_message'], parsed['data']['sender_id'], |
|
|
|
|
parsed['data']['recipent_id'], parsed['data']['order_id']) |
|
|
|
|
elif parsed['format_type'] == 'order_message': |
|
|
|
|
self.get_messages_from_order_chat(parsed['order_id']) |
|
|
|
|
else: |
|
|
|
|
self.get_messages_from_order(parsed['user_id']) |
|
|
|
|
|
|
|
|
|
def on_close(self): |
|
|
|
|
self.waiters.remove(self) |
|
|
|
|
self.waiters.remove((self.user_id, self)) |
|
|
|
|
|
|
|
|
|
# insert_sql = "INSERT INTO chat_message (id,text,created,order_id, user_id) VALUES (DEFAULT,'{0}',NOW(),6,4)".format(str(parsed['message'])) |
|
|
|
|
# yield self.db.execute(insert_sql) |
|
|
|
|
@ -91,9 +92,19 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
insert_sql = "INSERT INTO chat_message (id,text,created,order_id, sender_id,recipent_id, private_type) " \ |
|
|
|
|
"VALUES (DEFAULT,'{0}',NOW(),NULL,{1},{2},'true')".format(message, sender_id, recipent_id) |
|
|
|
|
yield self.db.execute(insert_sql) |
|
|
|
|
for waiter in self.waiters: |
|
|
|
|
waiters = tuple(w for c, w in self.waiters if c == recipent_id) |
|
|
|
|
for waiter in waiters: |
|
|
|
|
waiter.write_message({'msg': message, 'answer_type': 'add_contact'}) |
|
|
|
|
|
|
|
|
|
@gen.coroutine |
|
|
|
|
def add_message_for_order(self, message, sender_id,recipent_id, order_id): |
|
|
|
|
insert_sql = "INSERT INTO chat_message (id,text,created,order_id, sender_id,recipent_id, private_type) " \ |
|
|
|
|
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},'false')".format(message,order_id, sender_id, recipent_id) |
|
|
|
|
yield self.db.execute(insert_sql) |
|
|
|
|
waiters = tuple(w for c, w in self.waiters if c == recipent_id) |
|
|
|
|
for waiter in waiters: |
|
|
|
|
waiter.write_message({'msg': message, 'answer_type': 'add_order'}) |
|
|
|
|
|
|
|
|
|
@gen.coroutine |
|
|
|
|
def get_messages_from_order(self, order_id): |
|
|
|
|
sql = "SELECT text FROM chat_message WHERE recipent_id=" + order_id |
|
|
|
|
@ -119,7 +130,7 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
class Application(web.Application): |
|
|
|
|
def __init__(self): |
|
|
|
|
handlers = [ |
|
|
|
|
(r"/chat", TutorialHandler), |
|
|
|
|
(r"/chat/(?P<user_id>\d+)/", TutorialHandler), |
|
|
|
|
(r"/test", TestHandler), |
|
|
|
|
] |
|
|
|
|
super().__init__(handlers=handlers, **settings) |
|
|
|
|
|