Commit 3cab7f99 authored by Daniel STAN's avatar Daniel STAN

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)
parent 7340729f
#!/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
......
Envoyé sur disconnect lors d'une déconnexion (bridage) pour upload
{{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
#########################################
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment