Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / project-application-approve.py @ 7eabbd72

History | View | Annotate | Download (2.4 kB)

1 bfe23b13 Sofia Papagiannaki
# Copyright 2012 GRNET S.A. All rights reserved.
2 bfe23b13 Sofia Papagiannaki
#
3 bfe23b13 Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
4 bfe23b13 Sofia Papagiannaki
# without modification, are permitted provided that the following
5 bfe23b13 Sofia Papagiannaki
# conditions are met:
6 bfe23b13 Sofia Papagiannaki
#
7 bfe23b13 Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
8 bfe23b13 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
9 bfe23b13 Sofia Papagiannaki
#      disclaimer.
10 bfe23b13 Sofia Papagiannaki
#
11 bfe23b13 Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
12 bfe23b13 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
13 bfe23b13 Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
14 bfe23b13 Sofia Papagiannaki
#      provided with the distribution.
15 bfe23b13 Sofia Papagiannaki
#
16 bfe23b13 Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 bfe23b13 Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 bfe23b13 Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 bfe23b13 Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 bfe23b13 Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 bfe23b13 Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 bfe23b13 Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 bfe23b13 Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 bfe23b13 Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 bfe23b13 Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 bfe23b13 Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 bfe23b13 Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
28 bfe23b13 Sofia Papagiannaki
#
29 bfe23b13 Sofia Papagiannaki
# The views and conclusions contained in the software and
30 bfe23b13 Sofia Papagiannaki
# documentation are those of the authors and should not be
31 bfe23b13 Sofia Papagiannaki
# interpreted as representing official policies, either expressed
32 bfe23b13 Sofia Papagiannaki
# or implied, of GRNET S.A.
33 bfe23b13 Sofia Papagiannaki
34 bfe23b13 Sofia Papagiannaki
from optparse import make_option
35 bfe23b13 Sofia Papagiannaki
36 bfe23b13 Sofia Papagiannaki
from django.core.management.base import BaseCommand, CommandError
37 bfe23b13 Sofia Papagiannaki
38 bfe23b13 Sofia Papagiannaki
from astakos.im.models import ProjectApplication
39 5cfd4acb Sofia Papagiannaki
from astakos.im.functions import approve_application
40 8cf9b2dd Giorgos Korfiatis
from astakos.im.project_xctx import project_transaction_context
41 8cf9b2dd Giorgos Korfiatis
42 bfe23b13 Sofia Papagiannaki
class Command(BaseCommand):
43 bfe23b13 Sofia Papagiannaki
    args = "<project application id>"
44 8cf9b2dd Giorgos Korfiatis
    help = "Approve project application"
45 bfe23b13 Sofia Papagiannaki
46 bfe23b13 Sofia Papagiannaki
    def handle(self, *args, **options):
47 bfe23b13 Sofia Papagiannaki
        if len(args) < 1:
48 8cf9b2dd Giorgos Korfiatis
            raise CommandError("Please provide an application id")
49 8cf9b2dd Giorgos Korfiatis
50 bfe23b13 Sofia Papagiannaki
        try:
51 bfe23b13 Sofia Papagiannaki
            id = int(args[0])
52 bfe23b13 Sofia Papagiannaki
        except ValueError:
53 bfe23b13 Sofia Papagiannaki
            raise CommandError('Invalid id')
54 bfe23b13 Sofia Papagiannaki
        else:
55 6cee26a0 Giorgos Korfiatis
            approve(id)
56 8cf9b2dd Giorgos Korfiatis
57 8cf9b2dd Giorgos Korfiatis
@project_transaction_context(sync=True)
58 8cf9b2dd Giorgos Korfiatis
def approve(app, ctx=None):
59 8cf9b2dd Giorgos Korfiatis
    try:
60 8cf9b2dd Giorgos Korfiatis
        approve_application(app)
61 8cf9b2dd Giorgos Korfiatis
    except BaseException as e:
62 8cf9b2dd Giorgos Korfiatis
        if ctx:
63 8cf9b2dd Giorgos Korfiatis
            ctx.mark_rollback()
64 8cf9b2dd Giorgos Korfiatis
            raise CommandError(e)