From 0545d11a2243e6982622288e9113620e1a203789 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Wed, 6 Jun 2018 16:56:39 -0700 Subject: [PATCH] [migrations] Fix time grain SQLA (#5135) --- .../versions/c5756bec8b47_time_grain_sqla.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 superset/migrations/versions/c5756bec8b47_time_grain_sqla.py diff --git a/superset/migrations/versions/c5756bec8b47_time_grain_sqla.py b/superset/migrations/versions/c5756bec8b47_time_grain_sqla.py new file mode 100644 index 0000000000000..06ce632de31b9 --- /dev/null +++ b/superset/migrations/versions/c5756bec8b47_time_grain_sqla.py @@ -0,0 +1,65 @@ +"""Time grain SQLA + +Revision ID: c5756bec8b47 +Revises: e502db2af7be +Create Date: 2018-06-04 11:12:59.878742 + +""" + +# revision identifiers, used by Alembic. +revision = 'c5756bec8b47' +down_revision = 'e502db2af7be' + +from alembic import op +import json +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import Column, Integer, String, Text + +from superset import db + +Base = declarative_base() + + +class Slice(Base): + __tablename__ = 'slices' + + id = Column(Integer, primary_key=True) + datasource_type = Column(String(200)) + slice_name = Column(String(250)) + params = Column(Text) + + +def upgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + + for slc in session.query(Slice).all(): + try: + params = json.loads(slc.params) + + if params.get('time_grain_sqla') == 'Time Column': + params['time_grain_sqla'] = None + slc.params = json.dumps(params, sort_keys=True) + except Exception: + pass + + session.commit() + session.close() + + +def downgrade(): + bind = op.get_bind() + session = db.Session(bind=bind) + + for slc in session.query(Slice).all(): + try: + params = json.loads(slc.params) + + if params.get('time_grain_sqla') is None: + params['time_grain_sqla'] = 'Time Column' + slc.params = json.dumps(params, sort_keys=True) + except Exception: + pass + + session.commit() + session.close()