deconnexion.py: rationalisation mails
Le mail de déco ET le mail de notification à disconnect sont templatisés et utilisent le même jeu de données (ça fait moins de code)
This commit is contained in:
parent
7340729fdc
commit
3cab7f9980
8 changed files with 67 additions and 57 deletions
|
@ -1,13 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
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. """
|
||||
""" Templates des mails envoyés en cas d'upload.
|
||||
TODO: à migrer dans /usr/scripts/gestion/mail/templates
|
||||
"""
|
||||
|
||||
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite soft (désactivé)
|
||||
message_disconnect_soft = u"""From: %(from)s
|
||||
|
@ -21,32 +17,6 @@ Content-Type: text/plain; charset="utf-8"
|
|||
--\u0020
|
||||
Message créé par deconnexion.py"""
|
||||
|
||||
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 Mio).
|
||||
|
||||
Ses machines ont été aperçues pour la dernière fois à ces endroits :
|
||||
%(mdc)s
|
||||
|
||||
La chambre de l'adhérent est %(chambre)s.
|
||||
|
||||
analyse.py devrait bientôt avoir généré un fichier que vous pourrez lui envoyer en cas de demande. Le fichier sera dans le dossier /usr/scripts/var/analyse/.
|
||||
|
||||
Test: url de reconnexion: %(reco_url)s.
|
||||
|
||||
--\u0020
|
||||
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, reco_url):
|
||||
self.proprio = proprio
|
||||
self.id, self.upload, self.mdc, self.chambre, self.reco_url = id, upload, mdc, chambre, reco_url
|
||||
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
|
||||
To: %(to)s
|
||||
|
|
1
gestion/mail/template/upload_notif/From/fr
Normal file
1
gestion/mail/template/upload_notif/From/fr
Normal file
|
@ -0,0 +1 @@
|
|||
{{from}}
|
1
gestion/mail/template/upload_notif/README
Normal file
1
gestion/mail/template/upload_notif/README
Normal file
|
@ -0,0 +1 @@
|
|||
Envoyé sur disconnect lors d'une déconnexion (bridage) pour upload
|
1
gestion/mail/template/upload_notif/Subject/fr
Normal file
1
gestion/mail/template/upload_notif/Subject/fr
Normal file
|
@ -0,0 +1 @@
|
|||
{{ proprio }} a été bridé
|
1
gestion/mail/template/upload_notif/To/fr
Normal file
1
gestion/mail/template/upload_notif/To/fr
Normal file
|
@ -0,0 +1 @@
|
|||
{{to}}
|
1
gestion/mail/template/upload_notif/X-Mailer/fr
Normal file
1
gestion/mail/template/upload_notif/X-Mailer/fr
Normal file
|
@ -0,0 +1 @@
|
|||
{{ mailer }}
|
21
gestion/mail/template/upload_notif/body/fr
Normal file
21
gestion/mail/template/upload_notif/body/fr
Normal file
|
@ -0,0 +1,21 @@
|
|||
{{proprio}} ({{id}}) a été limité en débit montant du fait d'un
|
||||
upload excessif ({{upload}} Mio).
|
||||
|
||||
Ses machines ont été aperçues pour la dernière fois à ces endroits :
|
||||
{{mdc}}
|
||||
|
||||
La chambre de l'adhérent est {{chambre}}.
|
||||
|
||||
analyse.py devrait bientôt avoir généré un fichier que vous pourrez lui envoyer
|
||||
en cas de demande. Le fichier sera dans le dossier /usr/scripts/var/analyse/.
|
||||
|
||||
{% if reco_url %}
|
||||
Une url de reconnexion a été envoyée à l'adhérent :
|
||||
{{ reco_url }}
|
||||
{% else %}
|
||||
Une erreur a eu lieu lors de la génération de l'url, plus d'information :
|
||||
{{ reco_url_error }}
|
||||
{% endif %}
|
||||
|
||||
--
|
||||
Système de déconnexion, {{ mailer }}
|
|
@ -19,8 +19,8 @@ import smtplib
|
|||
from time import *
|
||||
|
||||
from gestion.config import NETs, plage_ens, prefix
|
||||
from gestion.config import upload as config_upload
|
||||
import gestion.config.mails.upload as upload
|
||||
from gestion.config import upload as upload
|
||||
import gestion.config.mails.upload as mails_upload
|
||||
from gestion.ldap_crans import crans_ldap
|
||||
from gestion.ldap_crans import MachineFixe
|
||||
|
||||
|
@ -176,12 +176,44 @@ for elupload, eltype, elid in uploadeurs:
|
|||
|
||||
mdcf = tableau(macs_dates_chambres, ('mac', 'date', 'chambre'), (20, 21, 7), ('c', 'c', 'c'))
|
||||
|
||||
# Début de remplissage du mail
|
||||
##############################
|
||||
if eltype == "club":
|
||||
theid = "cid="
|
||||
else:
|
||||
theid = "aid="
|
||||
theid += proprio.id()
|
||||
|
||||
# Test: validation_url('upload')
|
||||
try:
|
||||
data = {'dn': theid,
|
||||
'blid': len(proprio.blacklist())}
|
||||
reco_url = mail_module.validation_url('upload', data)
|
||||
reco_url_error = ""
|
||||
except Exception as e:
|
||||
reco_url_error = "[[erreur de génération: %r]]" % e
|
||||
reco_url = ""
|
||||
|
||||
mail_data = {
|
||||
'from': upload.expediteur,
|
||||
'to': proprio.email(),
|
||||
'upload': "%.2f" % (elupload,),
|
||||
'proprio': proprio.Nom(),
|
||||
'lang_info':'English version below',
|
||||
'mdc': mdcf,
|
||||
'chambre': proprio.chbre(),
|
||||
'id': theid,
|
||||
'reco_url': reco_url,
|
||||
'reco_url_error': reco_url_error,
|
||||
}
|
||||
|
||||
# On sanctionne
|
||||
###############
|
||||
debut = int(time())
|
||||
fin = debut + 24*3600
|
||||
orig = strftime("%Y/%m/%d %H:%M:%S", localtime(debut - 86400))
|
||||
end = strftime("%Y/%m/%d %H:%M:%S", localtime(debut))
|
||||
|
||||
try:
|
||||
proprio.blacklist([debut, fin, 'autodisc_upload', "Déconn auto. %s Mo" % elupload])
|
||||
proprio.save()
|
||||
|
@ -195,34 +227,16 @@ for elupload, eltype, elid in uploadeurs:
|
|||
|
||||
# On envoie un mail à l'adhérent
|
||||
################################
|
||||
if eltype == "club":
|
||||
theid = "cid="
|
||||
else:
|
||||
theid = "aid="
|
||||
theid += proprio.id()
|
||||
|
||||
# Test: validation_url('upload')
|
||||
try:
|
||||
data = {'dn': theid,
|
||||
'blid': len(proprio.blacklist())-1}
|
||||
reco_url = mail_module.validation_url('upload', data)
|
||||
except Exception as e:
|
||||
reco_url = "[[erreur de génération: %r]]" % e
|
||||
|
||||
mail = connectsmtp()
|
||||
|
||||
corps = mail_module.generate('upload_hard', {'from': upload.expediteur, 'to': proprio.email(), 'upload': "%.2f" % (elupload,), 'proprio': proprio.Nom(), 'lang_info':'English version below'}).as_string()
|
||||
corps = mail_module.generate('upload_hard', mail_data).as_string()
|
||||
mail.sendmail(upload.expediteur, proprio.email(), corps)
|
||||
|
||||
# On envoie un mail à disconnect
|
||||
################################
|
||||
if upload.disconnect_mail_hard:
|
||||
mail_disconnect_hard = mails_upload.Message_disconnect_hard(upload.expediteur,
|
||||
upload.expediteur, proprio=proprio.Nom(), id=theid,
|
||||
upload="%.2f" % (elupload,), mdc=mdcf, chambre=proprio.chbre(),
|
||||
reco_url=reco_url,
|
||||
)
|
||||
mail_disconnect_hard.send()
|
||||
mail_data['to'] = upload.expediteur
|
||||
corps = mail_module.generate('upload_notif', mail_data).as_string()
|
||||
mail.sendmail(upload.expediteur, upload.expediteur, corps)
|
||||
|
||||
# Vérification du nombre de déconnexions
|
||||
#########################################
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue