From e362cde1a99bac9e7d40b4dd32ee4523c0ec2c90 Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Fri, 8 Apr 2022 17:54:13 +0200 Subject: [PATCH] feat(api): dashboard merge config if not present in payload feat(api): dashboard use metrics' default config for batch create --- api/chalicelib/core/dashboards2.py | 13 +++++++------ api/schemas.py | 3 +-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/chalicelib/core/dashboards2.py b/api/chalicelib/core/dashboards2.py index 651500aaa..c82a38b5f 100644 --- a/api/chalicelib/core/dashboards2.py +++ b/api/chalicelib/core/dashboards2.py @@ -48,14 +48,15 @@ def create_dashboard(project_id, user_id, data: schemas.CreateDashboardSchema): if data.metrics is not None and len(data.metrics) > 0: pg_query = f"""WITH dash AS ({pg_query}) INSERT INTO dashboard_widgets(dashboard_id, metric_id, user_id, config) - VALUES {",".join([f"((SELECT dashboard_id FROM dash),%(metric_id_{i})s, %(userId)s, %(config_{i})s)" for i in range(len(data.metrics))])} + VALUES {",".join([f"((SELECT dashboard_id FROM dash),%(metric_id_{i})s, %(userId)s, (SELECT default_config FROM metrics WHERE metric_id=%(metric_id_{i})s)||%(config_{i})s))" for i in range(len(data.metrics))])} RETURNING (SELECT dashboard_id FROM dash)""" for i, m in enumerate(data.metrics): params[f"metric_id_{i}"] = m - params[f"config_{i}"] = schemas.AddWidgetToDashboardPayloadSchema.schema() \ - .get("properties", {}).get("config", {}).get("default", {}) - params[f"config_{i}"]["position"] = i - params[f"config_{i}"] = json.dumps(params[f"config_{i}"]) + # params[f"config_{i}"] = schemas.AddWidgetToDashboardPayloadSchema.schema() \ + # .get("properties", {}).get("config", {}).get("default", {}) + # params[f"config_{i}"]["position"] = i + # params[f"config_{i}"] = json.dumps(params[f"config_{i}"]) + params[f"config_{i}"] = json.dumps({"position": i}) cur.execute(cur.mogrify(pg_query, params)) row = cur.fetchone() if row is None: @@ -173,7 +174,7 @@ def add_widget(project_id, user_id, dashboard_id, data: schemas.AddWidgetToDashb with pg_client.PostgresClient() as cur: pg_query = """INSERT INTO dashboard_widgets(dashboard_id, metric_id, user_id, config) SELECT %(dashboard_id)s AS dashboard_id, %(metric_id)s AS metric_id, - %(userId)s AS user_id, %(config)s::jsonb AS config + %(userId)s AS user_id, (SELECT default_config FROM metrics WHERE metric_id=%(metric_id)s)||%(config)s::jsonb AS config WHERE EXISTS(SELECT 1 FROM dashboards WHERE dashboards.deleted_at ISNULL AND dashboards.project_id = %(projectId)s AND dashboard_id = %(dashboard_id)s diff --git a/api/schemas.py b/api/schemas.py index 7ba9c0413..b01553cc8 100644 --- a/api/schemas.py +++ b/api/schemas.py @@ -898,8 +898,7 @@ class EditDashboardSchema(CreateDashboardSchema): class UpdateWidgetPayloadSchema(BaseModel): - # if you change the config attribute name, please make sure to update it in dashboard2.py - config: dict = Field(default={"col": 2, "row": 2, "position": 0}) + config: dict = Field(default={}) class Config: alias_generator = attribute_to_camel_case