コード例 #1
0
def create_room():
    """
    Создание комнаты для общения пользователей
    - Принимает список id пользователей
    """
    creator_id = request.args.get("creator_id")
    users = request.args.get("users")
    user_key = request.args.get("user_key")
    room_name = request.args.get("room_name")

    # Фильтрация на поля
    if any([x is None for x in (creator_id, users, user_key)]):
        return {"result": False, "description": "no enough values"}

    # Проверка на авторизацию
    if mongo.get_users_auth({"key": user_key}) == 0:
        return {"result": False, "description": "invalid auth key"}

    # Фильтрация на существование пользователей
    users_list = users.split(",")
    if any([mongo.get_users_auth({"_id": user}) == 0 for user in users_list]):
        return {"result": False, "description": "some users does not exist"}

    # Если создателя нет в списке пользователей комнаты, то добавляем его
    if creator_id not in users_list:
        users_list.append(creator_id)

    #Выставляем комнату
    new_room = Room(creator_id=creator_id, users=users_list, name=room_name)
    mongo.set_rooms([new_room])

    #Сообщение о том, что комната была создана
    user_name = mongo.get_users_auth({"_id": creator_id})[0].name
    message = Message(creator_id, user_name, "*Комната была создана*",
                      new_room.id)
    mongo.set_messages([message])

    return {"result": True, "body": new_room.to_mongo()}