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
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
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