From 2e2db9832527ee34d24b9c541a6f39e89826aff7 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Fri, 18 Jan 2019 09:38:07 -0800 Subject: [PATCH] Add `extra` column to `SavedQuery` (#6687) * Expose more columns in saved queries API * Add extra column to SavedQuery * Add ASF header (cherry picked from commit 31ea6817b706a1120daa8902c148a499b40878a3) (cherry picked from commit 9c87efd68a922cc6031ac166b24cca9e8addbf57) --- ...03f16c4a_add_extra_column_to_savedquery.py | 39 +++++++++++++++++++ superset/models/sql_lab.py | 10 ++++- superset/views/sql_lab.py | 3 ++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 superset/migrations/versions/a33a03f16c4a_add_extra_column_to_savedquery.py diff --git a/superset/migrations/versions/a33a03f16c4a_add_extra_column_to_savedquery.py b/superset/migrations/versions/a33a03f16c4a_add_extra_column_to_savedquery.py new file mode 100644 index 0000000000000..95518e53f47ed --- /dev/null +++ b/superset/migrations/versions/a33a03f16c4a_add_extra_column_to_savedquery.py @@ -0,0 +1,39 @@ +"""Add extra column to SavedQuery + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Revision ID: a33a03f16c4a +Revises: fb13d49b72f9 +Create Date: 2019-01-14 16:00:26.344439 + +""" + +# revision identifiers, used by Alembic. +revision = 'a33a03f16c4a' +down_revision = 'fb13d49b72f9' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + with op.batch_alter_table('saved_query') as batch_op: + batch_op.add_column(sa.Column('extra_json', sa.Text(), nullable=True)) + + +def downgrade(): + with op.batch_alter_table('saved_query') as batch_op: + batch_op.drop_column('extra_json') diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py index b9f9f86ff857e..fbdfda6593e49 100644 --- a/superset/models/sql_lab.py +++ b/superset/models/sql_lab.py @@ -123,7 +123,7 @@ def name(self): return 'sqllab_{tab}_{ts}'.format(**locals()) -class SavedQuery(Model, AuditMixinNullable): +class SavedQuery(Model, AuditMixinNullable, ExtraJSONMixin): """ORM model for SQL query""" __tablename__ = 'saved_query' @@ -155,6 +155,14 @@ def pop_tab_link(self): def url(self): return '/superset/sqllab?savedQueryId={0}'.format(self.id) + @property + def user_email(self): + return self.user.email + + @property + def sqlalchemy_uri(self): + return self.database.sqlalchemy_uri + # events for updating tags sqla.event.listen(SavedQuery, 'after_insert', QueryUpdater.after_insert) diff --git a/superset/views/sql_lab.py b/superset/views/sql_lab.py index d60fd3d6d89e5..5dfcaab5657f6 100644 --- a/superset/views/sql_lab.py +++ b/superset/views/sql_lab.py @@ -74,6 +74,9 @@ def pre_update(self, obj): class SavedQueryViewApi(SavedQueryView): + list_columns = [ + 'label', 'sqlalchemy_uri', 'user_email', 'schema', 'description', + 'sql'] show_columns = ['label', 'db_id', 'schema', 'description', 'sql'] add_columns = show_columns edit_columns = add_columns