aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2017-11-24 19:28:35 +0100
committerAlban Gruin2017-11-24 19:28:35 +0100
commitffffa1cef4e0c2f1e617dc74a57c5045325e57aa (patch)
tree1746c894757bb6c295201a8c4805825b7fd7e001
parentb2c14a2db9b79dca007db5e32aefbf76ebd05fd1 (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.py7
-rw-r--r--utils.py26
2 files changed, 17 insertions, 16 deletions
diff --git a/models.py b/models.py
index 6d06793..4c3f3c3 100644
--- a/models.py
+++ b/models.py
@@ -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())) \
diff --git a/utils.py b/utils.py
index 5d55eca..785a21d 100644
--- a/utils.py
+++ b/utils.py
@@ -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"""