Skip to content
Snippets Groups Projects
Commit fe5b030b authored by Martin Mareš's avatar Martin Mareš
Browse files

Import: Duplicitní účastníky nezakládáme

Varování vypíšeme a přidání účastníka neprovedeme.
Ostatní účastníci budou korektně založeni.
parent 3480de6d
No related branches found
No related tags found
No related merge requests found
......@@ -537,6 +537,10 @@ class ContestImport(Import):
if oblast and not self.check_rights(self.round, oblast):
return self.error(f'Nemáte práva na správu soutěže {oblast.name_locative()}')
contest = self.obtain_contest(self.round, oblast)
if contest is None:
return
if len(self.errors) > num_prev_errs:
return
......@@ -549,31 +553,28 @@ class ContestImport(Import):
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
part = self.find_or_create_participant(user, self.round.year, school_place.place_id if school_place else None, rok_naroz, rocnik)
if part is None:
return
contest = self.obtain_contest(self.round, oblast)
if contest is None:
return
self.find_or_create_participation(user, contest, misto)
# Kontrola na jmenovce
sess = db.get_session()
similar_users = (sess.query(db.User)
.join(db.Participation)
.filter(db.User.first_name == krestni)
.filter(db.User.last_name == prijmeni)
.filter(db.User.email != email)
.filter(db.Participation.contest == contest)
.filter(db.User != user)
.all())
if similar_users:
self.warning('Účastník stejného jména a příjmení už na tomto místě soutěží, ověřte prosím, zda to není duplicita')
self.warning('Účastník stejného jména a příjmení už na tomto místě soutěží, nepřidáváme ho znovu. Případné jmenovce vyřešte ručním přidáním účastníka.')
return
user = self.find_or_create_user(email, krestni, prijmeni, is_org=False)
if user is None:
return
part = self.find_or_create_participant(user, self.round.year, school_place.place_id if school_place else None, rok_naroz, rocnik)
if part is None:
return
self.find_or_create_participation(user, contest, misto)
def get_after_import_message(self) -> str:
return f'Importováno ({self.cnt_rows} řádků, založeno {self.cnt_new_users} uživatelů, {self.cnt_new_participations} účastí, {self.cnt_new_contests} soutěží)'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment