Skip to content
This repository has been archived by the owner on Oct 14, 2024. It is now read-only.

Commit

Permalink
Merge pull request getredash#979 from ninneko/860-managepy_support_gr…
Browse files Browse the repository at this point in the history
…opu_operation

Feature: Add CLI to edit group permissions
  • Loading branch information
arikfr committed May 17, 2016
2 parents 6a9de87 + c3c302e commit 9fb9364
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
3 changes: 2 additions & 1 deletion manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
50 changes: 50 additions & 0 deletions redash/cli/groups.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
from flask_script import Manager, prompt_pass
from redash import models

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).")
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

@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


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

0 comments on commit 9fb9364

Please sign in to comment.