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
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 )
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, )
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, }
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
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