From 1a4461cfb054628f6c305d0c8a502a846f56b484 Mon Sep 17 00:00:00 2001 From: Matthias Hartmann Date: Fri, 17 Jun 2022 20:10:09 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Fix=20Issue=20364=20:=20v=C3=A9rif=20group?= =?UTF-8?q?=5Fname=20d=C3=A9j=C3=A0=20existant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_groups.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py index 79ed91cad..6df63bef3 100644 --- a/app/scodoc/sco_groups.py +++ b/app/scodoc/sco_groups.py @@ -599,6 +599,11 @@ def XMLgetGroupsInPartition(partition_id): # was XMLgetGroupesTD response.headers["Content-Type"] = scu.XML_MIMETYPE return response +def check_group_name(group_name, partition): + """Raise ScoValueError if group_name exists in partition""" + exists = group_name in [g["group_name"] for g in get_partition_groups(partition)] + if exists: + raise ScoValueError("Le nom de groupe existe déjà dans la partition") def comp_origin(etud, cur_sem): """breve description de l'origine de l'étudiant (sem. precedent) @@ -1244,6 +1249,7 @@ def group_set_name(group_id, group_name, redirect=True): if not sco_permissions_check.can_change_groups(formsemestre_id): raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !") redirect = int(redirect) + check_group_name(group_name, get_partition(group['partition_id'])) cnx = ndb.GetDBConnexion() groupEditor.edit(cnx, {"group_id": group_id, "group_name": group_name}) @@ -1372,13 +1378,13 @@ def groups_auto_repartition(partition_id=None): # Crée les nouveaux groupes group_ids = [] for group_name in group_names: - # try: - # checkGroupName(group_name) - # except: - # H.append('

Nom de groupe invalide: %s

'%group_name) - # return '\n'.join(H) + tf[1] + html_sco_header.sco_footer() + try: + check_group_name(group_name, partition) + except: + H.append('

Nom de groupe invalide: %s

'%group_name) + return '\n'.join(H) + tf[1] + html_sco_header.sco_footer() group_ids.append(create_group(partition_id, group_name)) - # + nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) identdict = nt.identdict # build: { civilite : liste etudids trie par niveau croissant } From d3226a32f4f3e27b82ed808ec9204869872cea03 Mon Sep 17 00:00:00 2001 From: Matthias Hartmann Date: Fri, 17 Jun 2022 20:36:02 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Revert=20"Fix=20Issue=20364=20:=20v=C3=A9ri?= =?UTF-8?q?f=20group=5Fname=20d=C3=A9j=C3=A0=20existant"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 1a4461cfb054628f6c305d0c8a502a846f56b484. --- app/scodoc/sco_groups.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py index 6df63bef3..79ed91cad 100644 --- a/app/scodoc/sco_groups.py +++ b/app/scodoc/sco_groups.py @@ -599,11 +599,6 @@ def XMLgetGroupsInPartition(partition_id): # was XMLgetGroupesTD response.headers["Content-Type"] = scu.XML_MIMETYPE return response -def check_group_name(group_name, partition): - """Raise ScoValueError if group_name exists in partition""" - exists = group_name in [g["group_name"] for g in get_partition_groups(partition)] - if exists: - raise ScoValueError("Le nom de groupe existe déjà dans la partition") def comp_origin(etud, cur_sem): """breve description de l'origine de l'étudiant (sem. precedent) @@ -1249,7 +1244,6 @@ def group_set_name(group_id, group_name, redirect=True): if not sco_permissions_check.can_change_groups(formsemestre_id): raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !") redirect = int(redirect) - check_group_name(group_name, get_partition(group['partition_id'])) cnx = ndb.GetDBConnexion() groupEditor.edit(cnx, {"group_id": group_id, "group_name": group_name}) @@ -1378,13 +1372,13 @@ def groups_auto_repartition(partition_id=None): # Crée les nouveaux groupes group_ids = [] for group_name in group_names: - try: - check_group_name(group_name, partition) - except: - H.append('

Nom de groupe invalide: %s

'%group_name) - return '\n'.join(H) + tf[1] + html_sco_header.sco_footer() + # try: + # checkGroupName(group_name) + # except: + # H.append('

Nom de groupe invalide: %s

