diff options
| author | Alban Gruin | 2017-11-24 19:28:35 +0100 | 
|---|---|---|
| committer | Alban Gruin | 2017-11-24 19:28:35 +0100 | 
| commit | ffffa1cef4e0c2f1e617dc74a57c5045325e57aa (patch) | |
| tree | 1746c894757bb6c295201a8c4805825b7fd7e001 | |
| parent | b2c14a2db9b79dca007db5e32aefbf76ebd05fd1 (diff) | |
Correction d’un bogue qui empêchait l’affichage des groupes si deux
groupes ont le même nom mais pas le même semestre.
| -rw-r--r-- | models.py | 7 | ||||
| -rw-r--r-- | utils.py | 26 | 
2 files changed, 17 insertions, 16 deletions
| @@ -83,9 +83,10 @@ class GroupManager(Manager):                                            timetable=group.timetable)      def get_relevant_groups(self, timetable, *args, **criteria): -        sub = self.get_queryset().filter(timetable=timetable, mention=OuterRef("mention"), -                                   subgroup__startswith=OuterRef("subgroup")) \ -                           .order_by().values("mention").annotate(c=Count("*")).values("c") +        sub = self.get_queryset().filter(timetable=timetable, +                                         mention__startswith=OuterRef("mention"), +                                         subgroup__startswith=OuterRef("subgroup")) \ +                                 .order_by().values("mention").annotate(c=Count("*")).values("c")          return self.get_queryset().filter(*args, timetable=timetable, hidden=False, **criteria) \                              .annotate(nbsub=Subquery(sub, output_field=models.IntegerField())) \ @@ -48,24 +48,24 @@ def group_courses(courses):  def parse_group(name):      # Explication de la regex      # -    # ^(.+?)\s*(s\d\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$ -    # ^                                                         début de la ligne -    #  (.+?)                                                    correspond à au moins un caractère -    #       \s*                                                 éventuellement un ou plusieurs espaces -    #          (s\d\s+)?                                        éventuellement un s suivi d’un nombre et d’un ou plusieurs espaces -    #                   ((CM|TD|TP|G)                           « CM » ou « TD » ou « TP » ou « G » -    #                                (\w\d{0,3})                suivi d’un caractère puis entre 0 et 3 chiffres -    #                                           )?              groupe optionnel -    #                                             (\s+          un ou plusieurs espaces -    #                                                 \(.+\))?  un ou pliseurs caractères entre parenthèses -    #                                                         $ fin de la ligne -    group_regex = re.compile(r"^(.+?)\s*(s\d\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$") +    # ^((.+?)\s*(s\d\s+)?)((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$ +    # ^                                                           début de la ligne +    #  ((.+?)                                                     correspond à au moins un caractère +    #        \s*                                                  éventuellement un ou plusieurs espaces +    #           (s\d\s+)?)                                        éventuellement un s suivi d’un nombre et d’un ou plusieurs espaces +    #                     ((CM|TD|TP|G)                           « CM » ou « TD » ou « TP » ou « G » +    #                                  (\w\d{0,3})                suivi d’un caractère puis entre 0 et 3 chiffres +    #                                             )?              groupe optionnel +    #                                               (\s+          un ou plusieurs espaces +    #                                                   \(.+\))?  un ou pliseurs caractères entre parenthèses +    #                                                           $ fin de la ligne +    group_regex = re.compile(r"^((.+?)\s*(s\d\s+)?)((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$")      search = group_regex.search(name)      if search is None:          return name, None      parts = search.groups() -    return parts[0], parts[4] +    return parts[0], parts[5]  def tz_now():      """Retourne la date et l’heure avec le bon fuseau horaire""" | 
