Revision c363a678
b/snf-astakos-app/astakos/im/views/projects.py | ||
---|---|---|
676 | 676 |
return common_detail(request, chain_id, |
677 | 677 |
members_status_filter=members_status_filter, |
678 | 678 |
template_name=template_name) |
679 |
|
|
680 |
|
|
681 |
@require_http_methods(["POST"]) |
|
682 |
@valid_astakos_user_required |
|
683 |
def project_members_action(request, chain_id, action=None, redirect_to=''): |
|
684 |
|
|
685 |
actions_map = { |
|
686 |
'remove': _project_remove_member, |
|
687 |
'accept': _project_accept_member, |
|
688 |
'reject': _project_reject_member |
|
689 |
} |
|
690 |
|
|
691 |
if not action in actions_map.keys(): |
|
692 |
raise PermissionDenied |
|
693 |
|
|
694 |
member_ids = request.POST.getlist('members') |
|
695 |
project, application = get_by_chain_or_404(chain_id) |
|
696 |
|
|
697 |
user = request.user |
|
698 |
if not user.owns_project(project) and not user.is_project_admin(): |
|
699 |
return redirect(reverse('index')) |
|
700 |
|
|
701 |
logger.info("Batch members action from %s (action: %s, members: %r)", |
|
702 |
user.log_display, action, member_ids) |
|
703 |
|
|
704 |
action_func = actions_map.get(action) |
|
705 |
for member_id in member_ids: |
|
706 |
member_id = int(member_id) |
|
707 |
with ExceptionHandler(request): |
|
708 |
action_func(request, chain_id, member_id) |
|
709 |
|
|
710 |
return redirect(reverse('project_members', args=(chain_id,))) |
Also available in: Unified diff