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
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})
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)
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})
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})
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)
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)