Vérifie l'unicité des logins

This commit is contained in:
Tom Hubrecht 2020-12-23 17:08:43 +01:00
parent 83525a7984
commit 8e60374091

View file

@ -10,7 +10,7 @@ def create_users(election, csv_file):
"""Crée les votant·e·s pour l'élection donnée, en remplissant les champs
`username`, `election` et `full_name`.
"""
dialect = csv.Sniffer().sniff(csv_file.read(1024).decode("utf-8"))
dialect = csv.Sniffer().sniff(csv_file.readline().decode("utf-8"))
csv_file.seek(0)
reader = csv.reader(io.StringIO(csv_file.read().decode("utf-8")), dialect)
for (username, full_name, email) in reader:
@ -22,7 +22,7 @@ def create_users(election, csv_file):
def check_csv(csv_file):
"""Vérifie que le fichier donnant la liste de votant·e·s est bien formé"""
try:
dialect = csv.Sniffer().sniff(csv_file.read(1024).decode("utf-8"))
dialect = csv.Sniffer().sniff(csv_file.readline().decode("utf-8"))
except csv.Error:
return [
_(
@ -33,9 +33,8 @@ def check_csv(csv_file):
csv_file.seek(0)
reader = csv.reader(io.StringIO(csv_file.read().decode("utf-8")), dialect)
columns = [_("login"), _("nom"), _("email")]
errors = []
users = {}
line_nb = 0
for line in reader:
line_nb += 1
@ -44,11 +43,22 @@ def check_csv(csv_file):
_("La ligne {} n'a pas le bon nombre d'éléments.").format(line_nb)
)
else:
if line[0] == "" or line[1] == "":
if line[0] == "":
errors.append(
_("Valeur manquante dans la ligne {} : '{}'.").format(
line_nb, columns[line.index("")]
_("Valeur manquante dans la ligne {} : 'login'.").format(line_nb)
)
else:
if line[0] in users:
errors.append(
_("Doublon dans les logins : lignes {} et {}.").format(
line_nb, users[line[0]]
)
)
else:
users[line[0]] = line_nb
if line[1] == "":
errors.append(
_("Valeur manquante dans la ligne {} : 'nom'.").format(line_nb)
)
try:
validate_email(line[2])