Revision 8fb8d0cf snf-astakos-app/astakos/im/views/projects.py
b/snf-astakos-app/astakos/im/views/projects.py | ||
---|---|---|
121 | 121 |
post_save_redirect=reverse('project_list'), |
122 | 122 |
form_class=ProjectApplicationForm, |
123 | 123 |
msg=_("The %(verbose_name)s has been received and " |
124 |
"is under consideration."), |
|
125 |
) |
|
124 |
"is under consideration.")) |
|
126 | 125 |
|
127 | 126 |
if response is not None: |
128 | 127 |
return response |
... | ... | |
136 | 135 |
@cookie_fix |
137 | 136 |
@valid_astakos_user_required |
138 | 137 |
def project_list(request): |
139 |
projects = ProjectApplication.objects.user_accessible_projects(request.user).select_related() |
|
138 |
projects = ProjectApplication.objects.user_accessible_projects( |
|
139 |
request.user).select_related() |
|
140 | 140 |
table = tables.UserProjectApplicationsTable(projects, user=request.user, |
141 | 141 |
prefix="my_projects_") |
142 |
RequestConfig(request, paginate={"per_page": settings.PAGINATE_BY}).configure(table) |
|
142 |
RequestConfig(request, |
|
143 |
paginate={"per_page": settings.PAGINATE_BY}).configure(table) |
|
143 | 144 |
|
144 | 145 |
return object_list( |
145 | 146 |
request, |
146 | 147 |
projects, |
147 | 148 |
template_name='im/projects/project_list.html', |
148 | 149 |
extra_context={ |
149 |
'is_search':False, |
|
150 |
'is_search': False,
|
|
150 | 151 |
'table': table, |
151 | 152 |
}) |
152 | 153 |
|
... | ... | |
170 | 171 |
next = restrict_next(next, domain=settings.COOKIE_DOMAIN) |
171 | 172 |
return redirect(next) |
172 | 173 |
|
174 |
|
|
173 | 175 |
@commit_on_success_strict() |
174 | 176 |
def _project_app_cancel(request, application_id): |
175 | 177 |
chain_id = None |
... | ... | |
249 | 251 |
next = restrict_next(next, domain=settings.COOKIE_DOMAIN) |
250 | 252 |
return redirect(next) |
251 | 253 |
|
254 |
|
|
252 | 255 |
@require_http_methods(["GET", "POST"]) |
253 | 256 |
@cookie_fix |
254 | 257 |
@valid_astakos_user_required |
255 | 258 |
def project_app(request, application_id): |
256 | 259 |
return common_detail(request, application_id, project_view=False) |
257 | 260 |
|
261 |
|
|
258 | 262 |
@require_http_methods(["GET", "POST"]) |
259 | 263 |
@cookie_fix |
260 | 264 |
@valid_astakos_user_required |
261 | 265 |
def project_detail(request, chain_id): |
262 | 266 |
return common_detail(request, chain_id) |
263 | 267 |
|
268 |
|
|
264 | 269 |
@commit_on_success_strict() |
265 | 270 |
def addmembers(request, chain_id, addmembers_form): |
266 | 271 |
if addmembers_form.is_valid(): |
267 | 272 |
try: |
268 | 273 |
chain_id = int(chain_id) |
269 |
map(lambda u: enroll_member( |
|
270 |
chain_id, |
|
271 |
u, |
|
272 |
request_user=request.user), |
|
274 |
map(lambda u: enroll_member(chain_id, |
|
275 |
u, |
|
276 |
request_user=request.user), |
|
273 | 277 |
addmembers_form.valid_users) |
274 | 278 |
except (IOError, PermissionDenied), e: |
275 | 279 |
messages.error(request, e) |
... | ... | |
304 | 308 |
if project: |
305 | 309 |
members = project.projectmembership_set.select_related() |
306 | 310 |
approved_members_count = \ |
307 |
project.count_actually_accepted_memberships()
|
|
311 |
project.count_actually_accepted_memberships() |
|
308 | 312 |
pending_members_count = project.count_pending_memberships() |
309 | 313 |
if members_status_filter in (ProjectMembership.REQUESTED, |
310 |
ProjectMembership.ACCEPTED): |
|
314 |
ProjectMembership.ACCEPTED):
|
|
311 | 315 |
members = members.filter(state=members_status_filter) |
312 | 316 |
members_table = tables.ProjectMembersTable(project, |
313 | 317 |
members, |
... | ... | |
335 | 339 |
m = _(astakos_messages.NOT_ALLOWED) |
336 | 340 |
raise PermissionDenied(m) |
337 | 341 |
|
338 |
if (not (is_owner or is_project_admin) and project_view and |
|
339 |
not user.non_owner_can_view(project)): |
|
342 |
if ( |
|
343 |
not (is_owner or is_project_admin) and project_view and |
|
344 |
not user.non_owner_can_view(project) |
|
345 |
): |
|
340 | 346 |
m = _(astakos_messages.NOT_ALLOWED) |
341 | 347 |
raise PermissionDenied(m) |
342 | 348 |
|
... | ... | |
370 | 376 |
'mem_display': mem_display, |
371 | 377 |
'can_join_request': can_join_req, |
372 | 378 |
'can_leave_request': can_leave_req, |
373 |
'members_status_filter':members_status_filter, |
|
374 |
}) |
|
379 |
'members_status_filter': members_status_filter, |
|
380 |
}) |
|
381 |
|
|
375 | 382 |
|
376 | 383 |
@require_http_methods(["GET", "POST"]) |
377 | 384 |
@cookie_fix |
... | ... | |
394 | 401 |
accepted_projects = request.user.projectmembership_set.filter( |
395 | 402 |
~Q(acceptance_date__isnull=True)).values_list('project', flat=True) |
396 | 403 |
projects = ProjectApplication.objects.search_by_name(q) |
397 |
projects = projects.filter(~Q(project__last_approval_date__isnull=True)) |
|
404 |
projects = projects.filter( |
|
405 |
~Q(project__last_approval_date__isnull=True)) |
|
398 | 406 |
projects = projects.exclude(project__in=accepted_projects) |
399 | 407 |
|
400 | 408 |
table = tables.UserProjectApplicationsTable(projects, user=request.user, |
... | ... | |
404 | 412 |
else: |
405 | 413 |
table.caption = _('ALL PROJECTS') |
406 | 414 |
|
407 |
RequestConfig(request, paginate={"per_page": settings.PAGINATE_BY}).configure(table) |
|
415 |
RequestConfig(request, |
|
416 |
paginate={"per_page": settings.PAGINATE_BY}).configure(table) |
|
408 | 417 |
|
409 | 418 |
return object_list( |
410 | 419 |
request, |
411 | 420 |
projects, |
412 | 421 |
template_name='im/projects/project_list.html', |
413 | 422 |
extra_context={ |
414 |
'form': form, |
|
415 |
'is_search': True, |
|
416 |
'q': q, |
|
417 |
'table': table |
|
423 |
'form': form,
|
|
424 |
'is_search': True,
|
|
425 |
'q': q,
|
|
426 |
'table': table
|
|
418 | 427 |
}) |
419 | 428 |
|
429 |
|
|
420 | 430 |
@require_http_methods(["POST"]) |
421 | 431 |
@cookie_fix |
422 | 432 |
@valid_astakos_user_required |
... | ... | |
429 | 439 |
with ExceptionHandler(request): |
430 | 440 |
_project_join(request, chain_id) |
431 | 441 |
|
432 |
|
|
433 | 442 |
next = restrict_next(next, domain=settings.COOKIE_DOMAIN) |
434 | 443 |
return redirect(next) |
435 | 444 |
|
... | ... | |
503 | 512 |
messages.error(request, e) |
504 | 513 |
|
505 | 514 |
|
506 |
|
|
507 | 515 |
@require_http_methods(["POST"]) |
508 | 516 |
@cookie_fix |
509 | 517 |
@valid_astakos_user_required |
Also available in: Unified diff