This commit is contained in:
2025-12-02 14:51:30 +01:00
parent f23293fcf5
commit 9547465661
2 changed files with 44 additions and 8 deletions

26
app.py
View File

@@ -334,21 +334,31 @@ def admin_project_people(project_id):
if 'csv_file' in request.files:
csv_file = request.files['csv_file']
if csv_file.filename:
content = csv_file.read().decode('utf-8')
# Lecture UTF-8 avec gestion BOM
content = csv_file.read().decode('utf-8-sig')
reader = csv.DictReader(StringIO(content))
count = 0
for row in reader:
name = row.get("name", "").strip()
if name:
cur = db.execute("SELECT id FROM people WHERE name = ? AND project_id = ?",
(name, project_id))
# CONSERVE les espaces INTERNES, supprime SEULEMENT avant/après
raw_name = row.get("name", "").strip() # UNIQUEMENT les bords
if raw_name:
# Pas de .title() pour conserver la casse exacte
name = raw_name # ESPACES INTERNES préservés !
# Vérifier doublons exacts (espaces inclus)
cur = db.execute(
"SELECT id FROM people WHERE name = ? AND project_id = ?",
(name, project_id)
)
if not cur.fetchone():
db.execute("INSERT INTO people (project_id, name, draws, max_draws) VALUES (?, ?, 0, 0)",
(project_id, name))
db.execute(
"INSERT INTO people (project_id, name, draws, max_draws) VALUES (?, ?, 0, 0)",
(project_id, name)
)
count += 1
recalc_max_draws_for_project(project_id)
db.commit()
flash(f"{count} personnes importées depuis le CSV.")
flash(f"{count} personnes importées (espaces + accents préservés !)")
elif action == "delete":
person_id = int(request.form.get("person_id"))
db.execute("DELETE FROM people WHERE id = ? AND project_id = ?", (person_id, project_id))