From 37cbf61480d05a355d64e1a01f5a9a59b30286a2 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Sun, 27 Dec 2015 18:01:01 -0800 Subject: [PATCH] Adding markdown support for table descriptions --- TODO.md | 1 + panoramix/models.py | 4 ++++ panoramix/static/panoramix.css | 5 +++++ panoramix/templates/panoramix/explore.html | 4 ++-- .../templates/panoramix/featured_datasets.html | 8 +++++--- panoramix/utils.py | 13 ++++++++++--- panoramix/views.py | 11 +++++++---- 7 files changed, 34 insertions(+), 12 deletions(-) diff --git a/TODO.md b/TODO.md index b3e174868d7f0..f144b8635420e 100644 --- a/TODO.md +++ b/TODO.md @@ -2,6 +2,7 @@ List of TODO items for Panoramix ## Improvments +* Read dashboard filter from URL * Table description is markdown * Animated scatter plots * Filter widget diff --git a/panoramix/models.py b/panoramix/models.py index e5d5d699862bc..b8d5423515bc9 100644 --- a/panoramix/models.py +++ b/panoramix/models.py @@ -251,6 +251,10 @@ class SqlaTable(Model, Queryable, AuditMixinNullable): def __repr__(self): return self.table_name + @property + def description_markeddown(self): + return utils.markdown(self.description) + @property def perm(self): return ( diff --git a/panoramix/static/panoramix.css b/panoramix/static/panoramix.css index ac926808dc2fb..73c007df27d2b 100644 --- a/panoramix/static/panoramix.css +++ b/panoramix/static/panoramix.css @@ -6,6 +6,11 @@ html>body{ padding: 10px; } +.intable-longtext{ + max-height: 200px; + overflow: auto; +} + .slice_container { height: 100%; } diff --git a/panoramix/templates/panoramix/explore.html b/panoramix/templates/panoramix/explore.html index e1181eeaee07c..dbca1763fabe3 100644 --- a/panoramix/templates/panoramix/explore.html +++ b/panoramix/templates/panoramix/explore.html @@ -182,10 +182,10 @@ - +
- + @@ -16,9 +16,11 @@

Featured Datasets

{% for dataset in featured_datasets %} - diff --git a/panoramix/utils.py b/panoramix/utils.py index bc88faebf435f..c9f6d38d561a8 100644 --- a/panoramix/utils.py +++ b/panoramix/utils.py @@ -1,11 +1,14 @@ from datetime import datetime -from dateutil.parser import parse +import functools import hashlib -from sqlalchemy.types import TypeDecorator, TEXT import json + +from dateutil.parser import parse +from sqlalchemy.types import TypeDecorator, TEXT from flask import g, request, Markup +from markdown import markdown as md import parsedatetime -import functools + from panoramix import db @@ -222,3 +225,7 @@ def json_iso_dttm_ser(obj): if isinstance(obj, datetime): obj = obj.isoformat() return obj + + +def markdown(s): + return md(s, ['markdown.extensions.tables']) diff --git a/panoramix/views.py b/panoramix/views.py index 4c99a12feaaaf..8cefc136d3a8f 100644 --- a/panoramix/views.py +++ b/panoramix/views.py @@ -4,7 +4,7 @@ import re import traceback -from flask import request, redirect, flash, Response, render_template +from flask import request, redirect, flash, Response, render_template, Markup from flask.ext.appbuilder import ModelView, CompactCRUDMixin, BaseView, expose from flask.ext.appbuilder.actions import action from flask.ext.appbuilder.models.sqla.interface import SQLAInterface @@ -153,7 +153,8 @@ class TableView(PanoramixModelView, DeleteMixin): related_views = [TableColumnInlineView, SqlMetricInlineView] base_order = ('changed_on','desc') description_columns = { - 'offset': "Timezone offset (in hours) for this datasource" + 'offset': "Timezone offset (in hours) for this datasource", + 'description': Markup("Supports markdown"), } def post_add(self, table): @@ -281,7 +282,8 @@ class DatasourceModelView(PanoramixModelView, DeleteMixin): page_size = 100 base_order = ('datasource_name', 'asc') description_columns = { - 'offset': "Timezone offset (in hours) for this datasource" + 'offset': "Timezone offset (in hours) for this datasource", + 'description': Markup("Supports markdown"), } def post_add(self, datasource): @@ -564,7 +566,8 @@ def featured_datasets(self): featured_datasets = datasets_sqla + datasets_druid return self.render_template( 'panoramix/featured_datasets.html', - featured_datasets=featured_datasets) + featured_datasets=featured_datasets, + utils=utils) appbuilder.add_view_no_menu(Panoramix) appbuilder.add_link(