from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.Widget, models.Widget.text, 'text') migrator.set_nullable(models.Widget, models.Widget.visualization, True) db.close_db(None)
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.Dashboard, models.Dashboard.dashboard_filters_enabled, 'dashboard_filters_enabled') db.close_db(None)
if __name__ == '__main__': default_options = {"series": {"type": "column"}} db.connect_db() if not models.Visualization.table_exists(): print "Creating visualization table..." models.Visualization.create_table() with db.database.transaction(): migrator = Migrator(db.database) print "Adding visualization_id to widgets:" field = models.Widget.visualization field.null = True migrator.add_column(models.Widget, models.Widget.visualization, 'visualization_id') print 'Creating TABLE visualizations for all queries...' for query in models.Query.select(): vis = models.Visualization(query=query, name="Table", description=query.description or "", type="TABLE", options="{}") vis.save() print 'Creating COHORT visualizations for all queries named like %cohort%...' for query in models.Query.select().where(models.Query.name ** "%cohort%"): vis = models.Visualization(query=query, name="Cohort", description=query.description or "", type="COHORT", options="{}") vis.save()
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.Dashboard, models.Dashboard.created_at, 'created_at') migrator.add_column(models.Widget, models.Widget.created_at, 'created_at') db.close_db(None)
from playhouse.migrate import Migrator from redash.models import db from redash import models if __name__ == "__main__": db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.DataSource, models.DataSource.queue_name, "queue_name") migrator.add_column(models.DataSource, models.DataSource.scheduled_queue_name, "scheduled_queue_name") db.close_db(None)
migrator = Migrator(db.database) with db.database.transaction(): print "Creating user field on dashboard and queries..." try: migrator.rename_column(models.Query, '"user"', "user_email") migrator.rename_column(models.Dashboard, '"user"', "user_email") except peewee.ProgrammingError: print "Failed to rename user column -- assuming it already exists" with db.database.transaction(): models.Query.user.null = True models.Dashboard.user.null = True try: migrator.add_column(models.Query, models.Query.user, "user_id") migrator.add_column(models.Dashboard, models.Dashboard.user, "user_id") except peewee.ProgrammingError: print "Failed to create user_id column -- assuming it already exists" print "Creating user for all queries and dashboards..." for obj in itertools.chain(models.Query.select(), models.Dashboard.select()): # Some old databases might have queries with empty string as user email: email = obj.user_email or settings.ADMINS[0] email = email.split(',')[0] print ".. {} , {}, {}".format(type(obj), obj.id, email) try: user = models.User.get(models.User.email == email) except models.User.DoesNotExist:
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.User, models.User.password_hash, 'password_hash') db.close_db(None)
import peewee from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) if not models.Group.table_exists(): print "Creating groups table..." models.Group.create_table() with db.database.transaction(): models.Group.insert(name='admin', permissions=['admin'], tables=['*']).execute() models.Group.insert(name='api', permissions=['view_query'], tables=['*']).execute() models.Group.insert(name='default', permissions=models.Group.DEFAULT_PERMISSIONS, tables=['*']).execute() migrator.add_column(models.User, models.User.groups, 'groups') models.User.update(groups=['admin', 'default']).where(peewee.SQL("is_admin = true")).execute() models.User.update(groups=['admin', 'default']).where(peewee.SQL("'admin' = any(permissions)")).execute() models.User.update(groups=['default']).where(peewee.SQL("is_admin = false")).execute() migrator.drop_column(models.User, 'permissions') migrator.drop_column(models.User, 'is_admin') db.close_db(None)
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.Query, models.Query.is_archived, 'is_archived') db.close_db(None)
from playhouse.migrate import Migrator from redash.models import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.DataSource, models.DataSource.queue_name, 'queue_name') migrator.add_column(models.DataSource, models.DataSource.scheduled_queue_name, 'scheduled_queue_name') db.close_db(None)
from playhouse.migrate import Migrator from redash.models import db from redash import models if __name__ == "__main__": db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.Widget, models.Widget.text, "text") migrator.set_nullable(models.Widget, models.Widget.visualization, True) db.close_db(None)
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.User, models.User.permissions, 'permissions') models.User.update(permissions=['admin'] + models.User.DEFAULT_PERMISSIONS).where(models.User.is_admin == True).execute() db.close_db(None)
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.User, models.User.permissions, 'permissions') models.User.update(permissions=['admin'] + models.User.DEFAULT_PERMISSIONS).where( models.User.is_admin == True).execute() db.close_db(None)
from playhouse.migrate import Migrator from redash import db from redash import models if __name__ == '__main__': db.connect_db() migrator = Migrator(db.database) with db.database.transaction(): migrator.add_column(models.DataSource, models.DataSource.queue_name, 'queue_name') migrator.add_column(models.DataSource, models.DataSource.scheduled_queue_name, 'scheduled_queue_name') db.close_db(None)
if not models.DataSource.table_exists(): print "Creating data_sources table..." models.DataSource.create_table() default_data_source = models.DataSource.create(name="Default", type=settings.CONNECTION_ADAPTER, options=settings.CONNECTION_STRING) else: default_data_source = models.DataSource.select().first() migrator = Migrator(db.database) models.Query.data_source.null = True models.QueryResult.data_source.null = True try: with db.database.transaction(): migrator.add_column(models.Query, models.Query.data_source, "data_source_id") except peewee.ProgrammingError: print "Failed to create data_source_id column -- assuming it already exists" try: with db.database.transaction(): migrator.add_column(models.QueryResult, models.QueryResult.data_source, "data_source_id") except peewee.ProgrammingError: print "Failed to create data_source_id column -- assuming it already exists" print "Updating data source to existing one..." models.Query.update(data_source=default_data_source.id).execute() models.QueryResult.update(data_source=default_data_source.id).execute() with db.database.transaction(): print "Setting data source to non nullable..."
migrator = Migrator(db.database) with db.database.transaction(): print "Creating user field on dashboard and queries..." try: migrator.rename_column(models.Query, '"user"', "user_email") migrator.rename_column(models.Dashboard, '"user"', "user_email") except peewee.ProgrammingError: print "Failed to rename user column -- assuming it already exists" with db.database.transaction(): models.Query.user.null = True models.Dashboard.user.null = True try: migrator.add_column(models.Query, models.Query.user, "user_id") migrator.add_column(models.Dashboard, models.Dashboard.user, "user_id") except peewee.ProgrammingError: print "Failed to create user_id column -- assuming it already exists" print "Creating user for all queries and dashboards..." for obj in itertools.chain(models.Query.select(), models.Dashboard.select()): # Some old databases might have queries with empty string as user email: email = obj.user_email or settings.ADMINS[0] email = email.split(',')[0] print ".. {} , {}, {}".format(type(obj), obj.id, email) try:
print "Creating data_sources table..." models.DataSource.create_table() default_data_source = models.DataSource.create( name="Default", type=settings.CONNECTION_ADAPTER, options=settings.CONNECTION_STRING) else: default_data_source = models.DataSource.select().first() migrator = Migrator(db.database) models.Query.data_source.null = True models.QueryResult.data_source.null = True try: with db.database.transaction(): migrator.add_column(models.Query, models.Query.data_source, "data_source_id") except peewee.ProgrammingError: print "Failed to create data_source_id column -- assuming it already exists" try: with db.database.transaction(): migrator.add_column(models.QueryResult, models.QueryResult.data_source, "data_source_id") except peewee.ProgrammingError: print "Failed to create data_source_id column -- assuming it already exists" print "Updating data source to existing one..." models.Query.update(data_source=default_data_source.id).execute() models.QueryResult.update(data_source=default_data_source.id).execute()