diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 75c1723e99bdd9f7d08ed6c0c0d8800551744106..0a0fabf5a238c03d97be03151254a62ea8978798 100644 --- a/mo/web/org_contest.py +++ b/mo/web/org_contest.py @@ -592,14 +592,14 @@ def org_generic_list(round_id: Optional[int] = None, hier_id: Optional[int] = No if format == "": table = None emails = None - missing_org_warnings = None + missing_org_pants = None mailto_link = None if request.endpoint == 'org_generic_list_emails': if contest: subj = f'{contest.round.name} {contest.round.category} {contest.place.name_locative()}' else: subj = f'{round.name} kategorie {round.category}' - (emails, mailto_link, missing_org_warnings) = \ + (emails, mailto_link, missing_org_pants) = \ get_contestant_emails(query, mailto_subject=subj, pant_email=filter.pant_email.data, school_email=filter.school_email.data) @@ -614,7 +614,7 @@ def org_generic_list(round_id: Optional[int] = None, hier_id: Optional[int] = No contest=contest, round=round, site=ctx.site, table=table, emails=emails, mailto_link=mailto_link, filter=filter, count=count, action_form=action_form, - missing_org_warnings=missing_org_warnings, + missing_org_pants=missing_org_pants, ) else: table = make_contestant_table(query, round, add_school_orgs=True) @@ -747,7 +747,7 @@ def get_contestant_emails(query: Query, mailto_subject: str, pant_email: bool = True, school_email: bool = True, - ) -> Tuple[List[str], str, List[str]]: + ) -> Tuple[List[str], str, List[db.Participant]]: ctants = query.all() user_set: Set[db.User] @@ -756,7 +756,7 @@ def get_contestant_emails(query: Query, else: user_set = set() - org_warning_for: List[db.User] = [] + org_warning_for: Set[db.Participant] = set() if school_email: school_orgs = get_school_orgs(ctants) for pion, pant, _ in ctants: @@ -764,11 +764,11 @@ def get_contestant_emails(query: Query, for u in school_orgs[pant.school]: user_set.add(u) else: - org_warning_for.append(pion.user) + org_warning_for.add(pant) users = sorted(user_set, key=lambda u: u.sort_key()) emails = [u.full_email() for u in users] - org_warnings = [u.full_name() for u in sorted(org_warning_for, key=lambda u: u.sort_key())] + missing_org_pants = sorted(org_warning_for, key=lambda p: p.user.sort_key()) mailto_link = ( 'mailto:' + urllib.parse.quote(g.user.full_email(), safe='@') @@ -776,7 +776,7 @@ def get_contestant_emails(query: Query, + '&bcc=' + ','.join([urllib.parse.quote(u.email, safe='@') for u in users]) ) - return (emails, mailto_link, org_warnings) + return (emails, mailto_link, missing_org_pants) class SubmitForm(FlaskForm): diff --git a/mo/web/templates/org_generic_list.html b/mo/web/templates/org_generic_list.html index 854df8042880b21271ce943a6ceae728afbec00d..0aed62f6ff27c2a3b7376ac1b08e4d0898492466 100644 --- a/mo/web/templates/org_generic_list.html +++ b/mo/web/templates/org_generic_list.html @@ -153,9 +153,13 @@ </p> {% endif %} {% else %} - {% if missing_org_warnings %} + {% if missing_org_pants %} <h3>Školní garant nenalezen pro tyto účastníky:</h3> - <pre>{{ missing_org_warnings|join('\n')|escape }}</pre> + <ul> + {% for p in missing_org_pants %} + <li>{{ p.user|user_link }} ({{ p.school_place|place_link }}) + {% endfor %} + </ul> {% endif %} <h3>E-mailové adresy</h3>