Revision e7cb4085 snf-astakos-app/astakos/im/management/commands/user-modify.py

b/snf-astakos-app/astakos/im/management/commands/user-modify.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
import string
35

  
34 36
from optparse import make_option
35 37

  
36 38
from django.core.management.base import BaseCommand, CommandError
......
38 40
from django.core.exceptions import ValidationError
39 41

  
40 42
from astakos.im.models import AstakosUser
41
from astakos.im.functions import (activate, deactivate)
42 43
from astakos.im import quotas
44
from astakos.im import activation_backends
43 45
from ._common import remove_user_permission, add_user_permission, is_uuid
44 46
from snf_django.lib.db.transaction import commit_on_success_strict
45
import string
47

  
48
activation_backend = activation_backends.get_backend()
46 49

  
47 50

  
48 51
class Command(BaseCommand):
......
92 95
                    dest='inactive',
93 96
                    default=False,
94 97
                    help="Change user's state to inactive"),
98
        make_option('--inactive-reason',
99
                    dest='inactive_reason',
100
                    help="Reason user got inactive"),
95 101
        make_option('--add-group',
96 102
                    dest='add-group',
97 103
                    help="Add user group"),
......
104 110
        make_option('--delete-permission',
105 111
                    dest='delete-permission',
106 112
                    help="Delete user permission"),
113
        make_option('--accept',
114
                    dest='accept',
115
                    action='store_true',
116
                    help="Accept user"),
117
        make_option('--reject',
118
                    dest='reject',
119
                    action='store_true',
120
                    help="Reject user"),
121
        make_option('--reject-reason',
122
                    dest='reject_reason',
123
                    help="Reason user got rejected"),
107 124
        make_option('--set-base-quota',
108 125
                    dest='set_base_quota',
109 126
                    metavar='<resource> <capacity>',
......
140 157
        elif options.get('noadmin'):
141 158
            user.is_superuser = False
142 159

  
160
        if options.get('reject'):
161
            reject_reason = options.get('reject_reason', None)
162
            res = activation_backend.handle_moderation(
163
                user,
164
                accept=False,
165
                reject_reason=reject_reason)
166
            activation_backend.send_result_notifications(res, user)
167
            if res.is_error():
168
                print "Failed to reject.", res.message
169
            else:
170
                print "Account rejected"
171

  
172
        if options.get('accept'):
173
            res = activation_backend.handle_moderation(user, accept=True)
174
            activation_backend.send_result_notifications(res, user)
175
            if res.is_error():
176
                print "Failed to accept.", res.message
177
            else:
178
                print "Account accepted and activated"
179

  
143 180
        if options.get('active'):
144
            activate(user)
181
            res = activation_backend.activate_user(user)
182
            if res.is_error():
183
                print "Failed to activate.", res.message
184
            else:
185
                print "Account %s activated" % user.username
186

  
145 187
        elif options.get('inactive'):
146
            deactivate(user)
188
            res = activation_backend.deactivate_user(
189
                user,
190
                reason=options.get('inactive_reason', None))
191
            if res.is_error():
192
                print "Failed to deactivate,", res.message
193
            else:
194
                print "Account %s deactivated" % user.username
147 195

  
148 196
        invitations = options.get('invitations')
149 197
        if invitations is not None:

Also available in: Unified diff