diff --git a/app/auth/models.py b/app/auth/models.py index 8f187b7e94..32768df03d 100644 --- a/app/auth/models.py +++ b/app/auth/models.py @@ -112,6 +112,7 @@ class User(UserMixin, db.Model): self.password_hash = generate_password_hash(password) else: self.password_hash = None + self.passwd_temp = False def check_password(self, password): """Check given password vs current one. diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index da7677d451..699d913838 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -152,14 +152,19 @@ class BulletinBUT(ResultatsSemestreBUT): } return d - def bulletin_etud(self, etud, formsemestre) -> dict: - """Le bulletin de l'étudiant dans ce semestre""" + def bulletin_etud(self, etud, formsemestre, force_publishing=False) -> dict: + """Le bulletin de l'étudiant dans ce semestre. + Si force_publishing, rempli le bulletin même si bul_hide_xml est vrai + (bulletins non publiés). + """ etat_inscription = etud.etat_inscription(formsemestre.id) nb_inscrits = self.get_inscriptions_counts()[scu.INSCRIT] + published = (not formsemestre.bul_hide_xml) or force_publishing d = { "version": "0", "type": "BUT", "date": datetime.datetime.utcnow().isoformat() + "Z", + "publie": not formsemestre.bul_hide_xml, "etudiant": etud.to_dict_bul(), "formation": { "id": formsemestre.formation.id, @@ -171,6 +176,8 @@ class BulletinBUT(ResultatsSemestreBUT): "etat_inscription": etat_inscription, "options": sco_preferences.bulletin_option_affichage(formsemestre.id), } + if not published: + return d semestre_infos = { "etapes": [str(x.etape_apo) for x in formsemestre.etapes if x.etape_apo], "date_debut": formsemestre.date_debut.isoformat(), diff --git a/app/scodoc/sco_bulletins_json.py b/app/scodoc/sco_bulletins_json.py index 89f6550495..31271822de 100644 --- a/app/scodoc/sco_bulletins_json.py +++ b/app/scodoc/sco_bulletins_json.py @@ -98,9 +98,9 @@ def formsemestre_bulletinetud_published_dict( d = {} if (not sem["bul_hide_xml"]) or force_publishing: - published = 1 + published = True else: - published = 0 + published = False if xml_nodate: docdate = "" else: diff --git a/app/views/notes.py b/app/views/notes.py index b9d468aaca..b170363160 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -307,7 +307,9 @@ def formsemestre_bulletinetud( ) if format == "json": r = bulletin_but.BulletinBUT(formsemestre) - return jsonify(r.bulletin_etud(etud, formsemestre)) + return jsonify( + r.bulletin_etud(etud, formsemestre, force_publishing=force_publishing) + ) elif format == "html": return render_template( "but/bulletin.html", @@ -318,6 +320,7 @@ def formsemestre_bulletinetud( formsemestre_id=formsemestre_id, etudid=etudid, format="json", + force_publishing=1, # pour ScoDoc lui même ), sco=ScoData(), ) diff --git a/app/views/users.py b/app/views/users.py index fe65348cfc..5917534480 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -154,7 +154,7 @@ def create_user_form(user_name=None, edit=0, all_roles=1): if user_name is not None: # scodoc7func converti en int ! user_name = str(user_name) auth_dept = current_user.dept - from_mail = current_user.email + from_mail = current_app.config["SCODOC_MAIL_FROM"] # current_user.email initvalues = {} edit = int(edit) all_roles = int(all_roles) @@ -577,8 +577,8 @@ def create_user_form(user_name=None, edit=0, all_roles=1): # A: envoi de welcome + procedure de reset # B: envoi de welcome seulement (mot de passe saisie dans le formulaire) # C: Aucun envoi (mot de passe saisi dans le formulaire) - if vals["welcome"] == "1": - if vals["reset_password:list"] == "1": + if vals["welcome"] != "1": + if vals["reset_password"] != "1": mode = Mode.WELCOME_AND_CHANGE_PASSWORD else: mode = Mode.WELCOME_ONLY