diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py index 3266038c5..8b3a67dc8 100644 --- a/api/chalicelib/core/sessions.py +++ b/api/chalicelib/core/sessions.py @@ -889,7 +889,7 @@ def search_query_parts(data: schemas.SessionsSearchPayloadSchema, error_status, apply = True elif f.type == schemas.FetchFilterType._status_code: event_where.append( - sh.multi_conditions(f"main.status_code {f.operator.value} %({e_k_f})s::integer", f.value, + sh.multi_conditions(f"main.status_code {f.operator} %({e_k_f})s::integer", f.value, value_key=e_k_f)) apply = True elif f.type == schemas.FetchFilterType._method: @@ -898,7 +898,7 @@ def search_query_parts(data: schemas.SessionsSearchPayloadSchema, error_status, apply = True elif f.type == schemas.FetchFilterType._duration: event_where.append( - sh.multi_conditions(f"main.duration {f.operator.value} %({e_k_f})s::integer", f.value, + sh.multi_conditions(f"main.duration {f.operator} %({e_k_f})s::integer", f.value, value_key=e_k_f)) apply = True elif f.type == schemas.FetchFilterType._request_body: diff --git a/api/chalicelib/core/users.py b/api/chalicelib/core/users.py index ce8f9c65b..13d76552a 100644 --- a/api/chalicelib/core/users.py +++ b/api/chalicelib/core/users.py @@ -17,59 +17,6 @@ def __generate_invitation_token(): return secrets.token_urlsafe(64) -def get_user_settings(user_id): - # read user settings from users.settings:jsonb column - with pg_client.PostgresClient() as cur: - cur.execute( - cur.mogrify( - f"""SELECT - settings - FROM public.users - WHERE users.deleted_at IS NULL - AND users.user_id=%(user_id)s - LIMIT 1""", - {"user_id": user_id}) - ) - return helper.dict_to_camel_case(cur.fetchone()) - - -def update_user_module(user_id, data: schemas.ModuleStatus): - # example data = {"settings": {"modules": ['ASSIST', 'METADATA']} - # update user settings from users.settings:jsonb column only update settings.modules - # if module property is not exists, it will be created - # if module property exists, it will be updated, modify here and call update_user_settings - # module is a single element to be added or removed - settings = get_user_settings(user_id)["settings"] - if settings is None: - settings = {} - - if settings.get("modules") is None: - settings["modules"] = [] - - if data.status and data.module not in settings["modules"]: - settings["modules"].append(data.module) - - elif not data.status and data.module in settings["modules"]: - settings["modules"].remove(data.module) - - return update_user_settings(user_id, settings) - - -def update_user_settings(user_id, settings): - # update user settings from users.settings:jsonb column - with pg_client.PostgresClient() as cur: - cur.execute( - cur.mogrify( - f"""UPDATE public.users - SET settings = %(settings)s - WHERE users.user_id = %(user_id)s - AND deleted_at IS NULL - RETURNING settings;""", - {"user_id": user_id, "settings": json.dumps(settings)}) - ) - return helper.dict_to_camel_case(cur.fetchone()) - - def create_new_member(email, invitation_token, admin, name, owner=False): with pg_client.PostgresClient() as cur: query = cur.mogrify(f"""\ @@ -736,3 +683,56 @@ def get_user_role(tenant_id, user_id): {"user_id": user_id}) ) return helper.dict_to_camel_case(cur.fetchone()) + + +def get_user_settings(user_id): + # read user settings from users.settings:jsonb column + with pg_client.PostgresClient() as cur: + cur.execute( + cur.mogrify( + f"""SELECT + settings + FROM public.users + WHERE users.deleted_at IS NULL + AND users.user_id=%(user_id)s + LIMIT 1""", + {"user_id": user_id}) + ) + return helper.dict_to_camel_case(cur.fetchone()) + + +def update_user_module(user_id, data: schemas.ModuleStatus): + # example data = {"settings": {"modules": ['ASSIST', 'METADATA']} + # update user settings from users.settings:jsonb column only update settings.modules + # if module property is not exists, it will be created + # if module property exists, it will be updated, modify here and call update_user_settings + # module is a single element to be added or removed + settings = get_user_settings(user_id)["settings"] + if settings is None: + settings = {} + + if settings.get("modules") is None: + settings["modules"] = [] + + if data.status and data.module not in settings["modules"]: + settings["modules"].append(data.module) + + elif not data.status and data.module in settings["modules"]: + settings["modules"].remove(data.module) + + return update_user_settings(user_id, settings) + + +def update_user_settings(user_id, settings): + # update user settings from users.settings:jsonb column + with pg_client.PostgresClient() as cur: + cur.execute( + cur.mogrify( + f"""UPDATE public.users + SET settings = %(settings)s + WHERE users.user_id = %(user_id)s + AND deleted_at IS NULL + RETURNING settings;""", + {"user_id": user_id, "settings": json.dumps(settings)}) + ) + return helper.dict_to_camel_case(cur.fetchone()) diff --git a/api/routers/core.py b/api/routers/core.py index e78c5e678..3bbc3deb7 100644 --- a/api/routers/core.py +++ b/api/routers/core.py @@ -642,7 +642,7 @@ def generate_new_tenant_token(context: schemas.CurrentContext = Depends(OR_conte @app.post('/users/modules', tags=['users']) def update_user_module(context: schemas.CurrentContext = Depends(OR_context), data: schemas.ModuleStatus = Body(...)): - return users.update_user_module(context.user_id, data) + return {"data": users.update_user_module(context.user_id, data)} @app.get('/notifications', tags=['notifications']) @@ -859,4 +859,3 @@ async def check_recording_status(project_id: int): @public_app.get('/', tags=["health"]) def health_check(): return {} - diff --git a/ee/api/chalicelib/core/sessions_exp.py b/ee/api/chalicelib/core/sessions_exp.py index 02fadc37a..80c5b5b5a 100644 --- a/ee/api/chalicelib/core/sessions_exp.py +++ b/ee/api/chalicelib/core/sessions_exp.py @@ -1062,7 +1062,7 @@ def search_query_parts_ch(data: schemas.SessionsSearchPayloadSchema, error_statu apply = True elif f.type == schemas.FetchFilterType._status_code: event_where.append( - _multiple_conditions(f"main.status {f.operator.value} %({e_k_f})s", f.value, + _multiple_conditions(f"main.status {f.operator} %({e_k_f})s", f.value, value_key=e_k_f)) events_conditions[-1]["condition"].append(event_where[-1]) apply = True @@ -1073,7 +1073,7 @@ def search_query_parts_ch(data: schemas.SessionsSearchPayloadSchema, error_statu apply = True elif f.type == schemas.FetchFilterType._duration: event_where.append( - _multiple_conditions(f"main.duration {f.operator.value} %({e_k_f})s", f.value, + _multiple_conditions(f"main.duration {f.operator} %({e_k_f})s", f.value, value_key=e_k_f)) events_conditions[-1]["condition"].append(event_where[-1]) apply = True diff --git a/ee/api/chalicelib/core/users.py b/ee/api/chalicelib/core/users.py index 9ade130c9..19e1d96e1 100644 --- a/ee/api/chalicelib/core/users.py +++ b/ee/api/chalicelib/core/users.py @@ -936,3 +936,56 @@ def restore_sso_user(user_id, tenant_id, email, admin, name, origin, role_id, in query ) return helper.dict_to_camel_case(cur.fetchone()) + + +def get_user_settings(user_id): + # read user settings from users.settings:jsonb column + with pg_client.PostgresClient() as cur: + cur.execute( + cur.mogrify( + f"""SELECT + settings + FROM public.users + WHERE users.deleted_at IS NULL + AND users.user_id=%(user_id)s + LIMIT 1""", + {"user_id": user_id}) + ) + return helper.dict_to_camel_case(cur.fetchone()) + + +def update_user_module(user_id, data: schemas.ModuleStatus): + # example data = {"settings": {"modules": ['ASSIST', 'METADATA']} + # update user settings from users.settings:jsonb column only update settings.modules + # if module property is not exists, it will be created + # if module property exists, it will be updated, modify here and call update_user_settings + # module is a single element to be added or removed + settings = get_user_settings(user_id)["settings"] + if settings is None: + settings = {} + + if settings.get("modules") is None: + settings["modules"] = [] + + if data.status and data.module not in settings["modules"]: + settings["modules"].append(data.module) + + elif not data.status and data.module in settings["modules"]: + settings["modules"].remove(data.module) + + return update_user_settings(user_id, settings) + + +def update_user_settings(user_id, settings): + # update user settings from users.settings:jsonb column + with pg_client.PostgresClient() as cur: + cur.execute( + cur.mogrify( + f"""UPDATE public.users + SET settings = %(settings)s + WHERE users.user_id = %(user_id)s + AND deleted_at IS NULL + RETURNING settings;""", + {"user_id": user_id, "settings": json.dumps(settings)}) + ) + return helper.dict_to_camel_case(cur.fetchone())