def parse_line(self, lnr, line): m = self.pattern.match(line) if not m: raise TeachersParserError("Line is not matching: %d. %s" \ % (lnr, line)) title, last, first, gender = m.groups() if gender == 'M': is_male = True else: is_male = False return Educator(title, first, last, is_male)
def teachers(self): """ Render full currently active teachers schedule table (every teacher and every weekday). """ schedule = Schedule.current() q = Educator.query_active(schedule_id=schedule.id).\ order_by(Educator.last_name) educators = [] for e in q.all(): s = e.schedule() educators.append((e, s)) c.year = schedule.year c.educators = educators return render('schedule/teacher/full_table.xml')
def index(self): """ Render schedule management control panel. Handle POST redirects. """ day = request.params.get('day', None) group_name = request.params.get('group_name', None) course_name = request.params.get('course_name', None) teacher_last_name = request.params.get('teacher_last_name', None) if group_name is not None: if course_name is not None: if day == 'week': redirect( url('schedule_group_course_week', group_name=group_name, course_name=course_name)) elif day is not None: redirect( url('schedule_group_course', day_name=day, group_name=group_name, course_name=course_name)) else: redirect( url('schedule_group_course_today', group_name=group_name, course_name=course_name)) else: if day == 'week': redirect(url('schedule_group_week', group_name=group_name)) elif day is not None: redirect( url('schedule_group', day_name=day, group_name=group_name)) else: redirect(url('schedule_group_today', group_name=group_name)) if teacher_last_name is not None: if day == 'week': redirect( url('schedule_teacher_week', teacher_name=teacher_last_name)) elif day is not None: redirect( url('schedule_teacher', day_name=day, teacher_name=request.params.get('teacher_last_name'))) else: redirect( url('schedule_teacher_today', teacher_name=request.params.get('teacher_last_name'))) schedule = Schedule.current() c.year = schedule.year groups = Group.query_active(schedule.id).\ join((SchoolYear, Group.year_id == SchoolYear.id)).\ order_by(desc(SchoolYear.start), Group.name).all() courses = [] classes = [] for g in groups: if len(g.name) == 1 and g.name not in courses: courses.append(g.name) elif len(g.name) != 1 and g.name not in classes: classes.append(g.full_name(schedule.year)) courses.sort() classes.sort() teachers = Educator.query_active(schedule.id).\ order_by(Educator.last_name).all() c.groups = groups c.courses = courses c.classes = classes c.teachers = teachers return render('schedule/index.xml')
def index(self): """ Render schedule management control panel. Handle POST redirects. """ day = request.params.get('day', None) group_name = request.params.get('group_name', None) course_name = request.params.get('course_name', None) teacher_last_name = request.params.get('teacher_last_name', None) if group_name is not None: if course_name is not None: if day == 'week': redirect(url('schedule_group_course_week', group_name=group_name, course_name=course_name)) elif day is not None: redirect(url('schedule_group_course', day_name=day, group_name=group_name, course_name=course_name)) else: redirect(url('schedule_group_course_today', group_name=group_name, course_name=course_name)) else: if day == 'week': redirect(url('schedule_group_week', group_name=group_name)) elif day is not None: redirect(url('schedule_group', day_name=day, group_name=group_name)) else: redirect(url('schedule_group_today', group_name=group_name)) if teacher_last_name is not None: if day == 'week': redirect(url('schedule_teacher_week', teacher_name=teacher_last_name)) elif day is not None: redirect(url('schedule_teacher', day_name=day, teacher_name=request.params.get('teacher_last_name'))) else: redirect(url('schedule_teacher_today', teacher_name=request.params.get('teacher_last_name'))) schedule = Schedule.current() c.year = schedule.year groups = Group.query_active(schedule.id).\ join((SchoolYear, Group.year_id == SchoolYear.id)).\ order_by(desc(SchoolYear.start), Group.name).all() courses = [] classes = [] for g in groups: if len(g.name) == 1 and g.name not in courses: courses.append(g.name) elif len(g.name) != 1 and g.name not in classes: classes.append(g.full_name(schedule.year)) courses.sort() classes.sort() teachers = Educator.query_active(schedule.id).\ order_by(Educator.last_name).all() c.groups = groups c.courses = courses c.classes = classes c.teachers = teachers return render('schedule/index.xml')