diff --git a/html_template/mail.html b/html_template/mail.html
index 09386ab..926c2e2 100644
--- a/html_template/mail.html
+++ b/html_template/mail.html
@@ -1,7 +1,7 @@
- Paturlettre
+ {GENEALETTER_NAME}
@@ -93,7 +93,7 @@
padding: 3px 5px 0px;
font-weight: 400;
font-size: 110%;
- color: #229027;
+ color: {GENEALETTER_MAIN_COLOR};
}
/* ANDROID CENTER FIX */
@@ -102,16 +102,16 @@
}
-
+
- Paturlettre
+ {GENEALETTER_NAME}
- |
+ |
|
- |
+ |
|
- |
+ |
|
- |
+ |
|
- |
+ |
Cet email vous est envoyé par Cyril NOVEL
- parce que vous êtes inscrit sur la liste de diffusion de la Paturlettre.
- Des questions ou des commentaires ? Envoyez un email à Paturlettre.
+ parce que vous êtes inscrit sur la liste de diffusion de {GENEALETTER_NAME}.
+ Des questions ou des commentaires ? Envoyez un email à {GENEALETTER_NAME}.
|
diff --git a/src/email_sender.py b/src/email_sender.py
index e261924..0346cee 100644
--- a/src/email_sender.py
+++ b/src/email_sender.py
@@ -27,6 +27,30 @@ class DataPaths:
return self._members_path
+class LetterOptions:
+ def __init__(self, name, response_email, logo_url, hex_main_color, hex_second_color):
+ self._name = name
+ self._response_email = response_email
+ self._logo_url = logo_url
+ self._main_color = hex_main_color
+ self._second_color = hex_second_color
+
+ def name(self):
+ return self._name
+
+ def response_email(self):
+ return self._response_email
+
+ def logo_url(self):
+ return self._logo_url
+
+ def main_color_hex(self):
+ return self._main_color
+
+ def secondary_color_hex(self):
+ return self._second_color
+
+
class Mailer:
def __init__(self, server, user, password):
self._server = server
@@ -44,24 +68,25 @@ class Mailer:
class EmailSender:
- def __init__(self, mailer: Mailer, paths: DataPaths, receiver: str):
+ def __init__(self, mailer: Mailer, paths: DataPaths, receiver: str, letter: LetterOptions):
self._mailer = mailer
self._paths = paths
self._receiver = receiver
+ self._letter = letter
print("Email Sender is set up")
- def send_paturlettre(self):
+ def send_genealetter(self):
msg = MIMEMultipart('alternative')
- msg['Subject'] = f'[Paturlettre] Semaine {get_week_number_and_span()[0]}'
- msg['From'] = 'Paturlettre '
- msg['To'] = 'Diffusion Paturlettre '
- msg.preamble = f'La Paturlettre de la semaine {get_week_number_and_span()[0]} !'
+ msg['Subject'] = f'[{self._letter.name()}] Semaine {get_week_number_and_span()[0]}'
+ msg['From'] = f'{self._letter.name()} <{self._letter.response_email()}>'
+ msg['To'] = f'Diffusion {self._letter.name()} '
+ msg.preamble = f'{self._letter.name()} de la semaine {get_week_number_and_span()[0]} !'
print("Msg Header is set up")
events_previous, events_current, events_next = get_events(self._paths)
- msg.attach(MIMEText(create_plain_email(events_previous, events_current, events_next),
+ msg.attach(MIMEText(create_plain_email(events_previous, events_current, events_next, self._letter),
'plain'))
- msg.attach(MIMEText(create_html_templated(events_previous, events_current, events_next),
+ msg.attach(MIMEText(create_html_templated(events_previous, events_current, events_next, self._letter),
'html'))
print("Msg body is generated")
@@ -72,18 +97,21 @@ class EmailSender:
try:
print("Sending to {}".format(self._receiver))
conn.sendmail(msg['From'], self._receiver, msg.as_string())
- print("Paturlettre has been sent!")
+ print(f"{self._letter.name()} has been sent!")
finally:
conn.quit()
-def create_html_templated(events_previous, events_current, events_next):
+def create_html_templated(events_previous, events_current, events_next, letter: LetterOptions):
directory = os.path.dirname(os.path.realpath(__file__))
template_path = os.path.join(directory, '..', 'html_template', 'mail.html')
with open(template_path, 'r', encoding='utf-8') as tmp:
mail = tmp.read()
- mail = mail.replace('{LogoAddress}',
- 'http://xerto.free.fr/Paturlettre/LogoLettre.png')
+ mail = mail.replace('{LogoAddress}', letter.logo_url())
+ mail = mail.replace('{GENEALETTER_MAIN_COLOR}', letter.main_color_hex())
+ mail = mail.replace('{GENEALETTER_SECOND_COLOR}', letter.secondary_color_hex())
+ mail = mail.replace('{GENEALETTER_NAME}', letter.name())
+ mail = mail.replace('{GENEALETTER_RESPONSE}', letter.response_email())
wk_and_span = get_week_number_and_span()
mail = mail.replace('{Main_Title}', f'Semaine {wk_and_span[0]}')
mail = mail.replace('{Sub_Title}',
@@ -97,9 +125,9 @@ def create_html_templated(events_previous, events_current, events_next):
return mail
-def create_plain_email(events_previous, events_current, events_next):
+def create_plain_email(events_previous, events_current, events_next, letter: LetterOptions):
wk_and_span = get_week_number_and_span()
- mail_plain = f'Paturlettre - Semaine {wk_and_span[0]}\n'
+ mail_plain = f'{letter.name()} - Semaine {wk_and_span[0]}\n'
mail_plain += f'du {wk_and_span[1].day} {months[wk_and_span[1].month - 1]}' \
f' au {wk_and_span[2].day} {months[wk_and_span[2].month - 1]}\n'
mail_plain += '\n\n'
@@ -114,8 +142,8 @@ def create_plain_email(events_previous, events_current, events_next):
mail_plain += '\n\n'
mail_plain += 'Cet email vous est envoyé par Cyril NOVEL parce que vous êtes inscrit sur la ' \
- 'liste de diffusion de la Paturlettre.\n'
- mail_plain += 'Des questions ou des commentaires ? Envoyez un email à paturlettre@kosmon.fr\n'
+ 'liste de diffusion de {}.\n'.format(letter.name())
+ mail_plain += 'Des questions ou des commentaires ? Envoyez un email à {}\n'.format(letter.response_email())
return mail_plain
@@ -211,27 +239,32 @@ def get_week_number_and_span():
return today.isocalendar()[1], monday, monday + timedelta(days=6)
-def load_config(config_file) -> (Mailer, DataPaths, str):
+def load_config(config_file) -> (LetterOptions, Mailer, DataPaths, str):
config = configparser.ConfigParser()
config.read(config_file, encoding='utf-8')
+ letter_opts = LetterOptions(config['Letter']['name'],
+ config['Letter']['response_email'],
+ config['Letter']['logo_url'],
+ config['Letter']['color_main'],
+ config['Letter']['color_second'])
mailer = Mailer(config['Mailer']['smtp_server'],
config['Mailer']['user'],
config['Mailer']['password'])
data_path = DataPaths(config['Data']['mariages'],
config['Data']['members'])
receiver = config['Destination']['receiver']
- return mailer, data_path, receiver
+ return letter_opts, mailer, data_path, receiver
def main():
- parser = ArgumentParser(description='Send Paturlettre mail')
+ parser = ArgumentParser(description='Send Genealetter mail')
parser.add_argument('-c', '--config', dest='config',
help='Config file to load')
args = parser.parse_args()
- mailer, paths, receiver = load_config(args.config)
- email_sender = EmailSender(mailer, paths, receiver)
- email_sender.send_paturlettre()
+ letter, mailer, paths, receiver = load_config(args.config)
+ email_sender = EmailSender(mailer, paths, receiver, letter)
+ email_sender.send_genealetter()
print("Exiting script")
diff --git a/src/event.py b/src/event.py
index 3aa6e73..9ab7def 100644
--- a/src/event.py
+++ b/src/event.py
@@ -64,6 +64,8 @@ class Event:
return self._current_date.weekday()
def type_str(self):
+ if self._type == 'A':
+ return 'U'
return self._type