From 8c850e50051e2b9cf9a63ff45b5399637e38365d Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Fri, 29 Sep 2023 18:38:14 +0200
Subject: [PATCH] =?UTF-8?q?Import:=20Nerozli=C5=A1iteln=C3=AD=20=C3=BA?=
 =?UTF-8?q?=C4=8Dastn=C3=ADci=20jsou=20chyba?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/imports.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/mo/imports.py b/mo/imports.py
index b8c34f96..a66631d1 100644
--- a/mo/imports.py
+++ b/mo/imports.py
@@ -491,6 +491,7 @@ class ContestImport(Import):
     log_msg_prefix = 'Účastníci'
     log_details = {'action': 'import'}
     template_basename = 'sablona-ucast'
+    email_last_seen: Dict[str, int]
 
     def __init__(
          self,
@@ -512,6 +513,7 @@ class ContestImport(Import):
             self.row_example.kod_skoly = default_place.get_code()
         else:
             self.row_example.kod_skoly = '#3333'
+        self.email_last_seen = {}
         assert not self.round.is_subround()
 
     def import_row(self, r: mo.csv.Row) -> None:
@@ -542,6 +544,11 @@ class ContestImport(Import):
             email = mo.users.email_or_synthesize(email, krestni, prijmeni, rocnik, school_place)
         except mo.CheckError as e:
             return self.error(str(e))
+
+        if email in self.email_last_seen:
+            return self.error(f'Účastník není rozlišitelný od toho z řádku {self.email_last_seen[email]}. Případné jmenovce vyřešte ručním přidáním účastníka.')
+        self.email_last_seen[email] = self.line_number
+
         user = self.find_or_create_user(email, krestni, prijmeni, is_org=False)
         if user is None:
             return
-- 
GitLab