示例#1
0
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'))
示例#2
0
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))
示例#3
0
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
示例#4
0
    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()
示例#5
0
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'))
示例#6
0
 def FormResponseData(self):
     mark = Mark(ForUser=self.user, ForExercise=self.exer,
         Score = self.score, DateTime = self.date)
     mark.save()
     return "OK"
示例#7
0
def addMark(student, course, hw, task, date, score):
    m = Mark(studentID=student, courseID=course, hwNo=hw, taskNo=task, date=date, result=score)
    m.save()
示例#8
0
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))
示例#9
0
    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()