diff options
-rw-r--r-- | management/commands/_private.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/management/commands/_private.py b/management/commands/_private.py index 3cd23ca..dec13cd 100644 --- a/management/commands/_private.py +++ b/management/commands/_private.py @@ -41,6 +41,27 @@ def add_time(date, time): delta = datetime.timedelta(hours=time.hour, minutes=time.minute) return date + delta +def consolidate_group(group): + group_content_key = ("mention", "subgroup", "td", "tp") + group_content_list = group.group_info[1:] + group_content = dict(zip(group_content_key, group_content_list)) + + for i in range(len(group_content_list))[::-1]: + del group_content[group_content_key[i]] + group_content[group_content_key[i] + "__isnull"] = True + + if group_content_list[i] is not None: + break + + if "subgroup" in group_content: + group.parent_group = Group.objects.filter(**group_content).first() + group.save() + +def consolidate_groups(groups): + for group in groups: + if group.parent_group == None: + consolidate_group(group) + def delete_courses_in_week(timetable, year, week): start, end = get_week(year, week) Course.objects.filter(begin__gte=start, begin__lt=end, @@ -79,6 +100,7 @@ def get_events(timetable, year, week, soup, weeks_in_soup): groups = [get_from_db_or_create(Group, timetable=timetable, celcat_name=item.text) for item in event.resources.group.find_all("item")] + consolidate_groups(groups) if event.notes is not None: notes = event.notes.text |