33 |
33 |
|
34 |
34 |
from datetime import datetime, timedelta
|
35 |
35 |
|
36 |
|
from astakos.im.models import AstakosUser, PendingMembershipError
|
|
36 |
from astakos.im.models import AstakosUser
|
37 |
37 |
from astakos.im.functions import (join_project, leave_project,
|
38 |
38 |
submit_application, approve_application)
|
39 |
|
from astakos.im.project_xctx import cmd_project_transaction_context
|
40 |
|
from astakos.im.retry_xctx import RetryException
|
|
39 |
from synnefo.lib.db.transaction import commit_on_success_strict
|
41 |
40 |
|
42 |
|
@cmd_project_transaction_context(sync=True)
|
|
41 |
@commit_on_success_strict()
|
43 |
42 |
def join(proj_id, user_id, ctx=None):
|
44 |
43 |
join_project(proj_id, user_id)
|
45 |
44 |
|
46 |
|
@cmd_project_transaction_context(sync=True)
|
|
45 |
@commit_on_success_strict()
|
47 |
46 |
def leave(proj_id, user_id, ctx=None):
|
48 |
|
try:
|
49 |
|
leave_project(proj_id, user_id)
|
50 |
|
except PendingMembershipError as e:
|
51 |
|
print e
|
52 |
|
raise RetryException()
|
|
47 |
leave_project(proj_id, user_id)
|
53 |
48 |
|
54 |
|
@cmd_project_transaction_context()
|
|
49 |
@commit_on_success_strict()
|
55 |
50 |
def submit(name, user_id, prec, ctx=None):
|
56 |
51 |
try:
|
57 |
52 |
owner = AstakosUser.objects.get(id=user_id)
|
... | ... | |
73 |
68 |
app = submit_application(data, request_user=owner)
|
74 |
69 |
return app.id
|
75 |
70 |
|
76 |
|
@cmd_project_transaction_context(sync=True)
|
|
71 |
@commit_on_success_strict()
|
77 |
72 |
def approve(app_id, ctx=None):
|
78 |
73 |
approve_application(app_id)
|