From ca374a1c823d1d87d872972cf853d0fa0d6b1a44 Mon Sep 17 00:00:00 2001 From: Kraiem Taha Yassine Date: Thu, 21 Dec 2023 15:32:11 +0100 Subject: [PATCH] Api v1.17.0 (#1799) * refactor(crons): upgraded dependencies (#1781) refactor(alerts): upgraded dependencies refactor(chalice): upgraded dependencies * Api v1.17.0 (#1798) * fix(chalice): support list of errors in response * refactor(chalice): global support of missing filter attribute isEvent --- api/or_dependencies.py | 3 ++- api/requirements-alerts.txt | 8 ++++---- api/requirements.txt | 8 ++++---- api/schemas/schemas.py | 24 +++++++++++++----------- ee/api/or_dependencies.py | 3 ++- ee/api/requirements-alerts.txt | 6 +++--- ee/api/requirements-crons.txt | 6 +++--- ee/api/requirements.txt | 8 ++++---- 8 files changed, 35 insertions(+), 31 deletions(-) diff --git a/api/or_dependencies.py b/api/or_dependencies.py index 2a192550b7..31309bf003 100644 --- a/api/or_dependencies.py +++ b/api/or_dependencies.py @@ -33,7 +33,8 @@ async def custom_route_handler(request: Request) -> Response: response: Response = await original_route_handler(request) except HTTPException as e: if e.status_code // 100 == 4: - return JSONResponse(content={"errors": [e.detail]}, status_code=e.status_code) + return JSONResponse(content={"errors": e.detail if isinstance(e.detail, list) else [e.detail]}, + status_code=e.status_code) else: raise e diff --git a/api/requirements-alerts.txt b/api/requirements-alerts.txt index 991c6d7739..0dc1b6ce6f 100644 --- a/api/requirements-alerts.txt +++ b/api/requirements-alerts.txt @@ -1,16 +1,16 @@ # Keep this version to not have conflicts between requests and boto3 urllib3==1.26.16 requests==2.31.0 -boto3==1.33.8 +boto3==1.34.1 pyjwt==2.8.0 psycopg2-binary==2.9.9 -psycopg[pool,binary]==3.1.14 -elasticsearch==8.11.0 +psycopg[pool,binary]==3.1.15 +elasticsearch==8.11.1 jira==3.5.2 -fastapi==0.104.1 +fastapi==0.105.0 uvicorn[standard]==0.23.2 python-decouple==3.8 pydantic[email]==2.3.0 diff --git a/api/requirements.txt b/api/requirements.txt index 7d981bae43..5d5c9d1ba9 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -1,16 +1,16 @@ # Keep this version to not have conflicts between requests and boto3 urllib3==1.26.16 requests==2.31.0 -boto3==1.33.8 +boto3==1.34.1 pyjwt==2.8.0 psycopg2-binary==2.9.9 -psycopg[pool,binary]==3.1.14 -elasticsearch==8.11.0 +psycopg[pool,binary]==3.1.15 +elasticsearch==8.11.1 jira==3.5.2 -fastapi==0.104.1 +fastapi==0.105.0 uvicorn[standard]==0.23.2 python-decouple==3.8 pydantic[email]==2.3.0 diff --git a/api/schemas/schemas.py b/api/schemas/schemas.py index ecfbfc2c84..ec0f409580 100644 --- a/api/schemas/schemas.py +++ b/api/schemas/schemas.py @@ -8,6 +8,7 @@ from .overrides import BaseModel, Enum, ORUnion from .transformers_validators import transform_email, remove_whitespace, remove_duplicate_values, single_to_list, \ force_is_event, NAME_PATTERN, int_to_string +from pydantic.functional_validators import BeforeValidator def transform_old_filter_type(cls, values): @@ -700,9 +701,17 @@ class SortOrderType(str, Enum): desc = "DESC" +def add_missing_is_event(values: dict): + if values.get("isEvent") is None: + values["isEvent"] = (EventType.has_value(values["type"]) + or PerformanceEventType.has_value(values["type"]) + or ProductAnalyticsSelectedEventType.has_value(values["type"])) + return values + + # this type is created to allow mixing events&filters and specifying a discriminator GroupedFilterType = Annotated[Union[SessionSearchFilterSchema, SessionSearchEventSchema2], \ - Field(discriminator='is_event')] + Field(discriminator='is_event'), BeforeValidator(add_missing_is_event)] class SessionsSearchPayloadSchema(_TimedSchema, _PaginatedSchema): @@ -732,9 +741,9 @@ def add_missing_attributes(cls, values): for v in values["events"]: v["isEvent"] = True - for v in values.get("filters", []): - if v.get("isEvent") is None: - v["isEvent"] = False + # for v in values.get("filters", []): + # if v.get("isEvent") is None: + # v["isEvent"] = False return values @model_validator(mode="before") @@ -1016,13 +1025,6 @@ def remove_wrong_filter_values(cls, values): f["value"] = vals return values - @model_validator(mode="before") - def __force_is_event(cls, values): - for v in values.get("filters", []): - if v.get("isEvent") is None: - v["isEvent"] = ProductAnalyticsSelectedEventType.has_value(v["type"]) - return values - @model_validator(mode="before") def __enforce_default(cls, values): if values.get("startTimestamp") is None: diff --git a/ee/api/or_dependencies.py b/ee/api/or_dependencies.py index 856cea13b5..5680d254c2 100644 --- a/ee/api/or_dependencies.py +++ b/ee/api/or_dependencies.py @@ -35,7 +35,8 @@ async def custom_route_handler(request: Request) -> Response: response: Response = await original_route_handler(request) except HTTPException as e: if e.status_code // 100 == 4: - response = JSONResponse(content={"errors": [e.detail]}, status_code=e.status_code) + return JSONResponse(content={"errors": e.detail if isinstance(e.detail, list) else [e.detail]}, + status_code=e.status_code) else: raise e diff --git a/ee/api/requirements-alerts.txt b/ee/api/requirements-alerts.txt index 3e7aed3a93..a92ea3dfa2 100644 --- a/ee/api/requirements-alerts.txt +++ b/ee/api/requirements-alerts.txt @@ -1,16 +1,16 @@ # Keep this version to not have conflicts between requests and boto3 urllib3==1.26.16 requests==2.31.0 -boto3==1.29.7 +boto3==1.34.1 pyjwt==2.8.0 psycopg2-binary==2.9.9 -psycopg[pool,binary]==3.1.14 +psycopg[pool,binary]==3.1.15 elasticsearch==8.11.0 jira==3.5.2 -fastapi==0.104.1 +fastapi==0.105.0 uvicorn[standard]==0.23.2 python-decouple==3.8 pydantic[email]==2.3.0 diff --git a/ee/api/requirements-crons.txt b/ee/api/requirements-crons.txt index b879aed2d5..3298da78d1 100644 --- a/ee/api/requirements-crons.txt +++ b/ee/api/requirements-crons.txt @@ -1,16 +1,16 @@ # Keep this version to not have conflicts between requests and boto3 urllib3==1.26.16 requests==2.31.0 -boto3==1.29.7 +boto3==1.34.1 pyjwt==2.8.0 psycopg2-binary==2.9.9 -psycopg[pool,binary]==3.1.14 +psycopg[pool,binary]==3.1.15 elasticsearch==8.11.0 jira==3.5.2 -fastapi==0.104.1 +fastapi==0.105.0 python-decouple==3.8 pydantic[email]==2.3.0 apscheduler==3.10.4 diff --git a/ee/api/requirements.txt b/ee/api/requirements.txt index a55666eea4..b54e210ad9 100644 --- a/ee/api/requirements.txt +++ b/ee/api/requirements.txt @@ -1,16 +1,16 @@ # Keep this version to not have conflicts between requests and boto3 urllib3==1.26.16 requests==2.31.0 -boto3==1.29.7 +boto3==1.34.1 pyjwt==2.8.0 psycopg2-binary==2.9.9 -psycopg[pool,binary]==3.1.14 -elasticsearch==8.11.0 +psycopg[pool,binary]==3.1.15 +elasticsearch==8.11.1 jira==3.5.2 -fastapi==0.104.1 +fastapi==0.105.0 uvicorn[standard]==0.23.2 gunicorn==21.2.0 python-decouple==3.8