This commit is contained in:
Jean-Marie Place 2021-10-20 06:22:13 +02:00
parent 89f562a2e7
commit 952cc3006b
3 changed files with 40 additions and 14 deletions

View File

@ -30,11 +30,11 @@ processes_re = re.compile(r"\.(.*)\+([0-9]*)@(.*)")
def is_disabled_email_addr(email: str) -> bool: def is_disabled_email_addr(email: str) -> bool:
""" Indique si un email a été transformé """Indique si un email a été transformé
:param email: l'adresse mail testée :param email: l'adresse mail testée
:return: True si l'adresse a été transformée :return: True si l'adresse a été transformée
""" """
return email[0] == '.' return email[0] == "."
def disable_email_addr(email: str, rang: int) -> str: def disable_email_addr(email: str, rang: int) -> str:
@ -51,7 +51,9 @@ def disable_email_addr(email: str, rang: int) -> str:
raise ScoValueError("Tentative de traitement d'une adresse déjà traitée") raise ScoValueError("Tentative de traitement d'une adresse déjà traitée")
decomposition = initial_re.match(email) decomposition = initial_re.match(email)
if decomposition is None: # adresse mail non conforme if decomposition is None: # adresse mail non conforme
raise ScoValueError("tentative de traitement de l\'adresse email non reconnue '%s' % email") raise ScoValueError(
"tentative de traitement de l'adresse email non reconnue '%s' % email"
)
return ".%s+%s@%s" % (decomposition.group(1), rang, decomposition.group(2)) return ".%s+%s@%s" % (decomposition.group(1), rang, decomposition.group(2))
@ -63,7 +65,10 @@ def initial_email_address(email) -> (str, int):
:return: l'adresse email initiale et le rang :return: l'adresse email initiale et le rang
""" """
if not is_disabled_email_addr(email): if not is_disabled_email_addr(email):
return email, 1 # l'adresse n'a pas été transformée. on la retourne à l'identique (avec l'indice 1) return (
email,
1,
) # l'adresse n'a pas été transformée. on la retourne à l'identique (avec l'indice 1)
decomposition = processes_re.match(email) decomposition = processes_re.match(email)
if decomposition is None: # l'adresse a été transformée mais n'est pas reconnue if decomposition is None: # l'adresse a été transformée mais n'est pas reconnue
raise ScoValueError("Adresse mail transformée non reconnue'%s'" % email) raise ScoValueError("Adresse mail transformée non reconnue'%s'" % email)

View File

@ -38,7 +38,9 @@ def login():
user = User.query.filter_by(user_name=form.user_name.data).first() user = User.query.filter_by(user_name=form.user_name.data).first()
if user is None or not user.check_password(form.password.data): if user is None or not user.check_password(form.password.data):
if user and is_disabled_email_addr(user.email): if user and is_disabled_email_addr(user.email):
current_app.logger.info("login: compte invalidé (email doublonné) (%s)", form.user_name.data) current_app.logger.info(
"login: compte invalidé (email doublonné) (%s)", form.user_name.data
)
flash(_("compte invalidé pour conflit d'adresse email")) flash(_("compte invalidé pour conflit d'adresse email"))
return redirect(url_for("auth.login")) return redirect(url_for("auth.login"))
else: else:

View File

@ -129,14 +129,27 @@ def index_html(all_depts=False, with_inactives=False, format="html"):
LIB_NO_MAIL = "** email non renseigné **" LIB_NO_MAIL = "** email non renseigné **"
def _explications(nbre_emails, nbre_comptes, nbre_comptes_inactifs, nbre_comptes_desactives):
def _explications(
nbre_emails, nbre_comptes, nbre_comptes_inactifs, nbre_comptes_desactives
):
html = [] html = []
html.append("<p>Certains comptes partagent les même adresses emails ou 'ont pas d'adresses.<br/>" html.append(
" Pour garantir l'unicité des adresses nous vous proposont de désactiver certains de ces comptes. </p>") "<p>Certains comptes partagent les même adresses emails ou 'ont pas d'adresses.<br/>"
" Pour garantir l'unicité des adresses nous vous proposont de désactiver certains de ces comptes. </p>"
)
html.append("<p>Nombre d'adresses' concernées: %s</p>" % nbre_emails) html.append("<p>Nombre d'adresses' concernées: %s</p>" % nbre_emails)
html.append("<p>Nombre de comptes concernés: %s</p>" % nbre_comptes) html.append("<p>Nombre de comptes concernés: %s</p>" % nbre_comptes)
html.append("<p>Nombre de comptes actifs parmi les concernés: %s</p>" % (nbre_comptes - nbre_comptes_inactifs)) html.append(
html.append(("<p>Nombre de comptes desactivés parmi les comptes actifs: %s" % nbre_comptes_desactives)) "<p>Nombre de comptes actifs parmi les concernés: %s</p>"
% (nbre_comptes - nbre_comptes_inactifs)
)
html.append(
(
"<p>Nombre de comptes desactivés parmi les comptes actifs: %s"
% nbre_comptes_desactives
)
)
return html return html
@ -162,7 +175,10 @@ def _tables_anomalies(email_doublon, bilan):
else: else:
keep = False keep = False
if rang == 1: if rang == 1:
row_start = "<tr'><th rowspan='%s'>%s</th>" % (len(bilan[initial]), initial) row_start = "<tr'><th rowspan='%s'>%s</th>" % (
len(bilan[initial]),
initial,
)
else: else:
row_start = "<tr>" row_start = "<tr>"
if keep: if keep:
@ -202,11 +218,14 @@ def stats_users(dept=None, all_depts=True, with_inactives=False):
nbre_emails = len(email_doublon) nbre_emails = len(email_doublon)
nbre_comptes = sum([len(bilan[email]) for email in email_doublon]) nbre_comptes = sum([len(bilan[email]) for email in email_doublon])
if len(email_doublon) > 0: if len(email_doublon) > 0:
table, nbre_comptes_inactifs, nbre_comptes_desactives = _tables_anomalies(email_doublon, bilan) table, nbre_comptes_inactifs, nbre_comptes_desactives = _tables_anomalies(
email_doublon, bilan
)
H += table H += table
nbre_comptes_actifs = nbre_comptes -+ nbre_comptes_inactifs nbre_comptes_actifs = nbre_comptes - +nbre_comptes_inactifs
H += _explications( H += _explications(
nbre_emails=nbre_emails, nbre_comptes=nbre_comptes, nbre_emails=nbre_emails,
nbre_comptes=nbre_comptes,
nbre_comptes_inactifs=nbre_comptes_inactifs, nbre_comptes_inactifs=nbre_comptes_inactifs,
nbre_comptes_desactives=nbre_comptes_desactives, nbre_comptes_desactives=nbre_comptes_desactives,
) )