--- a/app/projrev/views/proposal.py Wed Aug 12 22:41:21 2009 +0530
+++ b/app/projrev/views/proposal.py Thu Aug 13 03:20:01 2009 +0530
@@ -221,20 +221,24 @@
@access.register('reviewer')
@access.checkAccess
-def review(request, micr_code=None):
+def review(request, micr_code=None, review_id=None):
"""View for reviewing the proposal.
"""
if request.method == 'POST':
- return reviewPost(request, micr_code)
+ return reviewPost(request, micr_code, review_id)
else:
- return reviewGet(request, micr_code)
+ return reviewGet(request, micr_code, review_id)
-def reviewPost(request, micr_code=None):
+def reviewPost(request, micr_code=None, review_id=None):
"""
"""
- rev_form = projrev_forms.ReviewForm(request.POST)
+ if review_id:
+ review_instance = Review.objects.get(id=review_id)
+ rev_form = projrev_forms.ReviewForm(request.POST, instance=review_instance)
+ else:
+ rev_form = projrev_forms.ReviewForm(request.POST)
if rev_form.is_valid():
cleaned_data = rev_form.cleaned_data
@@ -252,9 +256,9 @@
return HttpResponseRedirect(
reverse('app.projrev.views.proposal.rank', args=(micr_code,)))
- return reviewGet(request, micr_code, rev_form)
+ return reviewGet(request, micr_code, review_id, rev_form)
-def reviewGet(request, micr_code=None, rev_form=None):
+def reviewGet(request, micr_code=None, review_id=None, rev_form=None):
"""
"""
@@ -262,27 +266,53 @@
if not micr_code:
template = 'projrev/proposal/list.html'
- context['projects'] = Project.objects.all().exclude(
+ context['projects'] = []
+ projects = Project.objects.all().exclude(
status__exact='invalid').order_by('-last_updated_on')
+
+ for project in projects:
+ user_reviews = project.review_set.all().filter(
+ reviewer__id__exact=request.user.id).order_by('-reviewed_on')
+
+ proposals = project.proposal_set.all().order_by('-submitted_on')
+
+ if user_reviews and proposals:
+ info = {
+ 'project': project,
+ }
+ proposal = proposals[0]
+ new_user_reviews = user_reviews.filter(proposal__id__exact=proposal.id)
+ if new_user_reviews:
+ info['user_review'] = new_user_reviews[0]
+ else:
+ info['not_this_proposal'] = True
+ info['user_review'] = user_reviews[0]
+
+ context['projects'].append(info)
+ elif proposals:
+ info = {
+ 'project': project,
+ }
+ proposal = proposals[0]
+ context['projects'].append(info)
+
context['row_url'] = '/proposal/review/'
return render_to_response(template, RequestContext(request, context))
- if not rev_form:
- rev_form = projrev_forms.ReviewForm()
- else:
- context['prev_data'] = rev_form.data
- import logging
- logging.error(rev_form.data)
-
project = Project.objects.get(micr_code=micr_code)
- context['form'] = rev_form
- context['project'] = project
proposals = project.proposal_set.all().order_by('-submitted_on')
+
if proposals:
proposal = proposals[0]
+ user_review = Review.objects.all().filter(
+ id__exact=review_id).order_by('-reviewed_on')
+
+ if user_review:
+ user_review = user_review[0]
+
if proposal:
proposal_path = str(proposal.document)
@@ -292,6 +322,18 @@
context['proposal_name'] = proposal_name
context['last_submitted'] = proposal.submitted_on
+ if not rev_form:
+ if user_review:
+ rev_form = projrev_forms.ReviewForm(instance=user_review)
+ context['prev_data'] = rev_form.initial
+ else:
+ rev_form = projrev_forms.ReviewForm()
+ else:
+ context['prev_data'] = rev_form.data
+
+ context['form'] = rev_form
+ context['project'] = project
+
reviews = project.review_set.all().order_by('reviewed_on')
if reviews:
context['reviews'] = reviews