def is_in_school_year(self, date: datetime):
     school_start = datetime.strptime(self.fisd_schedule.get("StartDate"),
                                      "%m/%d/%Y")
     school_end = datetime.strptime(self.fisd_schedule.get("EndDate"),
                                    "%m/%d/%Y")
     return school_start.date() < date.date() and school_end.date(
     ) > date.date()
Exemple #2
0
 def get_week(self, date: datetime):
     week_num: int = int(date.strftime("%U") )
     num_weeks: int = next( (item for item in self.virtual_schedule if item["sk"] == "SETTINGS" ) )
     if date.year > self.start_date.year:
         week_num = 53 + int(date.strftime("%U")) 
     #  Remove holiday weeks: 
     week_num = week_num - self.remove_holiday_weeks(date)
     return (( week_num - self.week_one ) % num_weeks.get("num_weeks", 2) ) + 1
 def is_holiday(self, date: datetime):
     if not self.is_in_school_year(date):
         return "School is not in session on {}".format(
             date.strftime("%b %d"))
     if date.strftime("%A") in ["Saturday", "Sunday"]:
         return "No school on {}".format(date.strftime("%A"))
     holiday = self.get_holiday_in_list(date.strftime("%m/%d/%Y"))
     if holiday != None:
         return "NO SCHOOL: {}.".format(holiday.get("name"))
     else:
         return None
Exemple #4
0
 def get_schedule_for_day(self, date: datetime):
     day_of_week = date.strftime("%A")
     week_num: int = int(date.strftime("%U") )
     if date.year > self.start_date.year:
         week_num = 53 + int(date.strftime("%U"))        
     # week = (( week_num - self.week_one ) % 2 ) + 1
     week = self.get_week(date)
     print (f"Current Week {week}, updated week {self.get_week(date)}")
     # print("Day of week: {}, Week Number: {}, week: {}".format(day_of_week, week_num, week))
     week_schedule = next( (item for item in self.virtual_schedule \
         if item["sk"] == "WEEK{week}|{dow}".format(week=week,dow=day_of_week )) )
     return week_schedule
    def is_date_holiday(self, holiday_date: datetime):
        if not self.is_date_in_schedule(holiday_date):
            return "School is not in session on {}".format(
                holiday_date.strftime("%b %d"))
        if holiday_date.strftime("%A") in ["Saturday", "Sunday"]:
            return "No school on {}".format(holiday_date.strftime("%A"))

        str_date = holiday_date.strftime('%m/%d/%Y')
        holiday_rec = next( (item for item in self.fisd_schedule \
            if item["sk"].startswith("HOLIDAY") and item["start"] == str_date), None)
        # print("HOLIDAY REC {}".format(holiday_rec))
        return holiday_rec if holiday_rec == None else \
            "NO SCHOOL: {}.".format(holiday_rec.get('sk').replace('HOLIDAY|', ''))
Exemple #6
0
 def what_is_my_schedule(self, student: str, date: datetime):
     calculator = Calculator(student)
     print('What is the School Schedule for {} ?'.format(calculator.name))
     try:
         sched = calculator.is_there_school(date)
         # print (sched)
         print(
             "  ===================== {} School Schedule For {} ========================================"
             .format(sched.get("name"), date.strftime("%A, %b %d, %Y")))
         if sched.get("schedule") != None:
             schedule = sched.get("schedule")
             calculator.print_schedule(schedule)
         else:
             print(sched.get("message"))
         print("            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
     except ValueError as e:
         print("COULD NOT FIND SCHEDULE!")
         print(e)
Exemple #7
0
    def is_there_school(self, date: datetime):
        print("Generating schedule for ",
              date.strftime("%A, %d. %B %Y %I:%M%p"))
        is_holiday = self.school_calendar.is_holiday(date)
        if is_holiday != None:
            return dict(schedule=None, message=is_holiday, name=self.name)

        self.term = self.school_calendar.get_term(date)
        print("Schedule for TERM: ", self.term)
        schedule = None
        try:
            schedule = self.daily_calendar.get_schedule_for_date(
                date, self.term)
            schedule = self.virtual_calendar.add_virtual_week_to_schedule(
                date, schedule)
        except:
            raise RuntimeError("Could not derive schedule for {}".format(
                self.name))

        if schedule != None:
            return dict(schedule=schedule, message=None, name=self.name)
        else:
            raise ValueError("Could not determine schedule for {}".format(
                self.name))
def datetime_to_str(para_datetime: datetime) -> str:
    return para_datetime.strftime(f'[%Y-%m-%d %H:%M:%S]')
def date_in_term(date: datetime, term: dict):
    start_of_term = datetime.strptime(term.get("start"), "%m/%d/%Y")
    end_of_term = datetime.strptime(term.get("end"), "%m/%d/%Y")
    return start_of_term.date() <= date.date() and end_of_term.date(
    ) >= date.date()
Exemple #10
0
def formatDateForKey(date: datetime):
    return date.strftime("%Y%m%d")