def parse_scheduled(courses, start_date, course_start_date, calendar_dict): # pre-process to dataframe history = {} for course in courses: if course.start_date > start_date: continue history_df = pd.read_csv('Output/' + course.title + '_history_cleaned.csv') for index, row in history_df.iterrows(): if '/' in row['Date']: cur_date_month, cur_date_day, cur_date_year = row['Date'].split('/') else: cur_date_year, cur_date_month, cur_date_day = row['Date'].split('-') history_df.loc[index, 'Date'] = date(int(cur_date_year), int(cur_date_month), int(cur_date_day)) history[course] = history_df cur = course_start_date while cur < start_date: cur_schedule = Schedule(date=cur) for course, history_df in history.items(): cur_history_df = history_df[history_df['Date'] == cur] if not cur_history_df.index.empty: cur_schedule.add_course(course=course, lesson=get_lesson(course=course, id=cur_history_df['Id'].item()), ins=get_ins_by_name(course=course, name=cur_history_df['Ins'].item()), point=0, calendar_dict=calendar_dict) if cur_schedule.is_valid(): cur_schedule.schedule_today(calendar_dict=calendar_dict) cur += datetime.timedelta(days=1)
def test_schedule(): schedule = Schedule([]) course_list = populate_classes() combos = get_combinations(course_list, 3) which_combo = randint(0, len(combos) - 1) print_combo(combos[which_combo]) for course in combos[which_combo]: schedule.add_course(course) return schedule
def build_base_schedule(possible_courses): required_courses = [] base_schedule = Schedule([]) for course in possible_courses: if course.required: required_courses.append(course) # make shedule for req_course in required_courses: added = base_schedule.add_course(req_course) if not added: # this is purely based on the order the classes are parsed print( f"Unable to add required courses {req_course.subject}. These courses have conflicts" ) return base_schedule