Example #1
0
def decode_dashboards(o):
    """
    Function to be passed into json.loads obj_hook parameter
    Recreates the dashboard object from a json representation.
    """
    import superset.models.core as models
    from superset.connectors.sqla.models import (
        SqlaTable, SqlMetric, TableColumn,
    )

    if '__Dashboard__' in o:
        d = models.Dashboard()
        d.__dict__.update(o['__Dashboard__'])
        return d
    elif '__Slice__' in o:
        d = models.Slice()
        d.__dict__.update(o['__Slice__'])
        return d
    elif '__TableColumn__' in o:
        d = TableColumn()
        d.__dict__.update(o['__TableColumn__'])
        return d
    elif '__SqlaTable__' in o:
        d = SqlaTable()
        d.__dict__.update(o['__SqlaTable__'])
        return d
    elif '__SqlMetric__' in o:
        d = SqlMetric()
        d.__dict__.update(o['__SqlMetric__'])
        return d
    elif '__datetime__' in o:
        return datetime.strptime(o['__datetime__'], '%Y-%m-%dT%H:%M:%S')
    else:
        return o
Example #2
0
    def create_slice(self, name, ds_id=None, id=None, db_name='main',
                     table_name='wb_health_population'):
        params = {
            'num_period_compare': '10',
            'remote_id': id,
            'datasource_name': table_name,
            'database_name': db_name,
            'schema': '',
            # Test for trailing commas
            "metrics": [
                "sum__signup_attempt_email",
                "sum__signup_attempt_facebook",
            ],
        }

        if table_name and not ds_id:
            table = self.get_table_by_name(table_name)
            if table:
                ds_id = table.id

        return models.Slice(
            slice_name=name,
            datasource_type='table',
            viz_type='bubble',
            params=json.dumps(params),
            datasource_id=ds_id,
            id=id
        )
Example #3
0
    def create_slice(
        self,
        name,
        ds_id=None,
        id=None,
        db_name="examples",
        table_name="wb_health_population",
    ):
        params = {
            "num_period_compare": "10",
            "remote_id": id,
            "datasource_name": table_name,
            "database_name": db_name,
            "schema": "",
            # Test for trailing commas
            "metrics": ["sum__signup_attempt_email", "sum__signup_attempt_facebook"],
        }

        if table_name and not ds_id:
            table = self.get_table_by_name(table_name)
            if table:
                ds_id = table.id

        return models.Slice(
            slice_name=name,
            datasource_type="table",
            viz_type="bubble",
            params=json.dumps(params),
            datasource_id=ds_id,
            id=id,
        )
Example #4
0
def add_slice_to_dashboard(request,
                           args,
                           datasource_type=None,
                           datasource_id=None):
    form_data = json.loads(args.get('form_data'))
    datasource_id = args.get('datasource_id')
    datasource_type = args.get('datasource_type')
    datasource_name = args.get('datasource_name')
    viz_type = form_data.get('viz_type')

    form_data['datasource'] = str(datasource_id) + '__' + datasource_type

    # On explore, merge legacy and extra filters into the form data
    utils.convert_legacy_filters_into_adhoc(form_data)
    utils.merge_extra_filters(form_data)
    """Save or overwrite a slice"""
    slice_name = args.get('slice_name')
    action = args.get('action')
    #saving slice
    slc = models.Slice(owners=[g.user] if g.user else [])
    slc.params = json.dumps(form_data, indent=2, sort_keys=True)
    slc.datasource_name = datasource_name
    slc.viz_type = form_data['viz_type']
    slc.datasource_type = datasource_type
    slc.datasource_id = datasource_id
    slc.slice_name = slice_name
    session = db.session()
    session.add(slc)
    session.commit()

    #adding slice to dashboard
    dash = (db.session.query(models.Dashboard).filter_by(
        id=int(args.get('save_to_dashboard_id'))).one())

    dash.slices.append(slc)
    db.session.commit()
    logging.info('Slice [' + slc.slice_name +
                 '] was added to dashboard id [ ' +
                 str(args.get('save_to_dashboard_id')) + ' ]')

    return {
        'form_data': slc.form_data,
        'slice': slc.data,
    }
Example #5
0
def decode_dashboards(o):
    """
    Function to be passed into json.loads obj_hook parameter
    Recreates the dashboard object from a json representation.
    """
    import superset.models.core as models
    from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn

    if "__Dashboard__" in o:
        return models.Dashboard(**o["__Dashboard__"])
    elif "__Slice__" in o:
        return models.Slice(**o["__Slice__"])
    elif "__TableColumn__" in o:
        return TableColumn(**o["__TableColumn__"])
    elif "__SqlaTable__" in o:
        return SqlaTable(**o["__SqlaTable__"])
    elif "__SqlMetric__" in o:
        return SqlMetric(**o["__SqlMetric__"])
    elif "__datetime__" in o:
        return datetime.strptime(o["__datetime__"], "%Y-%m-%dT%H:%M:%S")
    else:
        return o
Example #6
0
def decode_dashboards(o):
    """
    Function to be passed into json.loads obj_hook parameter
    Recreates the dashboard object from a json representation.
    """
    import superset.models.core as models
    from superset import security_manager
    from superset.connectors.sqla.models import (
        SqlaTable,
        SqlMetric,
        TableColumn,
    )

    if '__Dashboard__' in o:
        return models.Dashboard(**o['__Dashboard__'])
    elif '__Slice__' in o:
        return models.Slice(**o['__Slice__'])
    elif '__TableColumn__' in o:
        return TableColumn(**o['__TableColumn__'])
    elif '__SqlaTable__' in o:
        return SqlaTable(**o['__SqlaTable__'])
    elif '__SqlMetric__' in o:
        return SqlMetric(**o['__SqlMetric__'])
    elif '__Database__' in o:
        return models.Database(**o['__Database__'])
    elif '__User__' in o:
        return security_manager.user_model(**o['__User__'])
    elif '__Role__' in o:
        return security_manager.role_model(**o['__Role__'])
    elif '__ViewMenu__' in o:
        return security_manager.viewmenu_model(**o['__ViewMenu__'])
    elif '__PermissionView__' in o:
        return security_manager.permissionview_model(**o['__PermissionView__'])
    elif '__datetime__' in o:
        return datetime.strptime(o['__datetime__'], '%Y-%m-%dT%H:%M:%S')
    else:
        return o