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