def start_chat(conn, username, trans=None): """first part of message interchange for starting a one-to-one conversation""" user = ConnectedUser.__users__.get(username) sender = conn.data['user'] if sender is user: conn.send(UserError.startchat_cannot_chat_with_yourself(), trans) return chat = Chat() def callback(accepted): if accepted: conn.send(UserOk.startchat_accepted(chat.id, sender.db_tuple.name, username), trans) else: sender.exitChat(chat) conn.send(UserOk.startchat_not_accepted(), trans) if user is not None: sender.enterChat(chat) user.callIntoChat(sender, chat.id, callback) else: conn.send(UserError.user_not_connected(), trans)