From 19aaa938d8a4bd02b50492359d239431e310072b Mon Sep 17 00:00:00 2001 From: "yohei.naruse" Date: Sun, 10 Apr 2016 22:08:36 +0900 Subject: [PATCH 1/3] manage.py support group operations. --- manage.py | 3 ++- redash/cli/groups.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 redash/cli/groups.py diff --git a/manage.py b/manage.py index 502d97aaf9..ea548a065f 100755 --- a/manage.py +++ b/manage.py @@ -8,12 +8,13 @@ from redash import settings, models, __version__ from redash.wsgi import app -from redash.cli import users, database, data_sources, organization +from redash.cli import users, groups, database, data_sources, organization from redash.monitor import get_status manager = Manager(app) manager.add_command("database", database.manager) manager.add_command("users", users.manager) +manager.add_command("groups", groups.manager) manager.add_command("ds", data_sources.manager) manager.add_command("org", organization.manager) diff --git a/redash/cli/groups.py b/redash/cli/groups.py new file mode 100644 index 0000000000..b787773063 --- /dev/null +++ b/redash/cli/groups.py @@ -0,0 +1,34 @@ +from flask_script import Manager, prompt_pass +from redash import models + +manager = Manager(help="Users management commands. This commands assume single organization operation.") + +@manager.option('name', help="Group's name") +@manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") +def create(name, permissions=None): + print "Creating group (%s)..." % (name) + + org = models.Organization.get_by_slug('default') + + if permissions is None: + permissions = models.Group.DEFAULT_PERMISSIONS + else: + permissions = permissions.split(',') + permissions = [p.strip() for p in permissions] + print "permissions: [%s]" % ",".join(permissions) + + models.Group.create(name=name, org=org, permissions=permissions) + +@manager.option('id', help="Group's id") +@manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") +def change_permission(id, permissions=None): + print "Change permissisons of group %s ..." % (id) + + if permissions is None: + permissions = models.Group.DEFAULT_PERMISSIONS + else: + permissions = permissions.split(',') + permissions = [p.strip() for p in permissions] + print "permissions: [%s]" % ",".join(permissions) + + models.Group.update(permissions=permissions).where(models.Group.id==id).execute() \ No newline at end of file From 1fa701c13634eaf29f8964391441d576e14a260b Mon Sep 17 00:00:00 2001 From: "yohei.naruse" Date: Thu, 28 Apr 2016 11:43:01 +0900 Subject: [PATCH 2/3] apply reviews. --- redash/cli/groups.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/redash/cli/groups.py b/redash/cli/groups.py index b787773063..469e3a1ede 100644 --- a/redash/cli/groups.py +++ b/redash/cli/groups.py @@ -1,7 +1,7 @@ from flask_script import Manager, prompt_pass from redash import models -manager = Manager(help="Users management commands. This commands assume single organization operation.") +manager = Manager(help="Groups management commands. This commands assume single organization operation.") @manager.option('name', help="Group's name") @manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") @@ -10,25 +10,41 @@ def create(name, permissions=None): org = models.Organization.get_by_slug('default') - if permissions is None: - permissions = models.Group.DEFAULT_PERMISSIONS - else: - permissions = permissions.split(',') - permissions = [p.strip() for p in permissions] + permissions = extract_permissions_string(permissions) + print "permissions: [%s]" % ",".join(permissions) - models.Group.create(name=name, org=org, permissions=permissions) + try: + models.Group.create(name=name, org=org, permissions=permissions) + except Exception, e: + print "Failed create group: %s" % e.message @manager.option('id', help="Group's id") @manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") -def change_permission(id, permissions=None): - print "Change permissisons of group %s ..." % (id) +def change_permissions(id, permissions=None): + print "Change permissions of group %s ..." % id + + try: + group = models.Group.get_by_id(id) + except models.Group.DoesNotExist: + print "User [%s] not found." % id + return + permissions = extract_permissions_string(permissions) + print "current permissions [%s] will be modify to [%s]" % (",".join(group.permissions), ",".join(permissions)) + + group.permissions = permissions + + try: + group.save() + except Exception, e: + print "Failed change permission: %s" % e.message + + +def extract_permissions_string(permissions): if permissions is None: permissions = models.Group.DEFAULT_PERMISSIONS else: permissions = permissions.split(',') permissions = [p.strip() for p in permissions] - print "permissions: [%s]" % ",".join(permissions) - - models.Group.update(permissions=permissions).where(models.Group.id==id).execute() \ No newline at end of file + return permissions \ No newline at end of file From c3c302e11ee3c6971daf98ebc6a96b50558494c2 Mon Sep 17 00:00:00 2001 From: "yohei.naruse" Date: Sun, 8 May 2016 12:43:42 +0900 Subject: [PATCH 3/3] modify indent size --- redash/cli/groups.py | 74 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/redash/cli/groups.py b/redash/cli/groups.py index 469e3a1ede..ab41a91601 100644 --- a/redash/cli/groups.py +++ b/redash/cli/groups.py @@ -6,45 +6,45 @@ @manager.option('name', help="Group's name") @manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") def create(name, permissions=None): - print "Creating group (%s)..." % (name) - - org = models.Organization.get_by_slug('default') - - permissions = extract_permissions_string(permissions) - - print "permissions: [%s]" % ",".join(permissions) - - try: - models.Group.create(name=name, org=org, permissions=permissions) - except Exception, e: - print "Failed create group: %s" % e.message + print "Creating group (%s)..." % (name) + + org = models.Organization.get_by_slug('default') + + permissions = extract_permissions_string(permissions) + + print "permissions: [%s]" % ",".join(permissions) + + try: + models.Group.create(name=name, org=org, permissions=permissions) + except Exception, e: + print "Failed create group: %s" % e.message @manager.option('id', help="Group's id") @manager.option('--permissions', dest='permissions', default=None, help="Comma seperated list of permissions ('create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources') (leave blank for default).") def change_permissions(id, permissions=None): - print "Change permissions of group %s ..." % id - - try: - group = models.Group.get_by_id(id) - except models.Group.DoesNotExist: - print "User [%s] not found." % id - return - - permissions = extract_permissions_string(permissions) - print "current permissions [%s] will be modify to [%s]" % (",".join(group.permissions), ",".join(permissions)) - - group.permissions = permissions - - try: - group.save() - except Exception, e: - print "Failed change permission: %s" % e.message - - + print "Change permissions of group %s ..." % id + + try: + group = models.Group.get_by_id(id) + except models.Group.DoesNotExist: + print "User [%s] not found." % id + return + + permissions = extract_permissions_string(permissions) + print "current permissions [%s] will be modify to [%s]" % (",".join(group.permissions), ",".join(permissions)) + + group.permissions = permissions + + try: + group.save() + except Exception, e: + print "Failed change permission: %s" % e.message + + def extract_permissions_string(permissions): - if permissions is None: - permissions = models.Group.DEFAULT_PERMISSIONS - else: - permissions = permissions.split(',') - permissions = [p.strip() for p in permissions] - return permissions \ No newline at end of file + if permissions is None: + permissions = models.Group.DEFAULT_PERMISSIONS + else: + permissions = permissions.split(',') + permissions = [p.strip() for p in permissions] + return permissions \ No newline at end of file