Revision cf8482f2 tools/snf-admin
b/tools/snf-admin | ||
---|---|---|
51 | 51 |
from os.path import basename |
52 | 52 |
|
53 | 53 |
from synnefo.db import models |
54 |
from synnefo.invitations.invitations import add_invitation, send_invitation |
|
55 |
from synnefo.logic.users import _register_user, delete_user |
|
54 | 56 |
|
55 | 57 |
|
56 | 58 |
def get_user(uid): |
... | ... | |
163 | 165 |
class CreateUser(Command): |
164 | 166 |
group = 'user' |
165 | 167 |
name = 'create' |
166 |
syntax = '<user name>'
|
|
168 |
syntax = '<username> <email>'
|
|
167 | 169 |
description = 'create a user' |
168 | 170 |
|
169 | 171 |
def add_options(self, parser): |
170 |
parser.add_option('--credit', dest='credit', metavar='VALUE', |
|
171 |
help='set user credits') |
|
172 |
parser.add_option('--invitations', dest='invitations', |
|
173 |
metavar='VALUE', help='set max invitations') |
|
174 | 172 |
parser.add_option('--realname', dest='realname', metavar='NAME', |
175 | 173 |
help='set real name of user') |
176 | 174 |
parser.add_option('--type', dest='type', metavar='TYPE', |
177 | 175 |
help='set user type') |
178 |
parser.add_option('--uniq', dest='uniq', metavar='ID', |
|
179 |
help='set external unique ID') |
|
180 | 176 |
|
181 |
def main(self, username): |
|
182 |
user = models.SynnefoUser(name=username) |
|
183 |
user.credit = self.credit if self.credit else 0 |
|
184 |
user.max_invitations = self.invitations if self.invitations else 0 |
|
185 |
user.realname = self.realname if self.realname else username |
|
186 |
|
|
187 |
if self.type: |
|
188 |
allowed = [x[0] for x in models.SynnefoUser.ACCOUNT_TYPE] |
|
189 |
if self.type not in allowed: |
|
190 |
print 'Invalid type' |
|
191 |
return |
|
192 |
user.type = self.type |
|
193 |
else: |
|
194 |
user.type = 'USER' |
|
195 |
|
|
196 |
if self.uniq: |
|
197 |
user.uniq = self.uniq |
|
177 |
def main(self, username, email): |
|
178 |
realname = self.realname or username |
|
179 |
type = self.type or 'USER' |
|
180 |
if type not in [x[0] for x in models.SynnefoUser.ACCOUNT_TYPE]: |
|
181 |
print 'Invalid type' |
|
182 |
return |
|
198 | 183 |
|
199 |
user.save()
|
|
184 |
user = _register_user(realname, username, email, type)
|
|
200 | 185 |
print_item(user) |
201 | 186 |
|
202 | 187 |
|
... | ... | |
212 | 197 |
default=False, help='force deletion (use with care)') |
213 | 198 |
|
214 | 199 |
def main(self, user_id): |
215 |
if not self.force: |
|
200 |
if self.force: |
|
201 |
user = get_user(user_id) |
|
202 |
delete_user(user) |
|
203 |
else: |
|
216 | 204 |
print "WARNING: Deleting a user is a very destructive operation." |
217 | 205 |
print "Any objects with foreign keys pointing to this user will" \ |
218 | 206 |
" be deleted as well." |
219 | 207 |
print "Use --force to force deletion of this user." |
220 | 208 |
print "You have been warned!" |
221 |
return |
|
222 |
|
|
223 |
user = get_user(user_id) |
|
224 |
user.delete() |
|
209 |
|
|
210 |
|
|
211 |
class InviteUser(Command): |
|
212 |
group = 'user' |
|
213 |
name = 'invite' |
|
214 |
syntax = '<inviter id> <invitee name> <invitee email>' |
|
215 |
description = 'invite a user' |
|
216 |
|
|
217 |
def main(self, inviter_id, name, email): |
|
218 |
inviter = get_user(inviter_id) |
|
219 |
inv = add_invitation(inviter, name, email) |
|
220 |
send_invitation(inv) |
|
225 | 221 |
|
226 | 222 |
|
227 | 223 |
class ListUsers(Command): |
Also available in: Unified diff