Esempio n. 1
0
def proposal_list(request, user_id = None, project_id = None, Proposal = None, review = None, closure = None):
    if user_id is None or Proposal is None or review is None or closure is None:
        raise Http404
    if not verify_user(request, user_id):
        raise Http404
    objects = None
    if closure:
        if review:
            objects = Proposal.objects.all()
        else:
            if project_id is None:
                raise Http404
            else:
                objects = Proposal.objects.filter(project = int(project_id))
    else:
        if review:
            objects = Proposal.objects.all()
        else:
            objects = Proposal.objects.filter(proposer = request.user)
    if objects is None:
        raise Http404
    context = {
        'queryset' : objects,
        'object_name' : '%ss list' % Proposal.__name__,
        'base_template' : 'backend.html',
    }
    return render_to_response('projects/object_list.html', context, context_instance = RequestContext(request))
Esempio n. 2
0
def moderate_proposal(request, user_id = None, project_id = None, proposal_id = None, accept = None, Proposal = None):
    if user_id is None or proposal_id is None or accept is None or Proposal is None:
        raise Http404
    if not verify_user(request, user_id):
        raise Http404
    if project_id is not None:
        if not verify_closure_proposal(project_id, proposal_id):
            raise Http404
    user = request.user
    if not user.get_profile().is_managerial():
        raise Http404
    try:
        proposal = Proposal.objects.get(pk = int(proposal_id))
    except Proposal.DoesNotExist:
        raise Http404
    if request.method == 'POST':
        next = request.POST['next']
        if accept:
            status_accepted = Status.objects.get(text = 'accepted')     # this must exist
            proposal.status = status_accepted
            # Project needs to be created
        else:
            status_rejected = Status.objects.get(text = 'rejected')
            proposal.status = status_rejected
        proposal.save()
        return HttpResponseRedirect(next)
    raise Http404
Esempio n. 3
0
def related_projects(request, user_id = None):
    '''
    Displays the list of projects that a user is related to - i.e. the user is
    a volunteer or a representative of that project.
    '''

    # Check if the user is in fact who he/she claims to be
    if not verify_user(request, user_id):
        raise Http404
    
    # Filter out the related projects by using the relation model UserProject
    user = request.user
    projects = Project.objects.filter(userprojects__user__pk = user.id)
    
    # Call object_list to render the list of projects
    return object_list(request, queryset = projects, base_template = 'backend.html', object_name = 'Your projects')
Esempio n. 4
0
def proposal_details(request, user_id = None, project_id = None, proposal_id = None, Proposal = None, closure = None):
    if user_id is None or proposal_id is None or Proposal is None or closure is None:
        raise Http404
    if not verify_user(request, user_id):
        raise Http404
    if project_id is not None:
        if not verify_closure_proposal(project_id, proposal_id):
            raise Http404
    try:
        proposal = Proposal.objects.get(pk = int(proposal_id))
    except Proposal.DoesNotExist:
        raise Http404
    context = {
        'proposal' : proposal,
    }
    if closure:
        return render_to_response('proposals/closure_proposal_details.html', context, context_instance = RequestContext(request))
    return render_to_response('proposals/project_proposal_details.html', context, context_instance = RequestContext(request))
Esempio n. 5
0
def edit_proposal(request, user_id = None, project_id = None, proposal_id = None, new = None, Proposal = None, ProposalForm = None):
    if user_id is None or new is None or Proposal is None or ProposalForm is None or closure is None:
        raise Http404
    if not verify_user(request, user_id):
        raise Http404
    closure = False
    if project_id is not None:
        closure = True
        if not verify_closure_proposal(project_id, proposal_id):
            raise Http404
    user = request.user
    proposal = None
    try:
        proposal = Proposal(proposer = user)
    except FieldError:
        pass
    form = ProposalForm(instance = proposal)
    proposal = None
    if not new:
        if proposal_id is None:
            raise Http404
        try:
            proposal = Proposal.objects.get(pk = int(proposal_id))
        except Proposal.DoesNotExist:
            raise Http404
        if not proposal.has_edit_permission(user):
            raise Http404 # Permission denied
        form = ProposalForm(instance = proposal)
    if request.method == 'POST':
        form = ProposalForm(request.POST, instance = proposal)
        if form.is_valid():
            form.save()
            next = request.POST['next']
            return HttpResponseRedirect(next)
    context = {
        'form' : form,
        'closure' : closure,
        'project_id' : int(project_id),
    }
    return render_to_response('proposals/edit_proposal.html', context, context_instance = RequestContext(request))