mail.py: add un peu de doc
This commit is contained in:
parent
ffb4a1d94f
commit
a742a6847c
1 changed files with 23 additions and 10 deletions
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue