app/projrev/views/proposal.py
changeset 44 6fda3f3cc873
parent 43 55e650bb9dbe
child 45 9ffe957d6159
equal deleted inserted replaced
43:55e650bb9dbe 44:6fda3f3cc873
   219 
   219 
   220   return render_to_response(template, RequestContext(request, context))
   220   return render_to_response(template, RequestContext(request, context))
   221 
   221 
   222 @access.register('reviewer')
   222 @access.register('reviewer')
   223 @access.checkAccess
   223 @access.checkAccess
   224 def review(request, micr_code=None):
   224 def review(request, micr_code=None, review_id=None):
   225   """View for reviewing the proposal.
   225   """View for reviewing the proposal.
   226   """
   226   """
   227 
   227 
   228   if request.method == 'POST':
   228   if request.method == 'POST':
   229     return reviewPost(request, micr_code)
   229     return reviewPost(request, micr_code, review_id)
   230   else:
   230   else:
   231     return reviewGet(request, micr_code)
   231     return reviewGet(request, micr_code, review_id)
   232 
   232 
   233 def reviewPost(request, micr_code=None):
   233 def reviewPost(request, micr_code=None, review_id=None):
   234   """
   234   """
   235   """
   235   """
   236 
   236 
   237   rev_form = projrev_forms.ReviewForm(request.POST)
   237   if review_id:
       
   238     review_instance = Review.objects.get(id=review_id)
       
   239     rev_form = projrev_forms.ReviewForm(request.POST, instance=review_instance)
       
   240   else:
       
   241     rev_form = projrev_forms.ReviewForm(request.POST)
   238 
   242 
   239   if rev_form.is_valid():
   243   if rev_form.is_valid():
   240     cleaned_data = rev_form.cleaned_data
   244     cleaned_data = rev_form.cleaned_data
   241 
   245 
   242     project = Project.objects.get(micr_code=micr_code)
   246     project = Project.objects.get(micr_code=micr_code)
   250     # if it already exists from the form.
   254     # if it already exists from the form.
   251     review = rev_form.save()
   255     review = rev_form.save()
   252     return HttpResponseRedirect(
   256     return HttpResponseRedirect(
   253         reverse('app.projrev.views.proposal.rank', args=(micr_code,)))
   257         reverse('app.projrev.views.proposal.rank', args=(micr_code,)))
   254 
   258 
   255   return reviewGet(request, micr_code, rev_form)
   259   return reviewGet(request, micr_code, review_id, rev_form)
   256 
   260 
   257 def reviewGet(request, micr_code=None, rev_form=None):
   261 def reviewGet(request, micr_code=None, review_id=None, rev_form=None):
   258   """
   262   """
   259   """
   263   """
   260 
   264 
   261   context = {}
   265   context = {}
   262 
   266 
   263   if not micr_code:
   267   if not micr_code:
   264     template = 'projrev/proposal/list.html'
   268     template = 'projrev/proposal/list.html'
   265     context['projects'] = Project.objects.all().exclude(
   269     context['projects'] = []
       
   270     projects = Project.objects.all().exclude(
   266         status__exact='invalid').order_by('-last_updated_on')
   271         status__exact='invalid').order_by('-last_updated_on')
       
   272 
       
   273     for project in projects:
       
   274       user_reviews = project.review_set.all().filter(
       
   275           reviewer__id__exact=request.user.id).order_by('-reviewed_on')
       
   276 
       
   277       proposals = project.proposal_set.all().order_by('-submitted_on')
       
   278 
       
   279       if user_reviews and proposals:
       
   280         info = {
       
   281             'project': project,
       
   282             }
       
   283         proposal = proposals[0]
       
   284         new_user_reviews = user_reviews.filter(proposal__id__exact=proposal.id)
       
   285         if new_user_reviews:
       
   286           info['user_review'] = new_user_reviews[0]
       
   287         else:
       
   288           info['not_this_proposal'] = True
       
   289           info['user_review'] = user_reviews[0]
       
   290 
       
   291         context['projects'].append(info)
       
   292       elif proposals:
       
   293         info = {
       
   294             'project': project,
       
   295             }
       
   296         proposal = proposals[0]
       
   297         context['projects'].append(info)
       
   298 
   267     context['row_url'] = '/proposal/review/'
   299     context['row_url'] = '/proposal/review/'
   268 
   300 
   269     return render_to_response(template, RequestContext(request, context))
   301     return render_to_response(template, RequestContext(request, context))
   270 
   302 
   271   if not rev_form:
       
   272     rev_form = projrev_forms.ReviewForm()
       
   273   else:
       
   274     context['prev_data'] = rev_form.data 
       
   275     import logging
       
   276     logging.error(rev_form.data)
       
   277 
       
   278   project = Project.objects.get(micr_code=micr_code)
   303   project = Project.objects.get(micr_code=micr_code)
   279   context['form'] = rev_form
       
   280   context['project'] = project
       
   281 
   304 
   282   proposals = project.proposal_set.all().order_by('-submitted_on')
   305   proposals = project.proposal_set.all().order_by('-submitted_on')
       
   306 
   283   if proposals:
   307   if proposals:
   284     proposal = proposals[0]
   308     proposal = proposals[0]
       
   309 
       
   310     user_review = Review.objects.all().filter(
       
   311         id__exact=review_id).order_by('-reviewed_on')
       
   312 
       
   313     if user_review:
       
   314       user_review = user_review[0]
   285 
   315 
   286     if proposal:
   316     if proposal:
   287       proposal_path = str(proposal.document)
   317       proposal_path = str(proposal.document)
   288 
   318 
   289       proposal_name = proposal_path.split('/')[-1]
   319       proposal_name = proposal_path.split('/')[-1]
   290 
   320 
   291       context['proposal_path'] = proposal_path
   321       context['proposal_path'] = proposal_path
   292       context['proposal_name'] = proposal_name
   322       context['proposal_name'] = proposal_name
   293       context['last_submitted'] = proposal.submitted_on
   323       context['last_submitted'] = proposal.submitted_on
       
   324 
       
   325   if not rev_form:
       
   326     if user_review:
       
   327       rev_form = projrev_forms.ReviewForm(instance=user_review)
       
   328       context['prev_data'] = rev_form.initial
       
   329     else:
       
   330       rev_form = projrev_forms.ReviewForm()
       
   331   else:
       
   332     context['prev_data'] = rev_form.data
       
   333 
       
   334   context['form'] = rev_form
       
   335   context['project'] = project
   294 
   336 
   295   reviews = project.review_set.all().order_by('reviewed_on')
   337   reviews = project.review_set.all().order_by('reviewed_on')
   296   if reviews:
   338   if reviews:
   297     context['reviews'] = reviews
   339     context['reviews'] = reviews
   298     context['last_reviewed'] = reviews[len(reviews)-1].reviewed_on
   340     context['last_reviewed'] = reviews[len(reviews)-1].reviewed_on