From a742a6847c44efd2264dd01e6c84e92731b00bae Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Sun, 5 Apr 2015 14:42:18 +0200 Subject: [PATCH] mail.py: add un peu de doc --- gestion/mail/mail.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/gestion/mail/mail.py b/gestion/mail/mail.py index e0d00d8b..df3bc134 100644 --- a/gestion/mail/mail.py +++ b/gestion/mail/mail.py @@ -48,6 +48,7 @@ def format_date(d): return d.strftime('%A, %B %d %Y').decode(encoding) def given_name(adh): + """Renvoie le joli nom d'un adhérent""" if 'club' in adh['objectClass']: return u'Club %s' % unicode(adh['nom'][0]) return unicode(adh['prenom'][0]) + " " + unicode(adh['nom'][0]) @@ -66,15 +67,17 @@ markup = { ### print generate('bienvenue', {'From':'respbats@crans.org', 'To':'admin@genua.fr', 'lang_info':'English version below'}).as_string() ### or from a shell : python -c "import mail; print mail.generate('bienvenue', {'From':'respbats@crans.org', 'To':'admin@genua.fr', 'lang_info':'English version below'})" -def submessage(playload, type, charset='utf-8'): +def submessage(payload, type, charset='utf-8'): """Renvois un sous message à mettre dans un message multipart""" - submsg=MIMEText('', type, charset) + submsg = MIMEText('', type, charset) del(submsg['Content-Transfer-Encoding']) - submsg['Content-Transfer-Encoding']='8bit' - submsg.set_payload(playload) + submsg['Content-Transfer-Encoding'] = '8bit' + submsg.set_payload(payload) return submsg def get_lang(mail, part, lang, lang_fallback): + """Récupère le chemin vers le fichier à utiliser, en fonction de la + langue souhaitée""" for l in [lang, lang_fallback]: for ext in markup.keys(): if os.path.isfile(template_path + mail + '/' + part + '/' + l + '.' + ext): @@ -93,6 +96,8 @@ def gen_local_body(fname, params, lang): return templateEnv.get_template(fname).render(params) def body(mail, lang1, lang2, mk, params, charset): + """Génère le texte du mail, en deux langues, avec une extension `mk` donnée + """ ret = [] file1 = template_path + mail + '/body/' + lang1 file2 = template_path + mail + '/body/' + lang2 @@ -110,13 +115,18 @@ def body(mail, lang1, lang2, mk, params, charset): txt1 = gen_local_body(file1, params, lang1) txt2 = gen_local_body(file2, params, lang2) if mk != "html": - params_txt=dict(params) - params_txt.update({'body1': txt1, 'body2':txt2}) + params_txt = dict(params) + params_txt.update({'body1': txt1, 'body2': txt2}) txt = templateEnv.get_template(text_mutilang_template).render(params_txt) ret.append(submessage(txt.encode(charset), 'plain', charset)) if mk: # compute the html version - params_html=dict(params) - params_html.update({'lang1':lang1, 'lang2':lang2, 'body1': markup[mk](txt1), 'body2': markup[mk](txt2)}) + params_html = dict(params) + params_html.update({ + 'lang1':lang1, + 'lang2':lang2, + 'body1': markup[mk](txt1), + 'body2': markup[mk](txt2), + }) html = templateEnv.get_template(html_mutilang_template).render(params_html) ret.append(submessage(html.encode(charset), 'html', charset)) return ret @@ -146,8 +156,8 @@ def generate(mail, params, lang=default_language, lang_fallback=default_language if filename in ['From', 'To', 'Cc', 'Bcc']: msg[filename] = format_sender(txt, charset) else: - msg[filename]=Header(txt.encode(charset), charset) - msg['Date']=formatdate(localtime=True) + msg[filename] = Header(txt.encode(charset), charset) + msg['Date'] = formatdate(localtime=True) return msg @@ -193,6 +203,8 @@ def format_sender(sender, header_charset='utf-8'): @contextmanager def bugreport(): + """Context manager: Si erreur, renvoie un bugreport avec un traceback à + roots@.""" try: yield except Exception as exc: @@ -221,6 +233,7 @@ class ServerConnection(object): return self def sendmail(self, From, to, mail): + """Envoie un mail""" if os.getenv('DBG_MAIL', False): deb = os.getenv('DBG_MAIL') if '@' in deb: