def gradeResult(request): render = {} grade = get_object_or_404(Grade, id = request.POST.get('grade')) resultdate = get_object_or_404(ResultDate, id = request.POST.get('resultdate')) render['grade'] = grade.id render['resultdate'] = resultdate.id if grade in request.user.grades.all(): if not request.POST.get('send'): pupils = Pupil.objects.filter(grade = grade) results = [] from math import pow for pupil in pupils: try: result = Result.objects.get(resultdate = resultdate, pupil = pupil, subject = request.user.current_subject) form = ResultForm(prefix = pupil.id, instance = result) except ObjectDoesNotExist: form = ResultForm(prefix = pupil.id) sum = 0 marks = Mark.objects.filter(lesson__date__range = (resultdate.startdate, resultdate.enddate), pupil = pupil, lesson__subject = request.user.current_subject) for mark in marks: if mark.mark: sum += mark.mark if marks.__len__()<>0 and sum<>0: sa = round(float(sum)/float(marks.__len__()), 3) else: sa = 0 results.append({'name': pupil.fi(), 'form': form, 'sa': sa}) render['pupils'] = results return render_to_response('marks/teacher/gradeResult.html', render, context_instance = RequestContext(request)) else: error = 0 for pupil in Pupil.objects.filter(grade = grade): if request.POST.get('%d-mark' % pupil.id): form = ResultForm(request.POST, prefix = pupil.id) if form.is_valid(): try: result = Result.objects.get(pupil = Pupil.objects.get(id = pupil.id), resultdate = resultdate, subject = request.user.current_subject) except ObjectDoesNotExist: result = Result() result.pupil = pupil result.resultdate = resultdate result.mark = form.cleaned_data['mark'] result.subject = request.user.current_subject result.save() else: error = 1 if error == 0: return HttpResponseRedirect('/marks/result/') else: results = [] pupils = Pupil.objects.filter(grade = grade) for pupil in pupils: results.append({'name': pupil.fi(), 'form': ResultForm(request.POST, prefix = pupil.id)}) render['pupils'] = results return render_to_response('marks/teacher/gradeResult.html', render, context_instance = RequestContext(request)) else: return Http404