Revision 8cf9b2dd snf-astakos-app/astakos/im/management/commands/project-approve.py

b/snf-astakos-app/astakos/im/management/commands/project-approve.py
34 34
from optparse import make_option
35 35

  
36 36
from django.core.management.base import BaseCommand, CommandError
37
from django.db import transaction
38 37

  
39 38
from astakos.im.models import ProjectApplication
40 39
from astakos.im.functions import approve_application
41
 
40
from astakos.im.project_xctx import project_transaction_context
41

  
42 42
class Command(BaseCommand):
43 43
    args = "<project application id>"
44
    help = "Update project state"
44
    help = "Approve project application"
45 45

  
46
    @transaction.commit_manually
47 46
    def handle(self, *args, **options):
48 47
        if len(args) < 1:
49
            raise CommandError("Please provide a group identifier")
50
        
48
            raise CommandError("Please provide an application id")
49

  
51 50
        try:
52 51
            id = int(args[0])
53 52
        except ValueError:
......
58 57
                app = ProjectApplication.objects.get(id=id)
59 58
            except ProjectApplication.DoesNotExist:
60 59
                raise CommandError('Invalid id')
61
            try:
62
                approve_application(app)
63
            except BaseException, e:
64
                transaction.rollback()
65
                raise CommandError(e)
66
            else:
67
                transaction.commit()
60

  
61
            approve(app)
62

  
63
@project_transaction_context(sync=True)
64
def approve(app, ctx=None):
65
    try:
66
        approve_application(app)
67
    except BaseException as e:
68
        if ctx:
69
            ctx.mark_rollback()
70
            raise CommandError(e)

Also available in: Unified diff