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))
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
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')
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))
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))