You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by yj...@apache.org on 2020/10/13 17:32:22 UTC
[incubator-superset] branch master updated: test: add admin to the
owners of birth_names slices (#11228)
This is an automated email from the ASF dual-hosted git repository.
yjc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 6d8541e test: add admin to the owners of birth_names slices (#11228)
6d8541e is described below
commit 6d8541e3b635ef00afbbf9ec0d0952778f9b99af
Author: Jesse Yang <je...@airbnb.com>
AuthorDate: Tue Oct 13 10:31:49 2020 -0700
test: add admin to the owners of birth_names slices (#11228)
---
.github/workflows/bashlib.sh | 4 +-
superset/examples/birth_names.py | 89 ++++++++++++++++++++--------------------
2 files changed, 46 insertions(+), 47 deletions(-)
diff --git a/.github/workflows/bashlib.sh b/.github/workflows/bashlib.sh
index 181fca1..8a239fe 100644
--- a/.github/workflows/bashlib.sh
+++ b/.github/workflows/bashlib.sh
@@ -90,9 +90,9 @@ build-instrumented-assets() {
setup-postgres() {
say "::group::Initialize database"
psql "postgresql://superset:superset@127.0.0.1:15432/superset" <<-EOF
- DROP SCHEMA IF EXISTS sqllab_test_db;
+ DROP SCHEMA IF EXISTS sqllab_test_db CASCADE;
+ DROP SCHEMA IF EXISTS admin_database CASCADE;
CREATE SCHEMA sqllab_test_db;
- DROP SCHEMA IF EXISTS admin_database;
CREATE SCHEMA admin_database;
EOF
say "::endgroup::"
diff --git a/superset/examples/birth_names.py b/superset/examples/birth_names.py
index e5c9360..2332370 100644
--- a/superset/examples/birth_names.py
+++ b/superset/examples/birth_names.py
@@ -16,13 +16,14 @@
# under the License.
import json
import textwrap
-from typing import Dict, Union
+from typing import Dict, List, Tuple, Union
import pandas as pd
from sqlalchemy import DateTime, String
from sqlalchemy.sql import column
from superset import db, security_manager
+from superset.connectors.base.models import BaseDatasource
from superset.connectors.sqla.models import SqlMetric, TableColumn
from superset.models.core import Database
from superset.models.dashboard import Dashboard
@@ -39,6 +40,8 @@ from .helpers import (
update_slice_ids,
)
+admin = security_manager.find_user("admin")
+
def gen_filter(
subject: str, comparator: str, operator: str = "=="
@@ -118,8 +121,12 @@ def load_birth_names(
obj.metrics.append(SqlMetric(metric_name="sum__num", expression=f"SUM({col})"))
db.session.commit()
- tbl = obj
+ slices, _ = create_slices(obj)
+ create_dashboard(slices)
+
+
+def create_slices(tbl: BaseDatasource) -> Tuple[List[Slice], List[Slice]]:
metrics = [
{
"expressionType": "SIMPLE",
@@ -135,6 +142,7 @@ def load_birth_names(
"compare_lag": "10",
"compare_suffix": "o10Y",
"limit": "25",
+ "time_range": "No filter",
"granularity_sqla": "ds",
"groupby": [],
"row_limit": config["ROW_LIMIT"],
@@ -144,15 +152,16 @@ def load_birth_names(
"markup_type": "markdown",
}
- admin = security_manager.find_user("admin")
+ slice_props = dict(
+ datasource_id=tbl.id, datasource_type="table", owners=[admin], created_by=admin
+ )
print("Creating some slices")
slices = [
Slice(
+ **slice_props,
slice_name="Participants",
viz_type="big_number",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="big_number",
@@ -163,19 +172,17 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Genders",
viz_type="pie",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults, viz_type="pie", groupby=["gender"], metric=metric
),
),
Slice(
+ **slice_props,
slice_name="Trends",
viz_type="line",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="line",
@@ -187,10 +194,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Genders by State",
viz_type="dist_bar",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
adhoc_filters=[
@@ -224,10 +230,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Girls",
viz_type="table",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
groupby=["name"],
@@ -238,10 +243,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Girl Name Cloud",
viz_type="word_cloud",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="word_cloud",
@@ -255,10 +259,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Boys",
viz_type="table",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
groupby=["name"],
@@ -268,10 +271,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Boy Name Cloud",
viz_type="word_cloud",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="word_cloud",
@@ -285,10 +287,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Top 10 Girl Name Share",
viz_type="area",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
adhoc_filters=[gen_filter("gender", "girl")],
@@ -303,10 +304,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Top 10 Boy Name Share",
viz_type="area",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
adhoc_filters=[gen_filter("gender", "boy")],
@@ -323,10 +323,9 @@ def load_birth_names(
]
misc_slices = [
Slice(
+ **slice_props,
slice_name="Average and Sum Trends",
viz_type="dual_line",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="dual_line",
@@ -343,18 +342,15 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Num Births Trend",
viz_type="line",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(defaults, viz_type="line", metrics=metrics),
),
Slice(
+ **slice_props,
slice_name="Daily Totals",
viz_type="table",
- datasource_type="table",
- datasource_id=tbl.id,
- created_by=admin,
params=get_slice_json(
defaults,
groupby=["ds"],
@@ -365,10 +361,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Number of California Births",
viz_type="big_number_total",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
metric={
@@ -385,10 +380,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Top 10 California Names Timeseries",
viz_type="line",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
metrics=[
@@ -418,10 +412,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Names Sorted by Num in California",
viz_type="table",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
metrics=metrics,
@@ -439,10 +432,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Number of Girls",
viz_type="big_number_total",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
metric=metric,
@@ -453,10 +445,9 @@ def load_birth_names(
),
),
Slice(
+ **slice_props,
slice_name="Pivot Table",
viz_type="pivot_table",
- datasource_type="table",
- datasource_id=tbl.id,
params=get_slice_json(
defaults,
viz_type="pivot_table",
@@ -473,12 +464,19 @@ def load_birth_names(
merge_slice(slc)
misc_dash_slices.add(slc.slice_name)
+ return slices, misc_slices
+
+
+def create_dashboard(slices: List[Slice]) -> None:
print("Creating a dashboard")
- dash = db.session.query(Dashboard).filter_by(slug="births").first()
+ dash = db.session.query(Dashboard).filter_by(slug="births").first()
if not dash:
dash = Dashboard()
+ dash.owners = [admin]
+ dash.created_by = admin
db.session.add(dash)
+
dash.published = True
dash.json_metadata = textwrap.dedent(
"""\
@@ -491,9 +489,10 @@ def load_birth_names(
}
}"""
)
- js = textwrap.dedent(
- # pylint: disable=line-too-long
- """\
+ pos = json.loads(
+ textwrap.dedent(
+ # pylint: disable=line-too-long
+ """\
{
"CHART-6GdlekVise": {
"children": [],
@@ -763,8 +762,8 @@ def load_birth_names(
}
}
""" # pylint: enable=line-too-long
+ )
)
- pos = json.loads(js)
# dashboard v2 doesn't allow add markup slice
dash.slices = [slc for slc in slices if slc.viz_type != "markup"]
update_slice_ids(pos, dash.slices)