コード例 #1
0
async def register(websocket):
    message = await websocket.recv()
    message = json.loads(message)
    sessionHash = message["sessionHash"]
    user_id = try_to_int(message["user_id"])
    chat_id = try_to_int(message["chat_id"])
    if sessionHash is None or chat_id is None:
        return None, None
    user_temp = db.find_user_by_sessionid(user_id, sessionHash)
    if not user_temp:
        return None, None

    chat = db.get_chats_by_user(user_id=user_temp.id, chat_id=chat_id)
    session_chat = find_first(lambda sc: sc.chat.id == chat.id, SESSION_CHATS)
    if session_chat is None:
        chat_extended = db.get_chats_by_user(user_id=user_temp.id,
                                             chat_id=chat_id,
                                             is_messages=True,
                                             is_users=True)
        session_chat = SessionChat(chat_extended)
        async with lock:
            SESSION_CHATS.append(session_chat)
    user = find_first(lambda u: u.id == user_temp.id, session_chat.chat.users)
    is_new_user = False
    if user is None:
        is_new_user = True
        user = user_temp
        session_chat.chat.users.append(user)

    user_info = await session_chat.connect_chat(websocket, user, is_new_user)
    return session_chat, user_info
コード例 #2
0
ファイル: json.py プロジェクト: Indecastle/ITIROTD
def json_get_users(request, **kwargs):
    query = request.query
    substr, count = query.get2('search', ''), query.get2('count', 100)
    count = try_to_int(count)
    if count is None:
        json_list_users = '[]'
    else:
        list_users = db.get_users(where=f'WHERE login LIKE "%{substr}%"', limit=f'LIMIT {count}')
        json_list_users = [u.to_dict() for u in list_users]
    return json.dumps({'user': json_list_users})
コード例 #3
0
def chat_groupchats(request, **kwargs):
    query = request.query
    count_str = query.get('count', [0])[0]
    count = try_to_int(count_str, null=0)

    kwargs.update(count=count)

    user = request.auth_get_user()
    chats = db.get_chats_by_user(user.id, limit=count)
    kwargs.update(chats=chats)

    return render_template(request, 'templates/chat/groupchats.html', kwargs=kwargs)
コード例 #4
0
ファイル: json.py プロジェクト: Indecastle/ITIROTD
def json_get_chats(request, **kwargs):
    user = request.auth_get_user()
    query = request.query
    substr, isnotmy, count = query.get2('search', ''), query.get2('isnotmy', False), query.get2('count', 100)
    count = try_to_int(count)
    isnotmy = try_jsbool_to_bool(isnotmy)
    if count is None or user is None:
        json_list_chats = '[]'
    else:
        list_chats = db.get_chats_by_user(user.id, where=f'chat.name LIKE "%{substr}%"',
                                          limit=f'LIMIT {count}', is_other=isnotmy)
        if list_chats is None:
            list_chats = []
        json_list_chats = [c.to_dict() for c in list_chats]
    return json.dumps({'chats': json_list_chats})
コード例 #5
0
ファイル: enjoy.py プロジェクト: Indecastle/ITIROTD
def chat_enjoy(request, **kwargs):
    query = request.query
    chat_id = query.get2('chat_id')
    if chat_id is None or try_to_int(chat_id) is None:
        request.response.code = 444
        return my_error(request, message=("chat", "chat not found"))
    user = request.auth_get_user()
    # chat = db.get_chats_by_user(user_id=user.id, chat_id=chat_id, is_users=True)
    chat = db.find_chat({'id': chat_id}, is_users=True)

    if chat is None:
        request.response.code = 444
        return my_error(request, message=("chat", "chat not found"))
    elif any(u.id == user.id for u in chat.users):
        request.response.code = 444
        return my_error(request, message=("chat", "chat has user"))
    return render_template(request, 'templates/chat/enjoychat.html', kwargs={'chat':chat})
コード例 #6
0
def chat(request):
    query = request.query
    # chat_id, chat_password = request.query_get('chat_id'), request.query_get('chat_id')
    chat_id = query.get2('chat_id')
    if chat_id is None or try_to_int(chat_id) is None:
        request.response.code = 404
        return my_error(request, message=("chat", "bad chat_id"))
        # return redirect_to(request, '/')
    chat = db.find_chat({'id': chat_id})
    if chat is None:
        request.response.code = 404
        return my_error(request, message=("chat", "chat not found"))
    user = request.auth_get_user()
    chat = db.get_chats_by_user(user_id=user.id, chat_id=chat_id)
    if chat is None:
        return redirect_to(request, f'/chat/enjoy_chat?chat_id={chat_id}')

    kwargs = {}
    return render_template(request, 'templates/chat/chat.html', kwargs=kwargs)
コード例 #7
0
ファイル: enjoy.py プロジェクト: Indecastle/ITIROTD
def chat_enjoy_POST(request, **kwargs):
    query = request.POST_query
    chat_id, chat_password = query.get2('chat_id'), query.get2('pass')
    if chat_id is None or try_to_int(chat_id) is None:
        return redirect_to(request, '/')

    user = request.auth_get_user()
    chat = db.find_chat({'id': chat_id}, is_users=True)
    ajax_json = {}
    if chat is None:
        ajax_json.update(message='Chat not found or bad passwor')
        return json.dumps(ajax_json)
    elif chat.secure == Chat.Type.SECURE and chat.password != chat_password:
        ajax_json.update(message='Bad password')
        return json.dumps(ajax_json)
    elif any(u.id == user.id for u in chat.users):
        ajax_json.update(message='Chat has user')
        return json.dumps(ajax_json)
    db.add_user_to_chat(chat_id, user.id)

    ajax_json.update(redirect=True,
                     newurl='/chat/chat?chat_id=%s' % chat_id)
    redirect_to(request, is_manual=True)
    return json.dumps(ajax_json)