diff options
author | Alban Gruin | 2017-09-04 22:13:31 +0200 |
---|---|---|
committer | Alban Gruin | 2017-09-04 22:13:31 +0200 |
commit | ab9df7a174e2debbf9c644c8ec3e2127eeeaa3cf (patch) | |
tree | bf9510823644aa1c5dba0ab39277633c0f18ad49 /management/commands | |
parent | ce0ed9347adde9ca80c11efe79766c966d5749ba (diff) | |
parent | 4b3fc9e4c41e2247bf0fa0fe2629b2b57fc174b0 (diff) |
Merge branch 'stable/0.y.z' into prod/pa1ch/0.y.zv0.8.0-pa1chprod/pa1ch/0.8.z
Diffstat (limited to 'management/commands')
-rw-r--r-- | management/commands/_private.py | 22 | ||||
-rw-r--r-- | management/commands/listtimetables.py | 1 | ||||
-rw-r--r-- | management/commands/timetables.py | 8 |
3 files changed, 29 insertions, 2 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 diff --git a/management/commands/listtimetables.py b/management/commands/listtimetables.py index c5ef41f..e4b782f 100644 --- a/management/commands/listtimetables.py +++ b/management/commands/listtimetables.py @@ -27,7 +27,6 @@ class Command(BaseCommand): def handle(self, *args, **options): timetables = Timetable.objects.all() if options["order_by_id"]: - print("oui") timetables = timetables.order_by("id") else: timetables = timetables.order_by("name") diff --git a/management/commands/timetables.py b/management/commands/timetables.py index d39075d..d596233 100644 --- a/management/commands/timetables.py +++ b/management/commands/timetables.py @@ -64,6 +64,8 @@ class Command(BaseCommand): def handle(self, *args, **options): year = None + errcount = 0 + if options["week"] is None: _, week, day = timezone.now().isocalendar() if day >= 6: @@ -84,5 +86,9 @@ class Command(BaseCommand): process_timetable(timetable, year, weeks) except Exception as e: self.stderr.write(self.style.ERROR("Failed to process {0}: {1}".format(timetable, e))) + errcount += 1 - self.stdout.write(self.style.SUCCESS("Done.")) + if errcount == 0: + self.stdout.write(self.style.SUCCESS("Done.")) + else: + self.stdout.write(self.style.ERROR("Done with {0} errors.".format(errcount))) |