|
17 | 17 |
|
18 | 18 | all_emails: Dict[str, Type[TapirEmailBase]] = {}
|
19 | 19 |
|
20 |
| -enabled_by_default_options = Literal[True, False, "both"] |
| 20 | +MAIL_OPTIONS_ = Literal[True, False, "both"] |
21 | 21 |
|
22 | 22 |
|
23 |
| -def get_all_emails( |
24 |
| - default: enabled_by_default_options = True, |
25 |
| -) -> list[Type[TapirEmailBase]]: |
| 23 | +def get_mail_types( |
| 24 | + enabled_by_default: MAIL_OPTIONS_ = True, |
| 25 | + mandatory: MAIL_OPTIONS_ = True, |
| 26 | +) -> List[Tuple[str, str]]: |
26 | 27 | """
|
27 | 28 | default="both" returns both, default and non-default mails.
|
28 | 29 | default=False returns mails not being sent by default
|
29 | 30 | """
|
30 |
| - if default != "both": |
31 |
| - return [ |
32 |
| - mail |
33 |
| - for mail in TapirEmailBase.__subclasses__() |
34 |
| - if mail.enabled_by_default is default |
35 |
| - ] |
36 |
| - else: |
37 |
| - return [mail for mail in TapirEmailBase.__subclasses__()] |
38 |
| - |
39 |
| - |
40 |
| -def get_mails_not_mandatory( |
41 |
| - default: enabled_by_default_options = "both", |
42 |
| -) -> List[Tuple[str, str]]: |
43 |
| - return [ |
44 |
| - (mail.get_unique_id(), mail.get_name()) |
45 |
| - for mail in get_all_emails(default=default) |
46 |
| - if mail.mandatory is False |
47 |
| - ] |
48 | 31 |
|
| 32 | + def filter_mail(mail): |
| 33 | + return ( |
| 34 | + enabled_by_default == "both" |
| 35 | + or mail.enabled_by_default is enabled_by_default |
| 36 | + ) and (mandatory == "both" or mail.mandatory is mandatory) |
49 | 37 |
|
50 |
| -def get_mails_mandatory( |
51 |
| - default: enabled_by_default_options = "both", |
52 |
| -) -> List[Tuple[str, str]]: |
53 | 38 | return [
|
54 | 39 | (mail.get_unique_id(), mail.get_name())
|
55 |
| - for mail in get_all_emails(default=default) |
56 |
| - if mail.mandatory is True |
| 40 | + for mail in TapirEmailBase.__subclasses__() |
| 41 | + if filter_mail(mail) |
57 | 42 | ]
|
58 | 43 |
|
59 | 44 |
|
| 45 | +def get_mails_not_mandatory() -> List[Tuple[str, str]]: |
| 46 | + return get_mail_types(mandatory=False, enabled_by_default="both") |
| 47 | + |
| 48 | + |
60 | 49 | class TapirEmailBase:
|
61 | 50 | enabled_by_default = True # mails are opt-out by default
|
62 | 51 | mandatory = True # mails are mandatory by default
|
@@ -145,7 +134,7 @@ def send_to_share_owner(self, actor: User | None, recipient: ShareOwner):
|
145 | 134 |
|
146 | 135 | def user_wants_to_or_has_to_receive_mail(self, user: TapirUser):
|
147 | 136 | return (self.get_unique_id() in user.additional_mails) | (
|
148 |
| - self.get_unique_id() in [x[0] for x in get_mails_mandatory()] |
| 137 | + self.get_unique_id() in [x[0] for x in get_mail_types(mandatory=True)] |
149 | 138 | )
|
150 | 139 |
|
151 | 140 | def send_to_tapir_user(self, actor: User | None, recipient: TapirUser):
|
|
0 commit comments