Revision c363a678 snf-astakos-app/astakos/im/views/projects.py

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