mail.py: add un peu de doc

This commit is contained in:
Daniel STAN 2015-04-05 14:42:18 +02:00
parent ffb4a1d94f
commit a742a6847c

View file

@ -48,6 +48,7 @@ def format_date(d):
return d.strftime('%A, %B %d %Y').decode(encoding) return d.strftime('%A, %B %d %Y').decode(encoding)
def given_name(adh): def given_name(adh):
"""Renvoie le joli nom d'un adhérent"""
if 'club' in adh['objectClass']: if 'club' in adh['objectClass']:
return u'Club %s' % unicode(adh['nom'][0]) return u'Club %s' % unicode(adh['nom'][0])
return unicode(adh['prenom'][0]) + " " + 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() ### 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'})" ### 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""" """Renvois un sous message à mettre dans un message multipart"""
submsg = MIMEText('', type, charset) submsg = MIMEText('', type, charset)
del(submsg['Content-Transfer-Encoding']) del(submsg['Content-Transfer-Encoding'])
submsg['Content-Transfer-Encoding'] = '8bit' submsg['Content-Transfer-Encoding'] = '8bit'
submsg.set_payload(playload) submsg.set_payload(payload)
return submsg return submsg
def get_lang(mail, part, lang, lang_fallback): 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 l in [lang, lang_fallback]:
for ext in markup.keys(): for ext in markup.keys():
if os.path.isfile(template_path + mail + '/' + part + '/' + l + '.' + ext): 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) return templateEnv.get_template(fname).render(params)
def body(mail, lang1, lang2, mk, params, charset): 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 = [] ret = []
file1 = template_path + mail + '/body/' + lang1 file1 = template_path + mail + '/body/' + lang1
file2 = template_path + mail + '/body/' + lang2 file2 = template_path + mail + '/body/' + lang2
@ -116,7 +121,12 @@ def body(mail, lang1, lang2, mk, params, charset):
ret.append(submessage(txt.encode(charset), 'plain', charset)) ret.append(submessage(txt.encode(charset), 'plain', charset))
if mk: # compute the html version if mk: # compute the html version
params_html = dict(params) params_html = dict(params)
params_html.update({'lang1':lang1, 'lang2':lang2, 'body1': markup[mk](txt1), 'body2': markup[mk](txt2)}) 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) html = templateEnv.get_template(html_mutilang_template).render(params_html)
ret.append(submessage(html.encode(charset), 'html', charset)) ret.append(submessage(html.encode(charset), 'html', charset))
return ret return ret
@ -193,6 +203,8 @@ def format_sender(sender, header_charset='utf-8'):
@contextmanager @contextmanager
def bugreport(): def bugreport():
"""Context manager: Si erreur, renvoie un bugreport avec un traceback à
roots@."""
try: try:
yield yield
except Exception as exc: except Exception as exc:
@ -221,6 +233,7 @@ class ServerConnection(object):
return self return self
def sendmail(self, From, to, mail): def sendmail(self, From, to, mail):
"""Envoie un mail"""
if os.getenv('DBG_MAIL', False): if os.getenv('DBG_MAIL', False):
deb = os.getenv('DBG_MAIL') deb = os.getenv('DBG_MAIL')
if '@' in deb: if '@' in deb: