Skip to content

Commit

Permalink
Add a command-line script to make an existing user an admin.
Browse files Browse the repository at this point in the history
  • Loading branch information
tseaver committed Nov 8, 2011
1 parent dd7dcc0 commit acb1fa7
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
2 changes: 2 additions & 0 deletions TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,5 @@ User / Group Administration
* Key group name -> member UUIDs

* Key member UUID -> group names

- [X] Add a command-line script to make an existing user an admin.
55 changes: 55 additions & 0 deletions cartouche/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import os
import sys

from pyramid.paster import bootstrap
import transaction

from cartouche.interfaces import IRegistrations
from cartouche.persistence import ConfirmedRegistrations


def add_admin_user():
__doc__ = """ Make an existing cartouche user a member of the 'admin' group.
Usage: %s config_uri login
"""
try:
config_uri, login = sys.argv[1:]
except:
print __doc__ % sys.argv[0]
sys.exit[2]

ini_file = config_uri.split('#')[0]

if not os.path.isfile(ini_file):
print __doc__ % sys.argv[0]
print
print 'Invalid config file:', ini_file
print
sys.exit[2]

env = bootstrap(config_uri)
request, root = env['request'], env['root']
confirmed = request.registry.queryAdapter(root, IRegistrations,
name='confirmed')
if confirmed is None:
confirmed = ConfirmedRegistrations(root)

info = confirmed.get_by_login(login)
if info is None:
print __doc__ % sys.argv[0]
print
print 'Invalid login:', login
print
sys.exit[2]

admins = confirmed._getMapping('group_users').get('g:admin') or []
if info.uuid not in admins:
admins.append(info.uuid)
confirmed._getMapping('group_users')['g:admin'] = admins
groups = confirmed._getMapping('user_groups').get(info.uuid) or []
groups.append('g:admin')
confirmed._getMapping('user_groups')[info.uuid] = groups

transaction.commit()
env['closer']()
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@
entry_points = """\
[paste.app_factory]
main = cartouche:main
[console_scripts]
add_cartouche_admin = cartouche.admin:add_admin_user
""",
paster_plugins=['pyramid'],
)

0 comments on commit acb1fa7

Please sign in to comment.