|
|
|
|
@ -26,29 +26,7 @@ class BaseHandler(web.RequestHandler): |
|
|
|
|
return self.application.db |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestHandler(web.RequestHandler): |
|
|
|
|
@property |
|
|
|
|
def db(self): |
|
|
|
|
return self.application.db |
|
|
|
|
|
|
|
|
|
@gen.coroutine |
|
|
|
|
def get(self, *args, **kwargs): |
|
|
|
|
sql = "SELECT text,created FROM chat_message" |
|
|
|
|
cursor = yield self.db.execute(sql) |
|
|
|
|
data = cursor.fetchall() |
|
|
|
|
for d in data: |
|
|
|
|
print(d[1]) |
|
|
|
|
print(type(d[1])) |
|
|
|
|
print(str(d[1])) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class NotificationHandler(websocket.WebSocketHandler): |
|
|
|
|
@property |
|
|
|
|
def db(self): |
|
|
|
|
return self.application.db |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
class ChatHandler(websocket.WebSocketHandler): |
|
|
|
|
@property |
|
|
|
|
def db(self): |
|
|
|
|
return self.application.db |
|
|
|
|
@ -65,63 +43,36 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
if 'dummy' in parsed: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
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']) |
|
|
|
|
self.add_message(parsed) |
|
|
|
|
|
|
|
|
|
def on_close(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) |
|
|
|
|
# |
|
|
|
|
# # cursor = yield self.db.execute("SELECT * FROM chat_message") |
|
|
|
|
# # data = cursor.fetchall() |
|
|
|
|
# for waiter in self.waiters: |
|
|
|
|
# waiter.write_message({'msg': parsed['message']}) |
|
|
|
|
# waiter.write_message({'msg': message, 'answer_type': 'add_contact'}) |
|
|
|
|
# waiter.write_message({'msg': message, 'answer_type': 'add_order'}) |
|
|
|
|
|
|
|
|
|
@gen.coroutine |
|
|
|
|
def add_message_for_contact(self, message, sender_id, recipent_id): |
|
|
|
|
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) |
|
|
|
|
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'}) |
|
|
|
|
def add_message(self, message_data): |
|
|
|
|
sender_id = message_data['data']['sender_id'] |
|
|
|
|
recipent_id = message_data['data']['recipent_id'] |
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
answer_type = message_data['format_type'] |
|
|
|
|
private_type = 'true' if not order_id and not team_id else 'false' |
|
|
|
|
|
|
|
|
|
team_value = "NULL" if team_id is None else team_id |
|
|
|
|
order_value = "NULL" if order_id is None else order_id |
|
|
|
|
|
|
|
|
|
insert_sql = "INSERT INTO chat_message (id,text,created, sender_id,recipent_id, private_type,team_id, order_id) " \ |
|
|
|
|
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},{4},{5})".format(message, sender_id, recipent_id, private_type, team_value,order_value) |
|
|
|
|
|
|
|
|
|
@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 or c == sender_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 |
|
|
|
|
cursor = yield self.db.execute(sql) |
|
|
|
|
messages = cursor.fetchall() |
|
|
|
|
for msg in messages: |
|
|
|
|
for waiter in self.waiters: |
|
|
|
|
waiter.write_message(json.dumps({'msg': msg[0], 'answer_type': 'order'})) |
|
|
|
|
|
|
|
|
|
@gen.coroutine |
|
|
|
|
def get_messages_from_order_chat(self, order_id): |
|
|
|
|
sql = "SELECT text FROM chat_message WHERE order_id=" + order_id |
|
|
|
|
cursor = yield self.db.execute(sql) |
|
|
|
|
messages = cursor.fetchall() |
|
|
|
|
for msg in messages: |
|
|
|
|
for waiter in self.waiters: |
|
|
|
|
waiter.write_message({'msg': msg[0], 'answer_type': 'contact'}) |
|
|
|
|
for waiter in waiters: |
|
|
|
|
waiter.write_message({'msg': message, 'answer_type': answer_type}) |
|
|
|
|
|
|
|
|
|
def check_origin(self, origin): |
|
|
|
|
return True |
|
|
|
|
@ -130,8 +81,7 @@ class TutorialHandler(websocket.WebSocketHandler): |
|
|
|
|
class Application(web.Application): |
|
|
|
|
def __init__(self): |
|
|
|
|
handlers = [ |
|
|
|
|
(r"/chat/(?P<user_id>\d+)/", TutorialHandler), |
|
|
|
|
(r"/test", TestHandler), |
|
|
|
|
(r"/chat/(?P<user_id>\d+)/", ChatHandler), |
|
|
|
|
] |
|
|
|
|
super().__init__(handlers=handlers, **settings) |
|
|
|
|
|
|
|
|
|
|