diff --git a/superset/models/core.py b/superset/models/core.py index 2340c10422d4..2d786dc07b29 100644 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -163,7 +163,7 @@ class Slice(Model, AuditMixinNullable, ImportMixin): 'viz_type', 'params', 'cache_timeout') def __repr__(self): - return self.slice_name + return self.slice_name or str(self.id) @property def cls_model(self): @@ -291,10 +291,14 @@ def explore_json_url(self): def edit_url(self): return '/chart/edit/{}'.format(self.id) + @property + def chart(self): + return self.slice_name or '' + @property def slice_link(self): url = self.slice_url - name = escape(self.slice_name) + name = escape(self.chart) return Markup(f'{name}') def get_viz(self, force=False): @@ -407,7 +411,7 @@ class Dashboard(Model, AuditMixinNullable, ImportMixin): 'description', 'css', 'slug') def __repr__(self): - return self.dashboard_title + return self.dashboard_title or str(self.id) @property def table_names(self): @@ -436,6 +440,10 @@ def url(self): def datasources(self): return {slc.datasource for slc in self.slices} + @property + def charts(self): + return [slc.chart for slc in self.slices] + @property def sqla_metadata(self): # pylint: disable=no-member @@ -443,7 +451,7 @@ def sqla_metadata(self): return metadata.reflect() def dashboard_link(self): - title = escape(self.dashboard_title) + title = escape(self.dashboard_title or '') return Markup(f'{title}') @property diff --git a/superset/views/core.py b/superset/views/core.py index 0ed87ab6007d..2d483785e97a 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -572,7 +572,7 @@ class DashboardModelView(SupersetModelView, DeleteMixin): # noqa edit_columns = [ 'dashboard_title', 'slug', 'owners', 'position_json', 'css', 'json_metadata'] - show_columns = edit_columns + ['table_names', 'slices'] + show_columns = edit_columns + ['table_names', 'charts'] search_columns = ('dashboard_title', 'slug', 'owners') add_columns = edit_columns base_order = ('changed_on', 'desc') @@ -599,7 +599,7 @@ class DashboardModelView(SupersetModelView, DeleteMixin): # noqa 'dashboard_link': _('Dashboard'), 'dashboard_title': _('Title'), 'slug': _('Slug'), - 'slices': _('Charts'), + 'charts': _('Charts'), 'owners': _('Owners'), 'creator': _('Creator'), 'modified': _('Modified'),