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))) | 
