Ejemplo n.º 1
0
def project_members_action(request, chain_id, action=None, redirect_to=''):

    actions_map = {
        'remove': _project_remove_member,
        'accept': _project_accept_member,
        'reject': _project_reject_member
    }

    if not action in actions_map.keys():
        raise PermissionDenied

    member_ids = request.POST.getlist('members')
    project = get_object_or_404(Project, pk=chain_id)

    user = request.user
    if not user.owns_project(project) and not user.is_project_admin():
        return redirect(reverse('index'))

    logger.info(
        "Batch members action from %s (chain: %r, action: %s, "
        "members: %r)", user.log_display, chain_id, action, member_ids)

    action_func = actions_map.get(action)
    for member_id in member_ids:
        member_id = int(member_id)
        with ExceptionHandler(request):
            action_func(request, member_id)

    return redirect_back(request, 'project_list')
Ejemplo n.º 2
0
def project_members_action(request, chain_id, action=None, redirect_to=''):

    actions_map = {
        'remove': _project_remove_member,
        'accept': _project_accept_member,
        'reject': _project_reject_member
    }

    if not action in actions_map.keys():
        raise PermissionDenied

    member_ids = request.POST.getlist('members')
    project, application = get_by_chain_or_404(chain_id)

    user = request.user
    if not user.owns_project(project) and not user.is_project_admin():
        return redirect(reverse('index'))

    logger.info("Batch members action from %s (chain: %r, action: %s, "
                "members: %r)", user.log_display, chain_id, action, member_ids)

    action_func = actions_map.get(action)
    for member_id in member_ids:
        member_id = int(member_id)
        with ExceptionHandler(request):
            action_func(request, chain_id, member_id)

    return redirect_back(request, 'project_list')
Ejemplo n.º 3
0
def project_members_action(request,
                           project_uuid,
                           action=None,
                           redirect_to='',
                           memb_id=None):

    actions_map = {
        'remove': {
            'method': 'remove_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_REMOVED)
        },
        'accept': {
            'method': 'accept_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_ACCEPTED)
        },
        'reject': {
            'method': 'reject_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_REJECTED)
        }
    }

    if not action in actions_map.keys():
        raise PermissionDenied

    if memb_id:
        member_ids = [memb_id]
    else:
        member_ids = request.POST.getlist('members')

    project = get_object_or_404(Project, uuid=project_uuid)

    user = request.user
    if not user.owns_project(project) and not user.is_project_admin():
        messages.error(request, astakos_messages.NOT_ALLOWED)
        return redirect(reverse('index'))

    logger.info(
        "Member(s) action from %s (project: %r, action: %s, "
        "members: %r)", user.log_display, project.uuid, action, member_ids)

    action = actions_map.get(action)
    action_func = getattr(project_actions, action.get('method'))
    for member_id in member_ids:
        member_id = int(member_id)
        with ExceptionHandler(request):
            with transaction.atomic():
                try:
                    m = action_func(member_id, request.user)
                except ProjectError as e:
                    messages.error(request, e)
                else:
                    email = escape(m.person.email)
                    msg = action.get('msg') % email
                    messages.success(request, msg)

    return redirect_back(request, 'project_list')
Ejemplo n.º 4
0
def project_members_action(request, project_uuid, action=None, redirect_to='',
                           memb_id=None):

    actions_map = {
        'remove': {
            'method': 'remove_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_REMOVED)
        },
        'accept': {
            'method': 'accept_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_ACCEPTED)
        },
        'reject': {
            'method': 'reject_membership',
            'msg': _(astakos_messages.USER_MEMBERSHIP_REJECTED)
        }
    }

    if not action in actions_map.keys():
        raise PermissionDenied

    if memb_id:
        member_ids = [memb_id]
    else:
        member_ids = request.POST.getlist('members')

    project = get_object_or_404(Project, uuid=project_uuid)

    user = request.user
    if not user.owns_project(project) and not user.is_project_admin():
        messages.error(request, astakos_messages.NOT_ALLOWED)
        return redirect(reverse('index'))

    logger.info("Member(s) action from %s (project: %r, action: %s, "
                "members: %r)", user.log_display, project.uuid, action,
                member_ids)

    action = actions_map.get(action)
    action_func = getattr(project_actions, action.get('method'))
    for member_id in member_ids:
        member_id = int(member_id)
        with ExceptionHandler(request):
            with transaction.commit_on_success():
                try:
                    m = action_func(member_id, request.user)
                except ProjectError as e:
                    messages.error(request, e)
                else:
                    email = escape(m.person.email)
                    msg = action.get('msg') % email
                    messages.success(request, msg)

    return redirect_back(request, 'project_list')
Ejemplo n.º 5
0
def project_app_approve(request, application_id):

    if not request.user.is_project_admin():
        m = _(astakos_messages.NOT_ALLOWED)
        raise PermissionDenied(m)

    try:
        ProjectApplication.objects.get(id=application_id)
    except ProjectApplication.DoesNotExist:
        raise Http404

    with ExceptionHandler(request):
        _project_app_approve(request, application_id)

    chain_id = get_related_project_id(application_id)
    if not chain_id:
        return redirect_back(request, 'project_list')
    return redirect(reverse('project_detail', args=(chain_id, )))
Ejemplo n.º 6
0
def project_app_approve(request, application_id):

    if not request.user.is_project_admin():
        m = _(astakos_messages.NOT_ALLOWED)
        raise PermissionDenied(m)

    try:
        app = ProjectApplication.objects.get(id=application_id)
    except ProjectApplication.DoesNotExist:
        raise Http404

    with ExceptionHandler(request):
        _project_app_approve(request, application_id)

    chain_id = get_related_project_id(application_id)
    if not chain_id:
        return redirect_back(request, 'project_list')
    return redirect(reverse('project_detail', args=(chain_id,)))
Ejemplo n.º 7
0
def project_reject_member(request, memb_id):

    with ExceptionHandler(request):
        _project_reject_member(request, memb_id)

    return redirect_back(request, 'project_list')
Ejemplo n.º 8
0
def project_reject_member(request, chain_id, memb_id):

    with ExceptionHandler(request):
        _project_reject_member(request, chain_id, memb_id)

    return redirect_back(request, 'project_list')