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 |