diff --git a/panoramix/models.py b/panoramix/models.py
index 3a036b8cb9f..6aa51213662 100644
--- a/panoramix/models.py
+++ b/panoramix/models.py
@@ -46,6 +46,13 @@ class AuditMixinNullable(AuditMixin):
@property
def changed_on_(cls):
return utils.datetime_f(cls.changed_on)
+ @property
+ def created_by_(self):
+ return self.created_by or ''
+ @property
+ def changed_by_(self):
+ return self.changed_by or ''
+
class Url(Model, AuditMixinNullable):
@@ -80,6 +87,13 @@ class Slice(Model, AuditMixinNullable):
def datasource(self):
return self.table or self.druid_datasource
+ @property
+ def datasource_link(self):
+ if self.table:
+ return self.table.link
+ elif self.druid_datasource:
+ return self.druid_datasource.link
+
@property
@utils.memoized
def viz(self):
@@ -274,6 +288,14 @@ class SqlaTable(Model, Queryable, AuditMixinNullable):
def description_markeddown(self):
return utils.markdown(self.description)
+ @property
+ def url(self):
+ return '/tableview/edit/{}'.format(self.id)
+
+ @property
+ def link(self):
+ return '{self.table_name}'.format(**locals())
+
@property
def perm(self):
return (
@@ -743,9 +765,21 @@ class Datasource(Model, AuditMixinNullable, Queryable):
"[{self.cluster_name}].[{self.datasource_name}]"
"(id:{self.id})").format(self=self)
+ @property
+ def url(self):
+ return '/datasourcemodelview/edit/{}'.format(self.id)
+
+ @property
+ def link(self):
+ return (
+ ''
+ '{self.datasource_name}').format(**locals())
+
@property
def full_name(self):
- return "[{self.cluster_name}].[{self.datasource_name}]".format(self=self)
+ return (
+ "[{self.cluster_name}]."
+ "[{self.datasource_name}]").format(self=self)
def __repr__(self):
return self.datasource_name
diff --git a/panoramix/views.py b/panoramix/views.py
index 4e5be187662..e4c9c83bc55 100644
--- a/panoramix/views.py
+++ b/panoramix/views.py
@@ -203,7 +203,7 @@ class SliceModelView(PanoramixModelView, DeleteMixin):
can_add = False
list_columns = [
'slice_link', 'viz_type',
- 'datasource', 'created_by', 'changed_on_']
+ 'datasource_link', 'created_by_', 'changed_on_']
edit_columns = [
'slice_name', 'description', 'viz_type', 'druid_datasource',
'table', 'dashboards', 'params']
@@ -223,7 +223,7 @@ appbuilder.add_view(
class DashboardModelView(PanoramixModelView, DeleteMixin):
datamodel = SQLAInterface(models.Dashboard)
- list_columns = ['dashboard_link', 'changed_by', 'changed_on_']
+ list_columns = ['dashboard_link', 'created_by_', 'changed_on_']
edit_columns = [
'dashboard_title', 'slug', 'slices', 'position_json', 'css',
'json_metadata']