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 post(self): test_id = self.request.get( 'test_id' ) author_id = self.request.get( 'author_id' ) user = users.get_current_user() if user: test = Test.query( Test.id == test_id ).get() mark_query = Mark.query( ancestor = ndb.Key("Entity", user.user_id() ) ) mark_query = mark_query.filter( Mark.test.id == test.id ) this_mark = mark_query.get() if this_mark == None: print "IndexError" this_mark = Mark( parent = ndb.Key("Entity", user.user_id() ) ) this_mark.test = test this_mark.created = datetime.datetime.now() this_mark.mark = None this_mark.rated = False this_mark.rating = 0 test.times_taken += 1 test.put() this_mark.response = self.request.get( 'response' ) this_mark.complete = False this_mark.modified = datetime.datetime.now() this_mark.id = test_id + user.user_id() this_mark.marker_entity = Entity.query( Entity.id == author_id ).get() this_mark.taker_entity = Entity.query( Entity.id == user.user_id() ).get() send_email( this_mark.marker_entity.user.email() , test, "Test-Answer") this_mark.put() self.redirect( '/t/%s' % test_id ) return
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 get_student_data(): return_ = {} faculty = random.choice(Faculty.objects()) return_['curator'] = random.choice(Curator.objects(faculty=faculty)) return_['academic_group'] = random.choice( AcademicGroup.objects(faculty=faculty)) return_['student_card'] = random.randint(0, 100000000000000) return_['student_name'] = get_random_word(random.randint(2, 10)).title() return_['student_surname'] = get_random_word(random.randint(2, 15)).title() return_['marks'] = [] lower_mark = random.randint(2, 5) for i in range(random.randint(5, 10)): mark = Mark() mark.mark = random.randint(lower_mark, 5) return_['marks'].append(mark) return return_
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 post(self): test_id = self.request.get('test_id') author_id = self.request.get('author_id') user = users.get_current_user() if user: test = Test.query(Test.id == test_id).get() mark_query = Mark.query(ancestor=ndb.Key("Entity", user.user_id())) mark_query = mark_query.filter(Mark.test.id == test.id) this_mark = mark_query.get() if this_mark == None: print "IndexError" this_mark = Mark(parent=ndb.Key("Entity", user.user_id())) this_mark.test = test this_mark.created = datetime.datetime.now() this_mark.mark = None this_mark.rated = False this_mark.rating = 0 test.times_taken += 1 test.put() this_mark.response = self.request.get('response') this_mark.complete = False this_mark.modified = datetime.datetime.now() this_mark.id = test_id + user.user_id() this_mark.marker_entity = Entity.query( Entity.id == author_id).get() this_mark.taker_entity = Entity.query( Entity.id == user.user_id()).get() send_email(this_mark.marker_entity.user.email(), test, "Test-Answer") this_mark.put() self.redirect('/t/%s' % test_id) return
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))