Пример #1
0
class DruidDatasourceModelView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.DruidDatasource)
    list_columns = [
        'datasource_link', 'cluster', 'owner', 'created_by_', 'created_on',
        'changed_by_', 'changed_on', 'offset'
    ]
    order_columns = utils.list_minus(list_columns,
                                     ['created_by_', 'changed_by_'])
    related_views = [DruidColumnInlineView, DruidMetricInlineView]
    edit_columns = [
        'datasource_name', 'cluster', 'description', 'owner', 'is_featured',
        'is_hidden', 'default_endpoint', 'offset', 'cache_timeout'
    ]
    page_size = 500
    base_order = ('datasource_name', 'asc')
    description_columns = {
        'offset':
        "Timezone offset (in hours) for this datasource",
        'description':
        Markup("Supports <a href='"
               "https://daringfireball.net/projects/markdown/'>markdown</a>"),
    }

    def post_add(self, datasource):
        datasource.generate_metrics()
        utils.merge_perm(sm, 'datasource_access', datasource.perm)

    def post_update(self, datasource):
        self.post_add(datasource)
Пример #2
0
class DashboardModelView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.Dashboard)
    label_columns = {
        'created_by_': 'Creator',
    }
    list_columns = ['dashboard_link', 'created_by_', 'changed_on']
    order_columns = utils.list_minus(list_columns, ['created_by_'])
    edit_columns = [
        'dashboard_title', 'slug', 'slices', 'position_json', 'css',
        'json_metadata'
    ]
    add_columns = edit_columns
    base_order = ('changed_on', 'desc')
    description_columns = {
        'position_json':
        ("This json object describes the positioning of the widgets in "
         "the dashboard. It is dynamically generated when adjusting "
         "the widgets size and positions by using drag & drop in "
         "the dashboard view"),
        'css': ("The css for individual dashboards can be altered here, or "
                "in the dashboard view where changes are immediately "
                "visible"),
        'slug':
        "To get a readable URL for your dashboard",
    }

    def pre_add(self, obj):
        obj.slug = obj.slug.strip() or None
        if obj.slug:
            obj.slug = obj.slug.replace(" ", "-")
            obj.slug = re.sub(r'\W+', '', obj.slug)

    def pre_update(self, obj):
        self.pre_add(obj)
Пример #3
0
class DatabaseView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.Database)
    list_columns = ['database_name', 'sql_link', 'created_by_', 'changed_on']
    order_columns = utils.list_minus(list_columns, ['created_by_'])
    add_columns = ['database_name', 'sqlalchemy_uri', 'cache_timeout', 'extra']
    search_exclude_columns = ('password', )
    edit_columns = add_columns
    add_template = "caravel/models/database/add.html"
    edit_template = "caravel/models/database/edit.html"
    base_order = ('changed_on', 'desc')
    description_columns = {
        'sqlalchemy_uri':
        ("Refer to the SqlAlchemy docs for more information on how "
         "to structure your URI here: "
         "http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html"),
        'extra':
        utils.markdown(
            "JSON string containing extra configuration elements. "
            "The ``engine_params`` object gets unpacked into the "
            "[sqlalchemy.create_engine]"
            "(http://docs.sqlalchemy.org/en/latest/core/engines.html#"
            "sqlalchemy.create_engine) call, while the ``metadata_params`` "
            "gets unpacked into the [sqlalchemy.MetaData]"
            "(http://docs.sqlalchemy.org/en/rel_1_0/core/metadata.html"
            "#sqlalchemy.schema.MetaData) call. ", True),
    }

    def pre_add(self, db):
        conn = sqla.engine.url.make_url(db.sqlalchemy_uri)
        db.password = conn.password
        conn.password = "******" * 10 if conn.password else None
        db.sqlalchemy_uri = str(conn)  # hides the password

    def pre_update(self, db):
        self.pre_add(db)
Пример #4
0
class DatabaseView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.Database)
    list_columns = ['database_name', 'sql_link', 'created_by_', 'changed_on']
    order_columns = utils.list_minus(list_columns, ['created_by_'])
    add_columns = ['database_name', 'sqlalchemy_uri', 'cache_timeout']
    search_exclude_columns = ('password', )
    edit_columns = add_columns
    add_template = "caravel/models/database/add.html"
    edit_template = "caravel/models/database/edit.html"
    base_order = ('changed_on', 'desc')
    description_columns = {
        'sqlalchemy_uri':
        ("Refer to the SqlAlchemy docs for more information on how "
         "to structure your URI here: "
         "http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html")
    }

    def pre_add(self, db):
        conn = sqla.engine.url.make_url(db.sqlalchemy_uri)
        db.password = conn.password
        conn.password = "******" * 10 if conn.password else None
        db.sqlalchemy_uri = str(conn)  # hides the password

    def pre_update(self, db):
        self.pre_add(db)
Пример #5
0
class SliceModelView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.Slice)
    add_template = "caravel/add_slice.html"
    can_add = False
    label_columns = {
        'created_by_': 'Creator',
        'datasource_link': 'Datasource',
    }
    list_columns = [
        'slice_link', 'viz_type',
        'datasource_link', 'created_by_', 'modified']
    order_columns = utils.list_minus(list_columns, ['created_by_', 'modified'])
    edit_columns = [
        'slice_name', 'description', 'viz_type', 'druid_datasource',
        'table', 'dashboards', 'params', 'cache_timeout']
    base_order = ('changed_on', 'desc')
    description_columns = {
        'description': Markup(
            "The content here can be displayed as widget headers in the "
            "dashboard view. Supports "
            "<a href='https://daringfireball.net/projects/markdown/'>"
            "markdown</a>"),
    }