Пример #1
0
def propagateLearningLab(classSchedule_id, startDate, endDate, schoolYear,
                         semester):
    printLogEntry("propagateClassSchedule() function called")
    # Create lists of days to use for propagating class schedule
    schoolCalendar = db.session.query(SchoolCalendar)
    phaseIIDays = schoolCalendar.filter(SchoolCalendar.phaseIISchoolDay)
    dateRange = phaseIIDays.filter(SchoolCalendar.classDate >= startDate,
                                   SchoolCalendar.classDate <= endDate)
    list_of_mondays = createListOfDates(
        dateRange.filter(SchoolCalendar.day == "M").all())
    # print(list_of_mondays)
    list_of_tuesdays = createListOfDates(
        dateRange.filter(SchoolCalendar.day == "T").all())
    # print(list_of_tuesdays)
    list_of_wednesdays = createListOfDates(
        dateRange.filter(SchoolCalendar.day == "W").all())
    list_of_thursdays = createListOfDates(
        dateRange.filter(SchoolCalendar.day == "R").all())
    list_of_fridays = createListOfDates(
        dateRange.filter(SchoolCalendar.day == "F").all())
    # Extract details from class schedule
    learningLabClassSchedule = ClassSchedule.query.get(classSchedule_id)
    print("Propagating learningLabClassSchedule:", learningLabClassSchedule)
    classSchedule_id = learningLabClassSchedule.id
    online = learningLabClassSchedule.online
    indStudy = learningLabClassSchedule.indStudy
    classDays = learningLabClassSchedule.classDays
    meetsOnMonday = re.search("[M]", classDays)
    meetsOnTuesday = re.search("[T]", classDays)
    meetsOnWednesday = re.search("[W]", classDays)
    meetsOnThursday = re.search("[R]", classDays)
    meetsOnFriday = re.search("[F]", classDays)
    if meetsOnMonday and not online and not indStudy:
        # print("Monday:", classSchedule_id, classDays)
        addClassAttendanceLog(classSchedule_id, list_of_mondays)
    if meetsOnTuesday and not online and not indStudy:
        # print("Tuesday:", classSchedule_id, classDays)
        addClassAttendanceLog(classSchedule_id, list_of_tuesdays)
    if meetsOnWednesday and not online and not indStudy:
        # print("Wednesday:", classSchedule_id, classDays)
        addClassAttendanceLog(classSchedule_id, list_of_wednesdays)
    if meetsOnThursday and not online and not indStudy:
        # print("Thursday:", classSchedule_id, classDays)
        addClassAttendanceLog(classSchedule_id, list_of_thursdays)
    if meetsOnFriday and not online and not indStudy:
        # print("Friday:", classSchedule_id, classDays)
        addClassAttendanceLog(classSchedule_id, list_of_fridays)
    return
Пример #2
0
def add_DailyAttendanceLog(chattStateANumber, absenceDateStart, absenceDateEnd,
                           attendanceCode, comment):
    printLogEntry("add_DailyAttendanceLog() function called")
    print(chattStateANumber, attendanceCode, comment, absenceDateStart,
          absenceDateEnd)
    # Create lists of days to use for propagating absence dates
    if absenceDateEnd != None:
        schoolCalendar = db.session.query(SchoolCalendar)
        phaseIIDays = schoolCalendar.filter(SchoolCalendar.phaseIISchoolDay)
        dateRange = phaseIIDays.filter(
            SchoolCalendar.classDate >= absenceDateStart,
            SchoolCalendar.classDate <= absenceDateEnd,
        )
        dateRange = createListOfDates(dateRange)
    else:
        dateRange = [absenceDateStart]
    for absenceDate in dateRange:
        dailyAttendanceLog = DailyAttendanceLog(
            absenceDate=absenceDate,
            attendanceCode=attendanceCode,
            comment=comment,
            staffID=current_user.id,
            chattStateANumber=chattStateANumber,
        )
        db.session.add(dailyAttendanceLog)
    return
Пример #3
0
def getListOfStart_End_Tmi_Days():
    # Create a list of dates comprised of startTmiPeriod, endTmiPeriod, and tmiDay:
    # [startTmiPeriod 1, endTmiPeriod 1, tmi Day 1]
    # [startTmiPeriod 2, endTmiPeriod 2, tmi Day 3]
    # [startTmiPeriod 2, endTmiPeriod 2, tmi Day 3]
    # etc...
    tmiDays = (db.session.query(
        SchoolCalendar.classDate).filter(SchoolCalendar.tmiDay == True).all())
    startTmiPeriodDates = (db.session.query(SchoolCalendar.classDate).filter(
        SchoolCalendar.startTmiPeriod == True).all())
    tmiDaysList = createListOfDates(tmiDays)
    startTmiPeriodDateList = createListOfDates(startTmiPeriodDates)
    endTmiPeriodDateList = []
    # endTmiPeriod is computed by finding the day before the next startTmiPeriod
    # Hence, loop through the startTmiPeriodList beginning with the second element
    for date in startTmiPeriodDateList[1:]:
        endTmiPeriodDate = date - timedelta(days=1)
        endTmiPeriodDateList.append(endTmiPeriodDate)
    ListOfStart_End_Tmi_Days = list(
        zip(startTmiPeriodDateList, endTmiPeriodDateList, tmiDaysList))
    return ListOfStart_End_Tmi_Days