aboutsummaryrefslogtreecommitdiff
path: root/management/commands/_private.py
diff options
context:
space:
mode:
Diffstat (limited to 'management/commands/_private.py')
-rw-r--r--management/commands/_private.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/management/commands/_private.py b/management/commands/_private.py
index 3cd23ca..c31eb34 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.objects.filter(**group_content).first()
+ group.save()
+
+def consolidate_groups(groups):
+ for group in groups:
+ if group.parent == 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