diff --git a/app/auth/models.py b/app/auth/models.py index 117dd7c57a..3a994e959b 100644 --- a/app/auth/models.py +++ b/app/auth/models.py @@ -177,8 +177,9 @@ class User(UserMixin, db.Model): if "roles_string" in data: self.user_roles = [] for r_d in data["roles_string"].split(","): - role, dept = UserRole.role_dept_from_string(r_d) - self.add_role(role, dept) + if r_d: + role, dept = UserRole.role_dept_from_string(r_d) + self.add_role(role, dept) def get_token(self, expires_in=3600): now = datetime.utcnow() @@ -407,6 +408,9 @@ class UserRole(db.Model): """ fields = role_dept.split("_", 1) # maxsplit=1, le dept peut contenir un "_" if len(fields) != 2: + current_app.logger.warning( + f"role_dept_from_string: Invalid role_dept '{role_dept}'" + ) raise ScoValueError("Invalid role_dept") role_name, dept = fields if dept == "": diff --git a/app/scodoc/bonus_sport.py b/app/scodoc/bonus_sport.py index 1dcfaa45c3..51762b4ce0 100644 --- a/app/scodoc/bonus_sport.py +++ b/app/scodoc/bonus_sport.py @@ -167,6 +167,23 @@ def bonus_iutlh(notes_sport, coefs, infos=None): return bonus +def bonus_nantes(notes_sport, coefs, infos=None): + """IUT de Nantes (Septembre 2018) + Nous avons différents types de bonification + bonfication Sport / Culture / engagement citoyen + Nous ajoutons sur le bulletin une bonification de 0,2 pour chaque item + la bonification totale ne doit pas excéder les 0,5 point. + Sur le bulletin nous ne mettons pas une note sur 20 mais directement les bonifications. + + Dans ScoDoc: on a déclaré une UE "sport&culture" dans laquelle on aura des modules + pour chaque activité (Sport, Associations, ...) + avec à chaque fois une note (ScoDoc l'affichera comme une note sur 20, mais en fait ce sera la + valeur de la bonification: entrer 0,1/20 signifiera un bonus de 0,1 point la moyenne générale) + """ + bonus = min(0.5, sum([x for x in notes_sport])) # plafonnement à 0.5 points + return bonus + + # Bonus sport IUT Tours def bonus_tours(notes_sport, coefs, infos=None): """Calcul bonus sport & culture IUT Tours sur moyenne generale diff --git a/app/scodoc/sco_import_users.py b/app/scodoc/sco_import_users.py index 68f5ecd3c9..89ac9989a4 100644 --- a/app/scodoc/sco_import_users.py +++ b/app/scodoc/sco_import_users.py @@ -231,8 +231,10 @@ def import_users(users): roles_list = [] for role in u["roles"].split(","): try: - _, _ = UserRole.role_dept_from_string(role.strip()) - roles_list.append(role.strip()) + role = role.strip() + if role: + _, _ = UserRole.role_dept_from_string(role) + roles_list.append(role) except ScoValueError as value_error: user_ok = False append_msg("role %s : %s" % (role, value_error)) diff --git a/app/views/users.py b/app/views/users.py index e3326e6bfc..253ce5f8c3 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -168,6 +168,7 @@ def create_user_form(user_name=None, edit=0, all_roles=1): orig_roles = { # set des roles existants avant édition UserRole.role_dept_from_string(role_dept) for role_dept in initvalues["roles"] + if role_dept } if not initvalues["active"]: editable_roles_set = set() # can't change roles of a disabled user diff --git a/scodoc.py b/scodoc.py index c32a84195d..68ed607642 100755 --- a/scodoc.py +++ b/scodoc.py @@ -95,7 +95,6 @@ def _clear_users_db(): try: db.session.query(UserRole).delete() db.session.query(User).delete() - db.session.query(User).delete() db.session.commit() except: db.session.rollback()