async def on_message(self, message):
        data = json_decode(message)
        send_private_chat_message(message=message, receiver=data['user'])
        receiver_connection = private_chat_ws_connections.get(self.receiver)

        if receiver_connection and receiver_connection.receiver == data['user']:
            if receiver_connection.receiver == data['user']:
                send_private_chat_message(message=message, receiver=data['send_to'])

        await self.insert(
            table='chat',
            params=dict(
                sender=data['user'],
                reciever=data['send_to'],
                message=data['message'],
                date_created=datetime.datetime.now())
        )
        unread_private_message = await self.get_unread_messages(xhtml_unescape(data['send_to']))
        if data['send_to'] in group_chat_ws_connections.keys():
            send_group_chat_message(message=unread_private_message[0]['count'],
                                    message_type='unreaded',
                                    receiver=xhtml_unescape(data['send_to'])
                                    )
        if data['send_to'] in private_chat_ws_connections.keys():
            send_private_chat_message(message=unread_private_message[0]['count'],
                                      message_type='unreaded',
                                      receiver=xhtml_unescape(data['send_to'])
                                      )
    async def get(self, user):
        if not self.current_user:
            self.redirect("/login")
        else:
            friend_one_id = await self.get_user_id(self.current_user)
            friend_two_id = await self.get_user_id(user)
            await self.update(
                query=" UPDATE friends SET status='1' " +
                " where (friend_one = '%(friend_one)s' or friend_two = '%(friend_one)s') "
                +
                " and (friend_one = '%(friend_two)s' or friend_two = '%(friend_two)s') ",
                params=dict(friend_one=str(friend_one_id[0]['id']),
                            friend_two=str(friend_two_id[0]['id'])))
            first_user_friends_quantity = await self.get_friends_quantity(
                friend_one_id)
            second_user_friends_quantity = await self.get_friends_quantity(
                friend_two_id)
            if self.current_user in group_chat_ws_connections.keys():
                send_group_chat_message(
                    message=first_user_friends_quantity[0]['count'],
                    message_type='friends',
                    receiver=self.current_user)

            if user in group_chat_ws_connections.keys():
                send_group_chat_message(
                    message=second_user_friends_quantity[0]['count'],
                    message_type='friends',
                    receiver=user)
            if user in private_chat_ws_connections.keys():
                send_private_chat_message(
                    message=second_user_friends_quantity[0]['count'],
                    message_type='friends',
                    receiver=user)

            self.redirect('/requests')
 async def on_message(self, message):
     send_group_chat_message(message=message)
     data = json_decode(message)
     await self.insert(
         table='chat',
         params=dict(
             sender=xhtml_unescape(data['user']),
             message=data['message'],
             date_created=datetime.datetime.now(),
         )
     )
 async def get(self, user):
     if not self.current_user:
         self.redirect("/login")
     else:
         friend_one_id = await self.get_user_id(self.current_user)
         friend_two_id = await self.get_user_id(user)
         await self.insert(table='friends',
                           params=dict(
                               friend_one=str(friend_one_id[0]['id']),
                               friend_two=str(friend_two_id[0]['id'])))
         friendship_requests = await self.get_friendship_requests(
             friend_two_id)
         if user in group_chat_ws_connections.keys():
             send_group_chat_message(
                 message_type='requests',
                 message=friendship_requests[0]['count'],
                 receiver=user)
         if user in private_chat_ws_connections.keys():
             send_private_chat_message(
                 message_type='requests',
                 message=friendship_requests[0]['count'],
                 receiver=user)
         self.redirect('/')
    async def open(self):
        group_chat_ws_connections[self.get_current_user()] = self
        send_group_chat_message(message_type='online_users', message=get_online_users())
        current_id = await self.get_user_id(self.get_current_user())
        friendship_requests = await self.get_friendship_requests(current_id)
        unread_private_message = await self.get_unread_messages(self.current_user)
        friend_count = await self.get_friends_quantity(current_id)
        send_group_chat_message(message_type='friends',
                                message=friend_count[0]['count'],
                                receiver=self.current_user
                                )

        send_group_chat_message(message_type='requests',
                                message=friendship_requests[0]['count'],
                                receiver=self.current_user
                                )
        send_group_chat_message(message_type='unreaded',
                                message=unread_private_message[0]['count'],
                                receiver=self.current_user
                                )
 def on_close(self):
     group_chat_ws_connections.pop(self.get_current_user())
     send_group_chat_message(message_type='online_users', message=get_online_users(self.get_current_user()))