def set_mark(request): from templatetags.marks_chart import get_mark pupil = get_object_or_404(Pupil, id = int(request.GET.get('pupil', 0)), grade = request.user.current_grade) lesson = get_object_or_404(Lesson, id = int(request.GET.get('lesson', 0)), teacher = request.user) mark = unicode(request.GET.get('mark', 0)).lower() Mark.objects.filter(pupil = pupil, lesson = lesson).delete() m = Mark(pupil = pupil, lesson = lesson) tr_id = 'p-%d-%d' % (pupil.id, lesson.id) if mark not in ['1', '2', '3', '4', '5', 'n', u'н', '', u'б', u'b']: return HttpResponse(demjson.encode({'id': tr_id, 'mark': 'no'})) if mark == '': return HttpResponse(demjson.encode({'id': tr_id, 'mark': ''})) if mark in [u'n', u'н', u'b', u'б']: m.absent = True if mark in [u'б', u'b']: m.sick = True else: m.mark = int(mark) m.save() pupil.get_groups() if lesson.attendance and lesson.attendance.subject_id in pupil.groups and lesson.attendance.group != pupil.groups[lesson.attendance.subject_id].value: mail_admins("lesson cognetive dissonans", "Lesson id#%d, mark id#%d" % (lesson.id, m.id)) return HttpResponse(demjson.encode({'id': tr_id, 'mark': get_mark(pupil, [lesson,]), 'mark_value': str(m).strip(), 'mark_type': m.get_type() }, encoding='utf8'))
def marksStep3(request, school, grade, subject): render = {} render['school'] = school = get_object_or_404(School, id = school) render['grade'] = grade = get_object_or_404(Grade, id = grade) render['subject'] = subject = get_object_or_404(Subject, id = subject) render['dates'] = dates = [] d_st = d_end = None t = StatForm(request.GET) if t.is_valid(): d_st, d_end = t.cleaned_data['start'], t.cleaned_data['end'] if not(d_st and d_end): d_st = date.today() - timedelta(days = 14) d_end = date.today() d_end += timedelta(days = 1) d_start = d_st while d_st < d_end: dates.append(d_st) d_st += timedelta(days = 1) render['start'], render['end'] = d_start, d_end render['forms'] = forms = {} if request.method == 'GET': data = None else: data = request.POST for pupil in Pupil.objects.filter(grade = grade).order_by('last_name'): init = {} for mark in Mark.objects.filter(lesson__date__range = (d_start, d_end), pupil = pupil, lesson__subject = subject): init['mark-%d%d%d' % (mark.lesson.date.day, mark.lesson.date.month, mark.lesson.date.year)] = mark.mark forms[u'%s %s.' % (pupil.last_name, pupil.first_name[0])] = MarksAdminForm(pupil = pupil, dates = dates, init = init, prefix = 'p%d' % pupil.id, data = data) if request.method == 'POST': if all([forms[key].is_valid() for key in forms]): for form in forms.itervalues(): for d in dates: field = 'mark-%d%d%d' % (d.day, d.month, d.year) if field in form.cleaned_data: if form.cleaned_data[field] != '': lesson_kwargs = {'grade': grade, 'subject': subject, 'date': d} if Lesson.objects.filter(**lesson_kwargs).count() == 1: lesson = Lesson.objects.get(**lesson_kwargs) else: del lesson_kwargs['grade'] lesson = Lesson(**lesson_kwargs) lesson.save() lesson.grade.add(grade) lesson.save() if Mark.objects.filter(lesson = lesson, pupil = form.pupil): mark = Mark.objects.get(lesson = lesson, pupil = form.pupil) else: mark = Mark(lesson = lesson, pupil = form.pupil) mark.mark = form.cleaned_data[field] mark.save() return HttpResponseRedirect(reverse('src.marks.views.marksStep2', kwargs = {'grade': grade.id, 'school': school.id})) return render_to_response('marks/administrator/marksStep3.html', render, context_instance = RequestContext(request))
def giveMark(request, grade_id, lesson_id): render = {} grade = get_object_or_404(Grade, id = grade_id) lesson = get_object_or_404(Lesson, id = lesson_id) if (grade in request.user.grades.all()) and (lesson.teacher == request.user): if not request.POST.get('send'): marks = [] pupilsForMarks = [] for pupil in Pupil.objects.filter(grade = grade): if request.POST.get('pupil-%d' % pupil.id): try: mark = Mark.objects.get(lesson = lesson, pupil = pupil) markForm = MarkForm(prefix = pupil.id, instance = mark) except ObjectDoesNotExist: markForm = MarkForm(prefix = pupil.id) marks.append({'name': pupil.fi(), 'form': markForm}) pupilsForMarks.append(pupil.id) render['marks'] = marks return render_to_response('marks/teacher/giveMark.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) or request.POST.get('%d-absent' % pupil.id): form = MarkForm(request.POST, prefix = pupil.id) if form.is_valid(): try: mark = Mark.objects.get(pupil = Pupil.objects.get(id = pupil.id), lesson = lesson) except ObjectDoesNotExist: mark = Mark() mark.pupil = Pupil.objects.get(id = pupil.id) mark.lesson = lesson mark.mark = form.cleaned_data['mark'] mark.absent = form.cleaned_data['absent'] mark.comment = form.cleaned_data['comment'] mark.save() else: error = 1 if error == 0: return HttpResponseRedirect('/marks/grade/%d/' % grade.id) else: marks = [] for pupil in Pupil.objects.filter(grade = grade): if request.POST.get('%d-mark' % pupil.id) or request.POST.get('%d-absent' % pupil.id): marks.append({'name': pupil.fi(), 'form': MarkForm(request.POST, prefix = pupil.id)}) render['marks'] = marks return render_to_response('marks/teacher/giveMark.html', render, context_instance = RequestContext(request)) return Http404
def create(movie, user_first_name, user_last_name, value): """ Create a new mark """ mark = Mark(movie=movie, user_first_name=user_first_name, user_last_name=user_last_name, value=value) return mark.save()
def set_mark(request): from templatetags.marks_chart import get_mark pupil = get_object_or_404(Pupil, id=int(request.GET.get('pupil', 0)), grade=request.user.current_grade) lesson = get_object_or_404(Lesson, id=int(request.GET.get('lesson', 0)), teacher=request.user) mark = unicode(request.GET.get('mark', 0)).lower() Mark.objects.filter(pupil=pupil, lesson=lesson).delete() m = Mark(pupil=pupil, lesson=lesson) tr_id = 'p-%d-%d' % (pupil.id, lesson.id) if mark not in ['1', '2', '3', '4', '5', 'n', u'н', '', u'б', u'b']: return HttpResponse(demjson.encode({'id': tr_id, 'mark': 'no'})) if mark == '': return HttpResponse(demjson.encode({'id': tr_id, 'mark': ''})) if mark in [u'n', u'н', u'b', u'б']: m.absent = True if mark in [u'б', u'b']: m.sick = True else: m.mark = int(mark) m.save() pupil.get_groups() if lesson.attendance and lesson.attendance.subject_id in pupil.groups and lesson.attendance.group != pupil.groups[ lesson.attendance.subject_id].value: mail_admins("lesson cognetive dissonans", "Lesson id#%d, mark id#%d" % (lesson.id, m.id)) return HttpResponse( demjson.encode( { 'id': tr_id, 'mark': get_mark(pupil, [ lesson, ]), 'mark_value': str(m).strip(), 'mark_type': m.get_type() }, encoding='utf8'))
def FormResponseData(self): mark = Mark(ForUser=self.user, ForExercise=self.exer, Score = self.score, DateTime = self.date) mark.save() return "OK"
def addMark(student, course, hw, task, date, score): m = Mark(studentID=student, courseID=course, hwNo=hw, taskNo=task, date=date, result=score) m.save()
def index(request): ''' Очень обширная страница, необходимо сделать разделение. ''' render = {} if request.user.type == 'Parent': start = date.today() - timedelta(weeks = 2) end = date.today() + timedelta(days = 1) if request.method == 'GET': render['form'] = form = StatForm() else: render['form'] = form = StatForm(request.POST) if form.is_valid(): start = form.cleaned_data['start'] end = form.cleaned_data['end'] render.update(request.user.current_pupil.get_all_marks(start, end)) elif request.user.type == 'Teacher': import demjson if request.GET.get('set_current_grade', False): grade = get_object_or_404(Grade, id = request.GET.get('set_current_grade')) if grade not in request.user.grades.all(): raise Http404(u'Нет такого класса') request.user.current_grade = grade request.user.save() render['lesson_form'] = LessonForm() if request.GET.get('set_lesson', False): lesson = get_object_or_404(Lesson, id = int(request.GET.get('lesson', 0)), teacher = request.user) form = LessonForm(request.GET, instance = lesson) if form.is_valid(): form.save() return HttpResponse('ok') if request.GET.get('get_lesson_info', False): lesson = get_object_or_404(Lesson, id = int(request.GET.get('lesson', 0)), teacher = request.user) return HttpResponse(demjson.encode({'task': lesson.task or '', 'topic': lesson.topic or ''})) if request.GET.get('set_mark', False): from templatetags.marks_chart import get_mark pupil = get_object_or_404(Pupil, id = int(request.GET.get('pupil', 0)), grade = request.user.current_grade) lesson = get_object_or_404(Lesson, id = int(request.GET.get('lesson', 0)), teacher = request.user) mark = unicode(request.GET.get('mark', 0)).lower() Mark.objects.filter(pupil = pupil, lesson = lesson).delete() m = Mark(pupil = pupil, lesson = lesson) tr_id = 'p-%d-%d' % (pupil.id, lesson.id) if mark not in ['1', '2', '3', '4', '5', 'n', u'н', '']: return HttpResponse(demjson.encode({'id': tr_id, 'mark': 'no'})) if mark == '': return HttpResponse(demjson.encode({'id': tr_id, 'mark': ''})) if mark in [u'n', u'н']: m.absent = True else: m.mark = int(mark) m.save() return HttpResponse(demjson.encode({'id': tr_id, 'mark': get_mark(pupil, lesson), 'mark_value': str(m).strip(), 'mark_type': m.get_type() }, encoding = 'utf-8')) from pytils import dt if not request.user.current_grade: if request.user.get_grades(): request.user.current_grade = request.user.get_grades()[0] request.user.save() else: messages.error(request, u'К вам не привязано классов') return HttpResponseRedirect('/') request.user.current_grade.get_pupils_for_teacher_and_subject( request.user, request.user.current_subject ) try: day, month, year = request.GET.get('date', '').split('.') date_start = date(day = day, month = month, year = year) except ValueError: date_start = date.today() lessons_range = [] render['monthes'] = monthes = {} for i in xrange(1, 13): monthes[i] = ('', 0) kwargs = { 'subject': request.user.current_subject, 'grade': request.user.current_grade } conn = Connection.objects.filter(teacher = request.user, **kwargs) if not conn: raise Http404('No connections') conn = conn[0] if conn.connection != '0': kwargs['group'] = conn.connection kwargs4lesson = {} for i in xrange(14, -1, -1): d = date_start - timedelta(days = i) kwargs['workday'] = str(d.weekday()+1) if UsalTimetable.objects.filter(**kwargs): kwargs4lesson = {'teacher': request.user, 'date': d, 'subject': request.user.current_subject} groups = {} for lesson in UsalTimetable.objects.filter(**kwargs): groups[lesson.group] = groups.get(lesson.group, 0) + 1 groups = groups.values() if Lesson.objects.filter(grade = request.user.current_grade, **kwargs4lesson).count() != max(groups): for j in xrange(max(groups) - Lesson.objects.filter(**kwargs4lesson).count()): t = Lesson(**kwargs4lesson) t.save() t.grade.add(request.user.current_grade) t.save() resultdates = ResultDate.objects.filter(date = d, grades = request.user.current_grade) if resultdates: resultdate = resultdates[0] kwargs4lesson = { 'resultdate': resultdate, 'grade': request.user.current_grade, 'subject': request.user.current_subject, 'teacher': request.user } if not Lesson.objects.filter(**kwargs4lesson): del kwargs4lesson['grade'] lesson = Lesson(topic = resultdate.name, date = resultdate.date, **kwargs4lesson) lesson.save() lesson.grade.add(request.user.current_grade) lesson.save() if len(kwargs4lesson) == 0: raise Http404(u'Нет расписания') del kwargs4lesson['date'] kwargs4lesson['date__gte'] = date_start - timedelta(days = 15) for lesson in Lesson.objects.filter(**kwargs4lesson).order_by('date'): monthes[lesson.date.month] = (dt.ru_strftime(u'%B', lesson.date), monthes[lesson.date.month][1] + 1) lessons_range.append(lesson) for i in monthes.keys(): if monthes[i][1] == 0: del monthes[i] render['lessons'] = lessons_range return render_to_response( '~marks/%s/index.html' % request.user.type.lower(), render, context_instance = RequestContext(request))
def create(movie_id, user_id, note): """ Create a new mark """ mark = Mark(movie_id=movie_id, user_id=user_id, note=note) return mark.save()