diff --git a/app/scodoc/sco_import_users.py b/app/scodoc/sco_import_users.py
index f5056b59ce..7a779b9593 100644
--- a/app/scodoc/sco_import_users.py
+++ b/app/scodoc/sco_import_users.py
@@ -27,27 +27,23 @@
"""Import d'utilisateurs via fichier Excel
"""
-import random, time
-import re
+import random
+import time
from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-from email.header import Header
+from flask import g, url_for
+from flask_login import current_user
-from app import db, Departement
+from app import db
+from app import email
+from app.auth.models import User, UserRole
import app.scodoc.sco_utils as scu
from app import log
-from app.scodoc.sco_exceptions import AccessDenied, ScoValueError, ScoException
+from app.scodoc.sco_exceptions import AccessDenied, ScoValueError
from app.scodoc import sco_excel
from app.scodoc import sco_preferences
from app.scodoc import sco_users
-from flask import g
-from flask_login import current_user
-from app.auth.models import User, UserRole
-
-from app import email
-
TITLES = ("user_name", "nom", "prenom", "email", "roles", "dept")
COMMENTS = (
@@ -90,7 +86,7 @@ def import_excel_file(datafile):
"""
Import scodoc users from Excel file.
This method:
- * checks that the current_user has the ability to do so (at the moment only a SuperAdmin). He may thereoff import users with any well formed role into any deprtment (or all)
+ * checks that the current_user has the ability to do so (at the moment only a SuperAdmin). He may thereoff import users with any well formed role into any department (or all)
* Once the check is done ans successfull, build the list of users (does not check the data)
* call :func:`import_users` to actually do the job
history: scodoc7 with no SuperAdmin every Admin_XXX could import users.
@@ -98,7 +94,6 @@ def import_excel_file(datafile):
:return: same as import users
"""
# Check current user privilege
- auth_dept = current_user.dept
auth_name = str(current_user)
if not current_user.is_administrator():
raise AccessDenied("invalid user (%s) must be SuperAdmin" % auth_name)
@@ -127,7 +122,8 @@ def import_excel_file(datafile):
del cols[tit]
if cols or unknown:
raise ScoValueError(
- "colonnes incorrectes (on attend %d, et non %d)
(colonnes manquantes: %s, colonnes invalides: %s)"
+ """colonnes incorrectes (on attend %d, et non %d)
+ (colonnes manquantes: %s, colonnes invalides: %s)"""
% (len(TITLES), len(fs), list(cols.keys()), unknown)
)
# ok, same titles... : build the list of dictionaries
@@ -192,9 +188,7 @@ def import_users(users):
)
if not user_ok:
append_msg("identifiant '%s' %s" % (u["user_name"], msg))
- # raise ScoValueError(
- # "données invalides pour %s: %s" % (u["user_name"], msg)
- # )
+
u["passwd"] = generate_password()
#
# check identifiant
@@ -224,7 +218,7 @@ def import_users(users):
import_ok = False
except ScoValueError as value_error:
log("import_users: exception: abort create %s" % str(created.keys()))
- raise ScoValueError(msg) # re-raise exception
+ raise ScoValueError(msg) from value_error
if import_ok:
for u in created.values():
# Création de l'utilisateur (via SQLAlchemy)
@@ -244,7 +238,7 @@ def import_users(users):
ALPHABET = r"""ABCDEFGHIJKLMNPQRSTUVWXYZ123456789123456789AEIOU"""
-PASSLEN = 6
+PASSLEN = 8
RNG = random.Random(time.time())
@@ -259,23 +253,18 @@ def generate_password():
return "".join(RNG.sample(l, PASSLEN))
-def mail_password(u, context=None, reset=False):
+def mail_password(user: dict, reset=False) -> None:
"Send password by email"
- if not u["email"]:
+ if not user["email"]:
return
- u[
- "url"
- ] = (
- scu.ScoURL()
- ) # TODO set auth page URL ? (shared by all departments) ../auth/login
-
+ user["url"] = url_for("scodoc.index")
txt = (
"""
Bonjour %(prenom)s %(nom)s,
"""
- % u
+ % user
)
if reset:
txt += (
@@ -285,10 +274,10 @@ votre mot de passe ScoDoc a été ré-initialisé.
Le nouveau mot de passe est: %(passwd)s
Votre nom d'utilisateur est %(user_name)s
-Vous devrez changer ce mot de passe lors de votre première connexion
+Vous devrez changer ce mot de passe lors de votre première connexion
sur %(url)s
"""
- % u
+ % user
)
else:
txt += (
@@ -303,13 +292,13 @@ Le logiciel est accessible sur: %(url)s
Vous êtes invité à changer ce mot de passe au plus vite (cliquez sur
votre nom en haut à gauche de la page d'accueil).
"""
- % u
+ % user
)
txt += (
"""
-ScoDoc est un logiciel libre développé à l'Université Paris 13 par Emmanuel Viennet.
+ScoDoc est un logiciel libre développé par Emmanuel Viennet et l'association ScoDoc.
Pour plus d'informations sur ce logiciel, voir %s
"""
@@ -321,4 +310,4 @@ Pour plus d'informations sur ce logiciel, voir %s
else:
subject = "Votre accès ScoDoc"
sender = sco_preferences.get_preference("email_from_addr")
- email.send_email(subject, sender, [u["email"]], txt)
+ email.send_email(subject, sender, [user["email"]], txt)
diff --git a/app/scodoc/sco_users.py b/app/scodoc/sco_users.py
index 1dd104b6a4..74853ca801 100644
--- a/app/scodoc/sco_users.py
+++ b/app/scodoc/sco_users.py
@@ -400,9 +400,11 @@ def check_modif_user(
returns (ok, msg)
- ok : si vrai, peut continuer avec ces parametres
(si ok est faux, l'utilisateur peut quand même forcer la creation)
- - msg: message warning a presenter l'utilisateur
+ - msg: message warning à presenter à l'utilisateur
"""
- MSG_OPT = """Attention: %s (vous pouvez forcer l'opération en cochant "Ignorer les avertissements" en bas de page)"""
+ MSG_OPT = """
+ (vous pouvez forcer l'opération en cochant "Ignorer les avertissements" en bas de page)
+ """
# ce login existe ?
user = _user_list(user_name)
if edit and not user: # safety net, le user_name ne devrait pas changer
diff --git a/sco_version.py b/sco_version.py
index 1505aa7a3a..34c13b803b 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -1,7 +1,7 @@
# -*- mode: python -*-
# -*- coding: utf-8 -*-
-SCOVERSION = "9.0.52"
+SCOVERSION = "9.0.53"
SCONAME = "ScoDoc"