You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2022/04/01 14:05:49 UTC
[superset] 02/02: working migration and need to fill in owners values
This is an automated email from the ASF dual-hosted git repository.
hugh pushed a commit to branch add-owners-new-dataset
in repository https://gitbox.apache.org/repos/asf/superset.git
commit c1a5e5adb8e771d0481db4b5a4ea7dc0d602c449
Author: hughhhh <hu...@gmail.com>
AuthorDate: Thu Mar 31 23:06:36 2022 -0400
working migration and need to fill in owners values
---
.../89f17d951737_add_owners_dataset_model.py | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/superset/migrations/versions/89f17d951737_add_owners_dataset_model.py b/superset/migrations/versions/89f17d951737_add_owners_dataset_model.py
index 5b83609..fe2f38e 100644
--- a/superset/migrations/versions/89f17d951737_add_owners_dataset_model.py
+++ b/superset/migrations/versions/89f17d951737_add_owners_dataset_model.py
@@ -29,11 +29,63 @@ down_revision = "2ed890b36b94"
import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import relationship
+
+from superset import db, security_manager
+
+Base = declarative_base()
+
+
+class User(Base):
+ """Declarative class to do query in upgrade"""
+
+ __tablename__ = "ab_user"
+ id = sa.Column(sa.Integer, primary_key=True)
+
+
+class SqlaTable(Base):
+ __tablename__ = "tables"
+
+ id = sa.Column(sa.Integer, primary_key=True)
+ owners = relationship(
+ "User",
+ secondary=sa.Table(
+ "sqlatable_user",
+ Base.metadata,
+ sa.Column("id", sa.Integer, primary_key=True),
+ sa.Column("user_id", sa.Integer, sa.ForeignKey("ab_user.id")),
+ sa.Column("table_id", sa.Integer, sa.ForeignKey("tables.id")),
+ ),
+ backref="tables",
+ )
+
+
+class Dataset(Base):
+ __tablename__ = "sl_datasets"
+
+ id = sa.Column(sa.Integer, primary_key=True)
+ sqlatable_id = sa.Column(sa.Integer, nullable=True, unique=True)
+ owners = relationship(
+ "User",
+ secondary=sa.Table(
+ "sl_dataset_users",
+ Base.metadata,
+ sa.Column("id", sa.Integer, primary_key=True),
+ sa.Column("user_id", sa.ForeignKey("ab_user.id")),
+ sa.Column("dataset_id", sa.ForeignKey("sl_datasets.id")),
+ ),
+ backref="sl_datasets",
+ )
def upgrade():
+ bind = op.get_bind()
+ session = db.Session(bind=bind)
+
op.create_table(
"sl_dataset_users",
+ sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("user_id", sa.Integer(), nullable=True),
sa.Column("dataset_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
@@ -46,6 +98,21 @@ def upgrade():
),
)
+ for sqlatable in session.query(SqlaTable).all():
+ try:
+ ds = (
+ session.query(Dataset)
+ .filter(Dataset.sqlatable_id == sqlatable.id)
+ .one()
+ )
+ except sa.orm.exc.NoResultFound:
+ continue
+
+ ds.owners = sqlatable.owners
+
+ session.commit()
+ session.close()
+
def downgrade():
op.drop_table("sl_dataset_users")