diff -r 55e650bb9dbe -r 6fda3f3cc873 app/projrev/views/proposal.py --- 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