Revision bfe23b13 snf-astakos-app/astakos/im/management/commands/project-update.py
b/snf-astakos-app/astakos/im/management/commands/project-update.py | ||
---|---|---|
35 | 35 |
|
36 | 36 |
from django.core.management.base import BaseCommand, CommandError |
37 | 37 |
from django.db import transaction |
38 |
from django.views.generic.create_update import lookup_object |
|
39 |
from django.http import Http404 |
|
38 | 40 |
|
39 |
from astakos.im.models import _lookup_object, ProjectApplication, Project |
|
41 |
from astakos.im.models import ( |
|
42 |
ProjectApplication, Project, PENDING |
|
43 |
) |
|
40 | 44 |
|
41 | 45 |
@transaction.commit_on_success |
42 | 46 |
class Command(BaseCommand): |
43 |
args = "<project application id>"
|
|
47 |
args = "<project id>" |
|
44 | 48 |
help = "Update project state" |
45 | 49 |
|
46 | 50 |
option_list = BaseCommand.option_list + ( |
47 |
make_option('--approve', |
|
48 |
action='store_true', |
|
49 |
dest='approve', |
|
50 |
default=False, |
|
51 |
help="Approve group"), |
|
52 | 51 |
make_option('--terminate', |
53 | 52 |
action='store_true', |
54 | 53 |
dest='terminate', |
... | ... | |
65 | 64 |
if len(args) < 1: |
66 | 65 |
raise CommandError("Please provide a group identifier") |
67 | 66 |
|
68 |
app = None |
|
69 |
p = None |
|
70 | 67 |
try: |
71 | 68 |
id = int(args[0]) |
72 | 69 |
except ValueError: |
73 | 70 |
raise CommandError('Invalid id') |
74 | 71 |
else: |
75 | 72 |
try: |
76 |
# Is it a project application id? |
|
77 |
app = _lookup_object(ProjectApplication, id=id) |
|
78 |
except ProjectApplication.DoesNotExist: |
|
79 |
try: |
|
80 |
# Is it a project id? |
|
81 |
p = _lookup_object(Project, id=id) |
|
82 |
except Project.DoesNotExist: |
|
83 |
raise CommandError('Invalid id') |
|
84 |
try: |
|
85 |
if options['approve']: |
|
86 |
if not app: |
|
87 |
raise CommandError('Project application id is required.') |
|
88 |
app.approve() |
|
89 |
|
|
90 |
if app and app.status != 'Pending': |
|
91 |
p = app.project |
|
92 |
|
|
73 |
# Is it a project id? |
|
74 |
p = lookup_object(Project, id, None, None) |
|
75 |
except Http404: |
|
76 |
raise CommandError('Invalid id') |
|
77 |
else: |
|
93 | 78 |
if options['terminate']: |
94 | 79 |
p.terminate() |
95 |
if options['suspend']: |
|
80 |
elif options['suspend']:
|
|
96 | 81 |
p.suspend() |
97 | 82 |
except BaseException, e: |
98 |
import traceback |
|
99 |
traceback.print_exc() |
|
100 | 83 |
raise CommandError(e) |
Also available in: Unified diff