feat: mailing to filtered teamer list
addresses #869dv9bur
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{#- the reasons are prepositional phrases on purpose: an attributive adjective would have to
|
||||
agree in number and gender ("1 gelöschte:r" / "2 gelöschte"), which reads badly next to
|
||||
the gender neutral Teamer:innen and is not worth inflecting for a status line -#}
|
||||
{%- set reasons = [] -%}
|
||||
{%- if recipients.skippedNoEmail > 0 -%}
|
||||
{%- set reasons = reasons|merge([{ 'count': recipients.skippedNoEmail, 'phrase': 'ohne E-Mail-Adresse' }]) -%}
|
||||
{%- endif -%}
|
||||
{%- if recipients.skippedDeleted > 0 -%}
|
||||
{%- set reasons = reasons|merge([{ 'count': recipients.skippedDeleted, 'phrase': 'mit gelöschtem Account' }]) -%}
|
||||
{%- endif -%}
|
||||
{%- if recipients.skippedDisabled > 0 -%}
|
||||
{%- set reasons = reasons|merge([{ 'count': recipients.skippedDisabled, 'phrase': 'mit gesperrtem Account' }]) -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- set noun = recipients.skippedCount == 1 ? 'Teamer:in' : 'Teamer:innen' -%}
|
||||
{%- set verb = recipients.skippedCount == 1 ? 'wird' : 'werden' -%}
|
||||
|
||||
{%- if reasons|length == 1 -%}
|
||||
{#- one reason carries the whole count, so it reads as a single sentence -#}
|
||||
{{- '%d %s %s %s übersprungen'|format(recipients.skippedCount, noun, reasons|first.phrase, verb) -}}
|
||||
{%- else -%}
|
||||
{%- set parts = [] -%}
|
||||
{%- for reason in reasons -%}
|
||||
{%- set parts = parts|merge(['%d %s'|format(reason.count, reason.phrase)]) -%}
|
||||
{%- endfor -%}
|
||||
{{- '%d %s %s übersprungen: %s und %s'|format(
|
||||
recipients.skippedCount,
|
||||
noun,
|
||||
verb,
|
||||
parts|slice(0, parts|length - 1)|join(', '),
|
||||
parts|last
|
||||
) -}}
|
||||
{%- endif -%}
|
||||
Reference in New Issue
Block a user