diff --git a/manage.py b/manage.py index a00bdad3c..3b90cd59a 100755 --- a/manage.py +++ b/manage.py @@ -81,19 +81,20 @@ def drop_tables(): @users_manager.option('--admin', dest='is_admin', action="store_true", default=False, help="set user as admin") @users_manager.option('--google', dest='google_auth', action="store_true", default=False, help="user uses Google Auth to login") @users_manager.option('--password', dest='password', default=None, help="Password for users who don't use Google Auth (leave blank for prompt).") -@users_manager.option('--permissions', dest='permissions', default=models.User.DEFAULT_PERMISSIONS, help="Comma seperated list of permissions (leave blank for default).") -def create(email, name, permissions, is_admin=False, google_auth=False, password=None): +@users_manager.option('--groups', dest='groups', default=['default'], help="Comma seperated list of groups (leave blank for default).") +def create(email, name, groups, is_admin=False, google_auth=False, password=None): print "Creating user (%s, %s)..." % (email, name) print "Admin: %r" % is_admin print "Login with Google Auth: %r\n" % google_auth - if isinstance(permissions, basestring): - permissions = permissions.split(',') - permissions.remove('') # in case it was empty string + if isinstance(groups, basestring) and len(groups) > 0: + groups = groups.split(',') + else: + groups = ['default'] if is_admin: - permissions += ['admin'] + groups += ['admin'] - user = models.User(email=email, name=name, permissions=permissions) + user = models.User(email=email, name=name, groups=groups) if not google_auth: password = password or prompt_pass("Password") user.hash_password(password) diff --git a/migrations/permissions_migration.py b/migrations/permissions_migration.py new file mode 100644 index 000000000..5a91621ac --- /dev/null +++ b/migrations/permissions_migration.py @@ -0,0 +1,24 @@ +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='default', permissions=models.Group.DEFAULT_PERMISSIONS, tables=['*']).execute() + + migrator.drop_column(models.User, 'permissions') + migrator.add_column(models.User, models.User.groups, 'groups') + + models.User.update(groups=['admin', 'default']).where(models.User.is_admin == True).execute() + models.User.update(groups=['default']).where(models.User.is_admin == False).execute() + + db.close_db(None) diff --git a/rd_ui/app/index.html b/rd_ui/app/index.html index 67cac81dd..fae145fc2 100644 --- a/rd_ui/app/index.html +++ b/rd_ui/app/index.html @@ -36,7 +36,7 @@