deconnexion2: fusionne mails notif upload_hard

Et on peut ainsi virer ce machin de templating dans config/
This commit is contained in:
Daniel STAN 2015-04-17 18:26:57 +02:00
parent 0d1eca2f8c
commit 18bcbd19ea
5 changed files with 29 additions and 89 deletions

View file

@ -1,32 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" 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
To: %(to)s
Subject: %(proprio)s uploade
Content-Type: text/plain; charset="utf-8"
%(proprio)s uploade actuellement %(upload)s Mio.
--\u0020
Message créé par deconnexion.py"""
#: 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
Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?= %(nbdeco)d fois pour upload en un mois !
Content-Type: text/plain; charset="utf-8"
L'adhérent %(proprio)s a été bridé %(nbdeco)d fois pour upload en un mois !
Le PS a été généré et se trouve sur zamok :
%(ps)s
--\u0020
Message créé par deconnexion.py"""

View file

@ -28,11 +28,6 @@ hard = 8192 # Mio/24h glissantes
#: max déconnexions
max_decos = 7
#: envoyer des mails à disconnect@ en cas de dépassement soft ?
disconnect_mail_soft = False
#: envoyer des mails à disconnect@ en cas de dépassement hard ?
disconnect_mail_hard = True
#: expéditeur des mails de déconnexion
expediteur = "disconnect@crans.org"

View file

@ -1 +1 @@
{{ proprio|name }} a été bridé
{{ proprio|name }} a été bridé{% if nb_decos %} ({{ nb_decos }} fois ce mois){% endif %}

View file

@ -17,6 +17,12 @@ Une erreur a eu lieu lors de la génération de l'url, plus d'information :
{{ reco_url_error }}
{% endif %}
{% if fiche_deco %}
Cet adhérent a déjà été déconnecté {{ nb_decos }} fois ce mois.
Une fiche a été générée :
{{ fiche_deco }}
{% endif %}
--
Système de déconnexion, {{ mailer }}
Cron exécuté à {{ cron_date }}.

View file

@ -16,7 +16,6 @@ import datetime
import pytz
import cStringIO
import gestion.config.mails.upload as mails_upload
import gestion.affichage as affichage
import lc_ldap.shortcuts as shortcuts
import lc_ldap.objets as objets
@ -285,6 +284,28 @@ def upload_hard(proprio, elupload, elid, eltype, curseur, ldap):
sys.stderr.write("Blacklist de %s pour %s Mo échoué, %s\n" % (proprio.dn.split(',')[0], elupload, error))
return
# Vérification du nombre de déconnexions
#########################################
nb_decos = sum(
blacklist['type'] == u'autodisc_upload' and
int(blacklist['debut']) > stamp_debut - upload.periode_watch
for blacklist in proprio['blacklist']
)
if nb_decos >= upload.max_decos:
# Génération du fichier postscript
try:
fiche_deco = generate_ps('upload', proprio, ldap)
except Exception as error:
fiche_deco = u"""ERREUR lors de la génération.
Merci de regénérer manuellement la fiche avec la commande :
/usr/scripts/surveillance/fiche_deconnexion/generate.py --upload %s""" % \
(proprio.dn.split(',')[0],)
mail_data.update({
'nb_decos': nb_decos,
'fiche_deco': fiche_deco,
})
# On envoie un mail à l'adhérent
# On envoie un mail à disconnect
################################
@ -302,41 +323,6 @@ def upload_hard(proprio, elupload, elid, eltype, curseur, ldap):
else:
print corps
# Vérification du nombre de déconnexions
#########################################
nb_decos = len([
blacklist
for blacklist
in proprio['blacklist']
if int(blacklist['debut']) > stamp_debut - upload.periode_watch
and blacklist['type'] == u'autodisc_upload'
])
if DEBUG:
print nb_decos
if nb_decos >= upload.max_decos and not DEBUG:
# Génération du fichier postscript
try:
fichier_ps = generate_ps('upload', proprio, ldap)
except Exception as error:
fichier_ps = ("ERREUR lors de la génération. Merci de regénérer manuellement la fiche avec la commande :\n" + "/usr/scripts/surveillance/fiche_deconnexion/generate.py --upload %s" % (proprio.dn.split(',')[0],))
# Envoi du mail à disconnect
with mail_module.ServerConnection() as smtp_conn:
corps = mails_upload.message_disconnect_multi % {
'from': upload.expediteur,
'to': upload.expediteur,
'nbdeco': nb_decos,
'proprio': u" ".join((
unicode(proprio.get('prenom', [u''])[0]),
unicode(proprio.get('nom', [u''])[0]),
)
),
'ps': fichier_ps,
}
corps = corps.encode('utf-8')
smtp_conn.sendmail(upload.expediteur, upload.expediteur, corps)
def upload_soft(proprio, elupload, elid, eltype, curseur):
"""Envoit un mail et stocke l'info"""
# On inscrit l'ip dans la table des avertis soft
@ -361,21 +347,6 @@ def upload_soft(proprio, elupload, elid, eltype, curseur):
else:
print corps
# On envoie un mail à disconnect
################################
if upload.disconnect_mail_soft and not DEBUG:
corps = mails_upload.message_disconnect_soft % {
'from': upload.expediteur,
'to': upload.expediteur,
'upload': "%.2f" % (elupload,),
'proprio': u" ".join(
unicode(proprio.get('prenom', [u''])[0]),
unicode(proprio.get('nom', [u''])[0]),
),
}
corps = corps.encode('utf-8')
smtp_connect.sendmail(upload.expediteur, upload.expediteur, corps)
def single_check(eltype, elid, elupload, ldap, curseur):
"""Fait un test sur un utilisateur, et
applique une blackliste ou envoit un averto."""