Revision 54ae949d snf-app/synnefo/tools/admin.py

b/snf-app/synnefo/tools/admin.py
50 50
from os.path import basename
51 51

  
52 52
from synnefo.db import models
53
from synnefo.invitations.invitations import add_invitation, send_invitation
54 53
from synnefo.logic import backend, users
55 54
from synnefo.plankton.backend import ImageBackend
56 55
from synnefo.util.dictconfig import dictConfig
......
188 187
        print_item(user)
189 188

  
190 189

  
191
class InviteUser(Command):
192
    group = 'user'
193
    name = 'invite'
194
    syntax = '<inviter id> <invitee name> <invitee email>'
195
    description = 'invite a user'
196
    
197
    def main(self, inviter_id, name, email):
198
        name = name.decode('utf8')
199
        inviter = get_user(inviter_id)
200
        inv = add_invitation(inviter, name, email)
201
        send_invitation(inv)
202

  
203

  
204 190
class ListUsers(Command):
205 191
    group = 'user'
206 192
    name = 'list'
......
233 219
        types = ', '.join(x[0] for x in models.SynnefoUser.ACCOUNT_TYPE)
234 220
        states = ', '.join(x[0] for x in models.SynnefoUser.ACCOUNT_STATE)
235 221
        
236
        parser.add_option('--credit', dest='credit', metavar='VALUE',
237
                            help='set user credits')
238
        parser.add_option('--invitations', dest='invitations',
239
                            metavar='VALUE', help='set max invitations')
240 222
        parser.add_option('--realname', dest='realname', metavar='NAME',
241 223
                            help='set real name of user')
242 224
        parser.add_option('--type', dest='type', metavar='TYPE',
......
251 233
    def main(self, user_id):
252 234
        user = get_user(user_id)
253 235
        
254
        if self.credit:
255
            user.credit = self.credit
256
        if self.invitations:
257
            user.max_invitations = self.invitations
258 236
        if self.realname:
259 237
            user.realname = self.realname
260 238
        if self.type:
......
750 728
        stats['Flavors'] = models.Flavor.objects.count()
751 729
        stats['VMs'] = models.VirtualMachine.objects.filter(deleted=False).count()
752 730
        stats['Networks'] = models.Network.objects.exclude(state='DELETED').count()
753
        stats['Invitations'] = models.Invitations.objects.count()
754 731
        
755 732
        stats['Ganeti Instances'] = len(backend.get_ganeti_instances())
756 733
        stats['Ganeti Nodes'] = len(backend.get_ganeti_nodes())
......
759 736
        print_dict(stats)
760 737

  
761 738

  
762
class ListInvitations(Command):
763
    group = 'invitation'
764
    name = 'list'
765
    syntax = '[invitation id]'
766
    description = 'list invitations'
767
    
768
    def main(self, invitation_id=None):
769
        if invitation_id:
770
            invitations = [models.Invitations.objects.get(id=invitation_id)]
771
        else:
772
            invitations = models.Invitations.objects.order_by('id')
773
        print_items(invitations, detail=True, keys=('id',))
774

  
775

  
776
class ResendInviation(Command):
777
    group = 'invitation'
778
    name = 'resend'
779
    syntax = '<invitation id>'
780
    description = 'resend an invitation'
781

  
782
    def main(self, invitation_id):
783
        invitation = models.Invitations.objects.get(id=invitation_id)
784
        send_invitation(invitation)
785

  
786

  
787 739
def print_usage(exe, groups, group=None, shortcut=False):
788 740
    nop = Command(exe, [])
789 741
    nop.parser.print_help()

Also available in: Unified diff