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)
|
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
|
||||||
|
@ -110,13 +115,18 @@ def body(mail, lang1, lang2, mk, params, charset):
|
||||||
txt1 = gen_local_body(file1, params, lang1)
|
txt1 = gen_local_body(file1, params, lang1)
|
||||||
txt2 = gen_local_body(file2, params, lang2)
|
txt2 = gen_local_body(file2, params, lang2)
|
||||||
if mk != "html":
|
if mk != "html":
|
||||||
params_txt=dict(params)
|
params_txt = dict(params)
|
||||||
params_txt.update({'body1': txt1, 'body2':txt2})
|
params_txt.update({'body1': txt1, 'body2': txt2})
|
||||||
txt = templateEnv.get_template(text_mutilang_template).render(params_txt)
|
txt = templateEnv.get_template(text_mutilang_template).render(params_txt)
|
||||||
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
|
||||||
|
@ -146,8 +156,8 @@ def generate(mail, params, lang=default_language, lang_fallback=default_language
|
||||||
if filename in ['From', 'To', 'Cc', 'Bcc']:
|
if filename in ['From', 'To', 'Cc', 'Bcc']:
|
||||||
msg[filename] = format_sender(txt, charset)
|
msg[filename] = format_sender(txt, charset)
|
||||||
else:
|
else:
|
||||||
msg[filename]=Header(txt.encode(charset), charset)
|
msg[filename] = Header(txt.encode(charset), charset)
|
||||||
msg['Date']=formatdate(localtime=True)
|
msg['Date'] = formatdate(localtime=True)
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue