Revision 30dc8c1a snf-astakos-app/astakos/im/management/commands/modifyuser.py
b/snf-astakos-app/astakos/im/management/commands/modifyuser.py | ||
---|---|---|
34 | 34 |
from optparse import make_option |
35 | 35 |
|
36 | 36 |
from django.core.management.base import BaseCommand, CommandError |
37 |
from django.contrib.auth.models import Group |
|
37 |
from django.contrib.auth.models import Group, Permission |
|
38 |
from django.contrib.contenttypes.models import ContentType |
|
38 | 39 |
from django.core.exceptions import ValidationError |
39 | 40 |
|
40 | 41 |
from astakos.im.models import AstakosUser |
42 |
from ._common import remove_user_permission, add_user_permission |
|
41 | 43 |
|
42 | 44 |
class Command(BaseCommand): |
43 | 45 |
args = "<user ID>" |
... | ... | |
87 | 89 |
make_option('--delete-group', |
88 | 90 |
dest='delete-group', |
89 | 91 |
help="Delete user group"), |
92 |
make_option('--add-permission', |
|
93 |
dest='add-permission', |
|
94 |
help="Add user permission"), |
|
95 |
make_option('--delete-permission', |
|
96 |
dest='delete-permission', |
|
97 |
help="Delete user permission"), |
|
90 | 98 |
) |
91 | 99 |
|
92 | 100 |
def handle(self, *args, **options): |
... | ... | |
121 | 129 |
group = Group.objects.get(name=groupname) |
122 | 130 |
user.groups.add(group) |
123 | 131 |
except Group.DoesNotExist, e: |
124 |
raise CommandError("Group named %s does not exist." % groupname)
|
|
132 |
self.stdout.write("Group named %s does not exist\n" % groupname)
|
|
125 | 133 |
|
126 | 134 |
groupname = options.get('delete-group') |
127 | 135 |
if groupname is not None: |
... | ... | |
129 | 137 |
group = Group.objects.get(name=groupname) |
130 | 138 |
user.groups.remove(group) |
131 | 139 |
except Group.DoesNotExist, e: |
132 |
raise CommandError("Group named %s does not exist." % groupname) |
|
140 |
self.stdout.write("Group named %s does not exist\n" % groupname) |
|
141 |
|
|
142 |
pname = options.get('add-permission') |
|
143 |
if pname is not None: |
|
144 |
try: |
|
145 |
r, created = add_user_permission(user, pname) |
|
146 |
if created: |
|
147 |
self.stdout.write('Permission: %s created successfully\n' % pname) |
|
148 |
if r > 0: |
|
149 |
self.stdout.write('Permission: %s added successfully\n' % pname) |
|
150 |
elif r==0: |
|
151 |
self.stdout.write('User has already permission: %s\n' % pname) |
|
152 |
except Exception, e: |
|
153 |
raise CommandError(e) |
|
154 |
|
|
155 |
pname = options.get('delete-permission') |
|
156 |
if pname is not None and not user.has_perm(pname): |
|
157 |
try: |
|
158 |
r = remove_user_permission(user, pname) |
|
159 |
if r < 0: |
|
160 |
self.stdout.write('Invalid permission codename: %s\n' % pname) |
|
161 |
elif r == 0: |
|
162 |
self.stdout.write('User has not permission: %s\n' % pname) |
|
163 |
elif r > 0: |
|
164 |
self.stdout.write('Permission: %s removed successfully\n' % pname) |
|
165 |
except Exception, e: |
|
166 |
raise CommandError(e) |
|
133 | 167 |
|
134 | 168 |
level = options.get('level') |
135 | 169 |
if level is not None: |
Also available in: Unified diff