utils/sendmail, deconnexion.py et config/mails/upload.py : envoie de mail avec une classe pour instancier les messages
Idéalement, il faudrait passer tous les mails de la conf sous ce format et les instancier tous comme ça. Ça permet d'encoder proprement les headers avec éventuellement des variables dedans.
This commit is contained in:
parent
4dd12fa145
commit
20fdae6ac2
3 changed files with 37 additions and 49 deletions
|
@ -3,6 +3,10 @@
|
|||
|
||||
from email.header import Header
|
||||
|
||||
import sys
|
||||
sys.path.append("/usr/scripts")
|
||||
from utils.sendmail import Message
|
||||
|
||||
""" Templates des mails envoyés en cas d'upload. """
|
||||
|
||||
#: Envoyé à l'adhérent en cas de dépassement de la limite soft
|
||||
|
@ -45,44 +49,6 @@ pas branchées sur le CRANS.
|
|||
Disconnect team""" % {'subject': Header('[Cr@ns] Attention !', 'utf-8')}
|
||||
|
||||
|
||||
class Message_adherent_soft(object):
|
||||
template = u"""Bonjour %%(proprio)s,
|
||||
|
||||
Nous t'informons que ta (tes) machine(s) envoie(nt) une quantité
|
||||
importante de données vers l'extérieur (%%(upload)s Mo en 24 heures).
|
||||
|
||||
*Ce message t'est envoyé à titre informatif, il ne te sanctionne pas.*
|
||||
|
||||
Il signifie que tu as envoyé plus de 300 Mo au cours des dernières 24
|
||||
heures. Cela peut venir du fait que, *par exemple*, tu essaies
|
||||
d'envoyer des fichiers de grosse taille à l'extérieur de la zone
|
||||
crans, ou encore que tu as fait une utilisation importante de
|
||||
logiciels envoyant une très grande quantité de petites données
|
||||
(vidéo-conférence par exemple). Il peut y avoir d'autres raisons.
|
||||
|
||||
|
||||
Si cela continuait, et que tu dépassais la limite acceptable des 3789
|
||||
Mo sur 24 heures, ton débit serais automatiquement fortement limité pour
|
||||
une durée de 24 heures. Il t'appartient donc de surveiller cela de
|
||||
plus près et de faire en sorte que tes machines n'uploadent pas de
|
||||
manière excessive à l'avenir.
|
||||
|
||||
|
||||
Pour plus d'informations, tu peux consulter la page:
|
||||
http://wiki.crans.org/VieCrans/DéconnexionPourUpload
|
||||
|
||||
Si tu as des questions, contacte disconnect@crans.org
|
||||
|
||||
N.B. : L'upload consiste en l'envoi de données vers des machines n'étant
|
||||
pas branchées sur le CRANS.
|
||||
|
||||
--\u0020
|
||||
Disconnect team"""
|
||||
|
||||
def __init__(self):
|
||||
self.subject = u"[Cr@ns] Attention !"
|
||||
|
||||
|
||||
#: Envoyé à l'adhérent en cas de dépassement de la limite hard
|
||||
message_hard = u"""From: %%(from)s
|
||||
To: %%(to)s
|
||||
|
@ -121,13 +87,9 @@ Content-Type: text/plain; charset="utf-8"
|
|||
--\u0020
|
||||
Message créé par deconnexion.py"""
|
||||
|
||||
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard
|
||||
message_disconnect_hard = u"""From: %(from)s
|
||||
To: %(to)s
|
||||
Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?=
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
%(proprio)s (%(id)s) a été limité en débit montant du fait d'un
|
||||
class Message_disconnect_hard(Message):
|
||||
"""Envoyé à la ML disconnect@ en cas de dépassement de la limite hard"""
|
||||
template = u"""%(proprio)s (%(id)s) a été limité en débit montant du fait d'un
|
||||
upload excessif (%(upload)s Mo).
|
||||
|
||||
Ses machines ont été aperçues pour la dernière fois à ces endroits :
|
||||
|
@ -136,7 +98,16 @@ Ses machines ont été aperçues pour la dernière fois à ces endroits :
|
|||
La chambre de l'adhérent est %(chambre)s.
|
||||
|
||||
--\u0020
|
||||
Message créé par deconnexion.py"""
|
||||
Message créé par deconnexion.py
|
||||
|
||||
""" + (" __1__"+10*" "+3*"%"+","+7*"%"+"\n \_._/"+11*" "+",'%% \\-*"+7*"%"+"\n ( ^ )"+5*" "+";"+5*"%"+"*% _%%%%\"\n"+2*" "+"`='|\."+4*" "+",%%%"+7*" "+"\(_.*%%%%.\n"+4*" "+"/ |"+4*" "+"% *%%, ,"+4*"%"+"*("+4*" "+"'\n (/ | %^"+5*" "+",*%%% )\|,%%*%,_\n |__, |"+7*" "+"*%"+4*" "+"\/ #).-\"*%%*\n | |"+11*" "+"_.) ,/ *%,\n | | "+9*"_"+"/)#("+12*"_"+"\n /___| |"+25*"_"+"|\n ===").replace("%", "%%")
|
||||
|
||||
def __init__(self, emetteur, destinataires, proprio, id, upload, mdc, chambre):
|
||||
self.proprio = proprio
|
||||
self.id, self.upload, self.mdc, self.chambre = id, upload, mdc, chambre
|
||||
self.objet = u"%s a été bridé" % (proprio)
|
||||
self.corps = self.template
|
||||
super(Message_disconnect_hard, self).__init__(emetteur, destinataires, self.objet, self.corps)
|
||||
|
||||
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois
|
||||
message_disconnect_multi = u"""From: %(from)s
|
||||
|
|
|
@ -258,9 +258,8 @@ for elupload, eltype, elid in uploadeurs:
|
|||
theid = "cid="
|
||||
else:
|
||||
theid = "aid="
|
||||
corps = config.mails.upload.message_disconnect_hard % {'from': upload.expediteur, 'to': upload.expediteur, 'upload': elupload, 'proprio': proprio.Nom(), 'mdc': mdcf, 'chambre': proprio.chbre(), 'id': theid + proprio.id()}
|
||||
corps = corps.encode('utf-8')
|
||||
mail.sendmail(upload.expediteur, upload.expediteur, corps)
|
||||
mail = config.mails.upload.Message_disconnect_hard(upload.expediteur, upload.expediteur, proprio=proprio.Nom(), id=theid + proprio.id(), upload=elupload, mdc=mdcf, chambre=proprio.chbre())
|
||||
mail.send()
|
||||
|
||||
# Vérification du nombre de déconnexions
|
||||
#########################################
|
||||
|
|
|
@ -43,6 +43,24 @@ def sendmail(emetteur, destinataires, objet, message, cc=[], more_headers={}, de
|
|||
mail = create_mail(emetteur, destinataires, objet, message, cc, more_headers)
|
||||
actually_sendmail(emetteur, destinataires, mail, debug)
|
||||
|
||||
class Message(object):
|
||||
"""Message pré-formaté à envoyer à un adhérent ou une ML"""
|
||||
def __init__(self, emetteur, destinataires, objet, corps, cc=[], more_headers={}):
|
||||
self.emetteur = emetteur
|
||||
self.destinataires = destinataires
|
||||
self.objet = objet
|
||||
self.cc = cc
|
||||
self.more_headers = more_headers
|
||||
self.corps = corps % self.__dict__
|
||||
|
||||
def mail(self):
|
||||
"""Fabrique le mail"""
|
||||
return create_mail(self.emetteur, self.destinataires, self.objet,
|
||||
self.corps, self.cc, self.more_headers)
|
||||
|
||||
def send(self):
|
||||
"""Envoie le mail"""
|
||||
return actually_sendmail(self.emetteur, self.destinataires, self.mail())
|
||||
|
||||
if __name__ == "__main__":
|
||||
print "Exemple d'utilisation :"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue