Api v1.15.0 (#1635)

* fix(chalice): fixed inter-card pagination
This commit is contained in:
Kraiem Taha Yassine 2023-11-09 18:28:36 +01:00 committed by GitHub
parent f56ea86bd4
commit deb8f551c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 91 deletions

View file

@ -1,6 +1,5 @@
import json
import logging
from typing import List
from decouple import config
from fastapi import HTTPException, status
@ -186,22 +185,18 @@ def get_chart(project_id: int, data: schemas.CardSchema, user_id: int):
def __merge_metric_with_data(metric: schemas.CardSchema,
data: schemas.CardSessionsSchema) -> schemas.CardSchema:
metric.startTimestamp = data.startTimestamp
metric.endTimestamp = data.endTimestamp
metric.page = data.page
metric.limit = data.limit
metric.density = data.density
if data.series is not None and len(data.series) > 0:
metric.series = data.series
# TODO: try to refactor this
metric: schemas.CardSchema = schemas.CardSchema(**{**data.model_dump(by_alias=True),
**metric.model_dump(by_alias=True)})
# if len(data.filters) > 0 or len(data.events) > 0:
if len(data.filters) > 0:
for s in metric.series:
# if len(data.filters) > 0:
s.filter.filters += data.filters
# if len(data.events) > 0:
# s.filter.events += data.events
# metric.limit = data.limit
# metric.page = data.page
# metric.startTimestamp = data.startTimestamp
# metric.endTimestamp = data.endTimestamp
metric = schemas.CardSchema(**metric.model_dump(by_alias=True))
return metric
@ -214,27 +209,13 @@ def make_chart(project_id, user_id, data: schemas.CardSessionsSchema, metric: sc
def get_sessions_by_card_id(project_id, user_id, metric_id, data: schemas.CardSessionsSchema):
# raw_metric = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False, include_data=True)
card: dict = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False)
if card is None:
return None
metric: schemas.CardSchema = schemas.CardSchema(**card)
metric: schemas.CardSchema = __merge_metric_with_data(metric=metric, data=data)
if metric is None:
return None
results = []
# is_click_map = False
# if __is_click_map(metric) and raw_metric.get("data") is not None:
# is_click_map = True
for s in metric.series:
# s.filter.startTimestamp = data.startTimestamp
# s.filter.endTimestamp = data.endTimestamp
# s.filter.limit = data.limit
# s.filter.page = data.page
# if is_click_map:
# results.append(
# {"seriesId": s.series_id, "seriesName": s.name, "total": 1, "sessions": [raw_metric["data"]]})
# break
results.append({"seriesId": s.series_id, "seriesName": s.name,
**sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)})
@ -274,8 +255,6 @@ def get_sessions(project_id, user_id, data: schemas.CardSessionsSchema):
for s in data.series:
if len(data.filters) > 0:
s.filter.filters += data.filters
# if len(data.events) > 0:
# s.filter.events += data.events
results.append({"seriesId": None, "seriesName": s.name,
**sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)})
@ -309,15 +288,6 @@ def __get_path_analysis_issues(project_id: int, user_id: int, data: schemas.Card
if len(search_data.events) == 0:
return {"data": {}}
# for s in data.start_point:
# if data.start_type == "end":
# search_data.filters.append(schemas.SessionSearchEventSchema2(type=s.type,
# operator=s.operator,
# value=s.value))
# else:
# search_data.filters.insert(0, schemas.SessionSearchEventSchema2(type=s.type,
# operator=s.operator,
# value=s.value))
for s in data.excludes:
search_data.filters.append(schemas.SessionSearchEventSchema2(type=s.type,
operator=schemas.SearchEventOperator._not_on,
@ -388,9 +358,6 @@ def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):
RETURNING metric_id;"""
query = cur.mogrify(query, params)
# print("-------")
# print(query)
# print("-------")
cur.execute(query)
r = cur.fetchone()
if dashboard:

View file

@ -1003,13 +1003,6 @@ class CardSessionsSchema(_TimedSchema, _PaginatedSchema):
_transform_filters = field_validator('filters', mode='before') \
(force_is_event(events_enum=[EventType, PerformanceEventType]))
# @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 remove_wrong_filter_values(cls, values):
for f in values.get("filters", []):
@ -1035,11 +1028,6 @@ class CardSessionsSchema(_TimedSchema, _PaginatedSchema):
if values.get("endTimestamp") is None:
values["endTimestamp"] = TimeUTC.now()
for s in values.get("series", []):
if s.get("filter") is not None:
s["filter"]["startTimestamp"] = values["startTimestamp"]
s["filter"]["endTimestamp"] = values["endTimestamp"]
return values
@model_validator(mode="after")
@ -1048,6 +1036,8 @@ class CardSessionsSchema(_TimedSchema, _PaginatedSchema):
if s.filter is not None:
s.filter.limit = values.limit
s.filter.page = values.page
s.filter.startTimestamp = values.startTimestamp
s.filter.endTimestamp = values.endTimestamp
return values

View file

@ -205,22 +205,18 @@ def get_chart(project_id: int, data: schemas.CardSchema, user_id: int):
def __merge_metric_with_data(metric: schemas.CardSchema,
data: schemas.CardSessionsSchema) -> schemas.CardSchema:
metric.startTimestamp = data.startTimestamp
metric.endTimestamp = data.endTimestamp
metric.page = data.page
metric.limit = data.limit
metric.density = data.density
if data.series is not None and len(data.series) > 0:
metric.series = data.series
# TODO: try to refactor this
metric: schemas.CardSchema = schemas.CardSchema(**{**data.model_dump(by_alias=True),
**metric.model_dump(by_alias=True)})
# if len(data.filters) > 0 or len(data.events) > 0:
if len(data.filters) > 0:
for s in metric.series:
# if len(data.filters) > 0:
s.filter.filters += data.filters
# if len(data.events) > 0:
# s.filter.events += data.events
# metric.limit = data.limit
# metric.page = data.page
# metric.startTimestamp = data.startTimestamp
# metric.endTimestamp = data.endTimestamp
metric = schemas.CardSchema(**metric.model_dump(by_alias=True))
return metric
@ -233,27 +229,13 @@ def make_chart(project_id, user_id, data: schemas.CardSessionsSchema, metric: sc
def get_sessions_by_card_id(project_id, user_id, metric_id, data: schemas.CardSessionsSchema):
# raw_metric = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False, include_data=True)
card: dict = get_card(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False)
if card is None:
return None
metric: schemas.CardSchema = schemas.CardSchema(**card)
metric: schemas.CardSchema = __merge_metric_with_data(metric=metric, data=data)
if metric is None:
return None
results = []
# is_click_map = False
# if __is_click_map(metric) and raw_metric.get("data") is not None:
# is_click_map = True
for s in metric.series:
# s.filter.startTimestamp = data.startTimestamp
# s.filter.endTimestamp = data.endTimestamp
# s.filter.limit = data.limit
# s.filter.page = data.page
# if is_click_map:
# results.append(
# {"seriesId": s.series_id, "seriesName": s.name, "total": 1, "sessions": [raw_metric["data"]]})
# break
results.append({"seriesId": s.series_id, "seriesName": s.name,
**sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)})
@ -293,8 +275,6 @@ def get_sessions(project_id, user_id, data: schemas.CardSessionsSchema):
for s in data.series:
if len(data.filters) > 0:
s.filter.filters += data.filters
# if len(data.events) > 0:
# s.filter.events += data.events
results.append({"seriesId": None, "seriesName": s.name,
**sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)})
@ -328,15 +308,6 @@ def __get_path_analysis_issues(project_id: int, user_id: int, data: schemas.Card
if len(search_data.events) == 0:
return {"data": {}}
# for s in data.start_point:
# if data.start_type == "end":
# search_data.filters.append(schemas.SessionSearchEventSchema2(type=s.type,
# operator=s.operator,
# value=s.value))
# else:
# search_data.filters.insert(0, schemas.SessionSearchEventSchema2(type=s.type,
# operator=s.operator,
# value=s.value))
for s in data.excludes:
search_data.filters.append(schemas.SessionSearchEventSchema2(type=s.type,
operator=schemas.SearchEventOperator._not_on,
@ -419,9 +390,6 @@ def create_card(project_id, user_id, data: schemas.CardSchema, dashboard=False):
RETURNING metric_id;"""
query = cur.mogrify(query, params)
# print("-------")
# print(query)
# print("-------")
cur.execute(query)
r = cur.fetchone()
if dashboard: