Revision ff67242a snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
96 | 96 |
send_activation as send_activation_func, |
97 | 97 |
SendNotificationError, |
98 | 98 |
accept_membership, reject_membership, remove_membership, |
99 |
leave_project, join_project, enroll_member) |
|
99 |
leave_project, join_project, enroll_member, |
|
100 |
get_by_chain_or_404) |
|
100 | 101 |
from astakos.im.settings import ( |
101 | 102 |
COOKIE_DOMAIN, LOGOUT_NEXT, |
102 | 103 |
LOGGING_LEVEL, PAGINATE_BY, |
... | ... | |
1132 | 1133 |
@signed_terms_required |
1133 | 1134 |
@login_required |
1134 | 1135 |
@transaction.commit_on_success |
1135 |
def project_detail(request, application_id):
|
|
1136 |
def project_detail(request, chain_id):
|
|
1136 | 1137 |
addmembers_form = AddProjectMembersForm() |
1137 | 1138 |
if request.method == 'POST': |
1138 | 1139 |
addmembers_form = AddProjectMembersForm( |
1139 | 1140 |
request.POST, |
1140 |
application_id=int(application_id),
|
|
1141 |
chain_id=int(chain_id),
|
|
1141 | 1142 |
request_user=request.user) |
1142 | 1143 |
if addmembers_form.is_valid(): |
1143 | 1144 |
try: |
1144 | 1145 |
rollback = False |
1145 |
application_id = int(application_id)
|
|
1146 |
chain_id = int(chain_id)
|
|
1146 | 1147 |
map(lambda u: enroll_member( |
1147 |
application_id,
|
|
1148 |
chain_id,
|
|
1148 | 1149 |
u, |
1149 | 1150 |
request_user=request.user), |
1150 | 1151 |
addmembers_form.valid_users) |
... | ... | |
1162 | 1163 |
|
1163 | 1164 |
rollback = False |
1164 | 1165 |
|
1165 |
application = get_object_or_404(ProjectApplication, pk=application_id)
|
|
1166 |
try:
|
|
1167 |
members = application.project.projectmembership_set.select_related()
|
|
1168 |
except Project.DoesNotExist:
|
|
1166 |
project, application = get_by_chain_or_404(chain_id)
|
|
1167 |
if project:
|
|
1168 |
members = project.projectmembership_set.select_related() |
|
1169 |
else:
|
|
1169 | 1170 |
members = ProjectMembership.objects.none() |
1170 | 1171 |
|
1171 | 1172 |
members_table = tables.ProjectApplicationMembersTable(application, |
... | ... | |
1186 | 1187 |
return object_detail( |
1187 | 1188 |
request, |
1188 | 1189 |
queryset=ProjectApplication.objects.select_related(), |
1189 |
object_id=application_id,
|
|
1190 |
object_id=application.id,
|
|
1190 | 1191 |
template_name='im/projects/project_detail.html', |
1191 | 1192 |
extra_context={ |
1192 | 1193 |
'addmembers_form':addmembers_form, |
... | ... | |
1239 | 1240 |
@signed_terms_required |
1240 | 1241 |
@login_required |
1241 | 1242 |
@transaction.commit_manually |
1242 |
def project_join(request, application_id):
|
|
1243 |
def project_join(request, chain_id):
|
|
1243 | 1244 |
next = request.GET.get('next') |
1244 | 1245 |
if not next: |
1245 | 1246 |
next = reverse('astakos.im.views.project_detail', |
1246 |
args=(application_id,))
|
|
1247 |
args=(chain_id,))
|
|
1247 | 1248 |
|
1248 | 1249 |
rollback = False |
1249 | 1250 |
try: |
1250 |
application_id = int(application_id)
|
|
1251 |
join_project(application_id, request.user)
|
|
1251 |
chain_id = int(chain_id)
|
|
1252 |
join_project(chain_id, request.user)
|
|
1252 | 1253 |
# TODO: distinct messages for request/auto accept ??? |
1253 | 1254 |
messages.success(request, _(astakos_messages.USER_JOIN_REQUEST_SUBMITED)) |
1254 | 1255 |
except (IOError, PermissionDenied), e: |
... | ... | |
1269 | 1270 |
@signed_terms_required |
1270 | 1271 |
@login_required |
1271 | 1272 |
@transaction.commit_manually |
1272 |
def project_leave(request, application_id):
|
|
1273 |
def project_leave(request, chain_id):
|
|
1273 | 1274 |
next = request.GET.get('next') |
1274 | 1275 |
if not next: |
1275 | 1276 |
next = reverse('astakos.im.views.project_list') |
1276 | 1277 |
|
1277 | 1278 |
rollback = False |
1278 | 1279 |
try: |
1279 |
application_id = int(application_id)
|
|
1280 |
leave_project(application_id, request.user)
|
|
1280 |
chain_id = int(chain_id)
|
|
1281 |
leave_project(chain_id, request.user)
|
|
1281 | 1282 |
except (IOError, PermissionDenied), e: |
1282 | 1283 |
messages.error(request, e) |
1283 | 1284 |
except BaseException, e: |
... | ... | |
1297 | 1298 |
@signed_terms_required |
1298 | 1299 |
@login_required |
1299 | 1300 |
@transaction.commit_manually |
1300 |
def project_accept_member(request, application_id, user_id):
|
|
1301 |
def project_accept_member(request, chain_id, user_id):
|
|
1301 | 1302 |
rollback = False |
1302 | 1303 |
try: |
1303 |
application_id = int(application_id)
|
|
1304 |
chain_id = int(chain_id)
|
|
1304 | 1305 |
user_id = int(user_id) |
1305 |
m = accept_membership(application_id, user_id, request.user)
|
|
1306 |
m = accept_membership(chain_id, user_id, request.user)
|
|
1306 | 1307 |
except (IOError, PermissionDenied), e: |
1307 | 1308 |
messages.error(request, e) |
1308 | 1309 |
except BaseException, e: |
... | ... | |
1318 | 1319 |
transaction.rollback() |
1319 | 1320 |
else: |
1320 | 1321 |
transaction.commit() |
1321 |
return redirect(reverse('project_detail', args=(application_id,)))
|
|
1322 |
return redirect(reverse('project_detail', args=(chain_id,)))
|
|
1322 | 1323 |
|
1323 | 1324 |
@require_http_methods(["POST"]) |
1324 | 1325 |
@signed_terms_required |
1325 | 1326 |
@login_required |
1326 | 1327 |
@transaction.commit_manually |
1327 |
def project_remove_member(request, application_id, user_id):
|
|
1328 |
def project_remove_member(request, chain_id, user_id):
|
|
1328 | 1329 |
rollback = False |
1329 | 1330 |
try: |
1330 |
application_id = int(application_id)
|
|
1331 |
chain_id = int(chain_id)
|
|
1331 | 1332 |
user_id = int(user_id) |
1332 |
m = remove_membership(application_id, user_id, request.user)
|
|
1333 |
m = remove_membership(chain_id, user_id, request.user)
|
|
1333 | 1334 |
except (IOError, PermissionDenied), e: |
1334 | 1335 |
messages.error(request, e) |
1335 | 1336 |
except BaseException, e: |
... | ... | |
1345 | 1346 |
transaction.rollback() |
1346 | 1347 |
else: |
1347 | 1348 |
transaction.commit() |
1348 |
return redirect(reverse('project_detail', args=(application_id,)))
|
|
1349 |
return redirect(reverse('project_detail', args=(chain_id,)))
|
|
1349 | 1350 |
|
1350 | 1351 |
@require_http_methods(["POST"]) |
1351 | 1352 |
@signed_terms_required |
1352 | 1353 |
@login_required |
1353 | 1354 |
@transaction.commit_manually |
1354 |
def project_reject_member(request, application_id, user_id):
|
|
1355 |
def project_reject_member(request, chain_id, user_id):
|
|
1355 | 1356 |
rollback = False |
1356 | 1357 |
try: |
1357 |
application_id = int(application_id)
|
|
1358 |
chain_id = int(chain_id)
|
|
1358 | 1359 |
user_id = int(user_id) |
1359 |
m = reject_membership(application_id, user_id, request.user)
|
|
1360 |
m = reject_membership(chain_id, user_id, request.user)
|
|
1360 | 1361 |
except (IOError, PermissionDenied), e: |
1361 | 1362 |
messages.error(request, e) |
1362 | 1363 |
except BaseException, e: |
... | ... | |
1372 | 1373 |
transaction.rollback() |
1373 | 1374 |
else: |
1374 | 1375 |
transaction.commit() |
1375 |
return redirect(reverse('project_detail', args=(application_id,)))
|
|
1376 |
return redirect(reverse('project_detail', args=(chain_id,)))
|
|
1376 | 1377 |
|
1377 | 1378 |
def landing(request): |
1378 | 1379 |
return render_response( |
1379 | 1380 |
'im/landing.html', |
1380 |
context_instance=get_context(request)) |
|
1381 |
context_instance=get_context(request)) |
Also available in: Unified diff