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: is_admin = email in settings.ADMINS user = models.User.create(email=email, name=email, is_admin=is_admin) obj.user = user obj.save() print "Set user_id to non null..." with db.database.transaction(): migrator.set_nullable(models.Query, models.Query.user, False) migrator.set_nullable(models.Dashboard, models.Dashboard.user, False) migrator.set_nullable(models.Query, models.Query.user_email, True) migrator.set_nullable(models.Dashboard, models.Dashboard.user_email, True)
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.set_nullable(models.Widget, models.Widget.query_id, True) migrator.set_nullable(models.Widget, models.Widget.type, True) db.close_db(None)
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.set_nullable(models.Query, models.Query.data_source, False) with db.database.transaction(): print "Setting data source to non nullable..." migrator.set_nullable(models.QueryResult, models.QueryResult.data_source, False) 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.set_nullable(models.Query, models.Query.description, True) db.close_db(None)
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: is_admin = email in settings.ADMINS user = models.User.create(email=email, name=email, is_admin=is_admin) obj.user = user obj.save() print "Set user_id to non null..." with db.database.transaction(): migrator.set_nullable(models.Query, models.Query.user, False) migrator.set_nullable(models.Dashboard, models.Dashboard.user, False) migrator.set_nullable(models.Query, models.Query.user_email, True) migrator.set_nullable(models.Dashboard, models.Dashboard.user_email, True)
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.set_nullable(models.Query, models.Query.data_source, False) with db.database.transaction(): print "Setting data source to non nullable..." migrator.set_nullable(models.QueryResult, models.QueryResult.data_source, False) db.close_db(None)