'%group_name) + # return '\n'.join(H) + tf[1] + html_sco_header.sco_footer() group_ids.append(create_group(partition_id, group_name)) - + # nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) identdict = nt.identdict # build: { civilite : liste etudids trie par niveau croissant } From cf99d3c618036e4f54b801d8254f9307be3882ec Mon Sep 17 00:00:00 2001 From: Matthias Hartmann Date: Fri, 17 Jun 2022 20:42:45 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Fix=20Issue=20364=20:=20v=C3=A9rif=20group?= =?UTF-8?q?=5Fname=20d=C3=A9j=C3=A0=20existant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_groups.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py index 79ed91cad..4f984d0b1 100644 --- a/app/scodoc/sco_groups.py +++ b/app/scodoc/sco_groups.py @@ -263,6 +263,15 @@ def get_group_members(group_id, etat=None): return r +def check_group_name(group_name, partition, raiser=False): + """If groupe name exists in partition : if raiser -> Raise ScoValueError else-> return true""" + exists = group_name in [g["group_name"] for g in get_partition_groups(partition)] + if exists: + if raiser: + raise ScoValueError("Le nom de groupe existe déjà dans la partition") + else : + return True + return False; # obsolete: sco_groups_view.DisplayedGroupsInfos # def get_groups_members(group_ids, etat=None): @@ -798,7 +807,7 @@ def create_group(partition_id, group_name="", default=False) -> int: if not group_name and not default: raise ValueError("invalid group name: ()") # checkGroupName(group_name) - if group_name in [g["group_name"] for g in get_partition_groups(partition)]: + if check_group_name(group_name, partition): raise ValueError( "group_name %s already exists in partition" % group_name ) # XXX FIX: incorrect error handling (in AJAX) @@ -1246,7 +1255,7 @@ def group_set_name(group_id, group_name, redirect=True): redirect = int(redirect) cnx = ndb.GetDBConnexion() groupEditor.edit(cnx, {"group_id": group_id, "group_name": group_name}) - + check_group_name(group_name, get_partition(group["partition_id"]), True) # redirect to partition edit page: if redirect: return flask.redirect( From 30b4a28b7f8304f04dd673b1a3e8e024118d55f5 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 20 Jun 2022 18:12:00 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Bonus=20Orl=C3=A9ans=20(contrib.=20F.=20Mas?= =?UTF-8?q?son)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/comp/bonus_spo.py | 48 +++++++++++++++++++++++++++++++++++++++++++ sco_version.py | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py index 6cf0767f0..755d386e5 100644 --- a/app/comp/bonus_spo.py +++ b/app/comp/bonus_spo.py @@ -1023,6 +1023,54 @@ class BonusNantes(BonusSportAdditif): bonus_max = 0.5 # plafonnement à 0.5 points +class BonusOrleans(BonusSportAdditif): + """Calcul bonus modules optionnels (sport, culture), règle IUT d'Orléans +

Cadre général : + En reconnaissance de l'engagement des étudiants dans la vie associative, + sociale ou professionnelle, l’IUT d’Orléans accorde, sous conditions, + une bonification aux étudiants inscrits qui en font la demande en début + d’année universitaire. +

+

Cet engagement doit être régulier et correspondre à une activité réelle + et sérieuse qui bénéficie à toute la communauté étudiante de l’IUT, + de l’Université ou à l’ensemble de la collectivité.

+

Bonification : + Pour les DUT et LP, cette bonification interviendra sur la moyenne générale + des semestres pairs : +

  • du 2ème semestre pour les étudiants de 1ère année de DUT
  • +
  • du 4ème semestre pour les étudiants de 2nde année de DUT
  • +
  • du 6ème semestre pour les étudiants en LP
  • +
+ Pour le BUT, cette bonification interviendra sur la moyenne de chacune + des UE des semestre pairs : +
  • du 2ème semestre pour les étudiants de 1ère année de BUT
  • +
  • du 4ème semestre pour les étudiants de 2ème année de BUT
  • +
  • du 6ème semestre pour les étudiants de 3ème année de BUT
  • +
+ La bonification ne peut dépasser +0,5 points par année universitaire. +

+

Avant février 2020 : + Un bonus de 2,5% de la note de sport est accordé à la moyenne générale. +

+ """ + + name = "bonus_iutorleans" + displayed_name = "IUT d'Orléans" + bonus_max = 0.5 + seuil_moy_gen = 0.0 # seuls les points au dessus du seuil sont comptés + proportion_point = 1 + classic_use_bonus_ues = False + + def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan): + if self.formsemestre.date_debut > datetime.date(2020, 2, 1): + self.proportion_point = 1.0 + else: + self.proportion_point = 2.5 / 100.0 + return super().compute_bonus( + sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan + ) + + class BonusPoitiers(BonusSportAdditif): """Calcul bonus optionnels (sport, culture), règle IUT de Poitiers. diff --git a/sco_version.py b/sco_version.py index 3de1255fd..be28c9f10 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.2.24" +SCOVERSION = "9.2.25" SCONAME = "ScoDoc"