From 18bcbd19ea98b05329652d50e1ef8b1b24c1f651 Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Fri, 17 Apr 2015 18:26:57 +0200 Subject: [PATCH] deconnexion2: fusionne mails notif upload_hard Et on peut ainsi virer ce machin de templating dans config/ --- gestion/config/mails/upload.py | 32 -------- gestion/config/upload.py | 5 -- gestion/mail/template/upload_notif/Subject/fr | 2 +- gestion/mail/template/upload_notif/body/fr | 6 ++ surveillance/deconnexion2.py | 73 ++++++------------- 5 files changed, 29 insertions(+), 89 deletions(-) delete mode 100644 gestion/config/mails/upload.py diff --git a/gestion/config/mails/upload.py b/gestion/config/mails/upload.py deleted file mode 100644 index 43d646eb..00000000 --- a/gestion/config/mails/upload.py +++ /dev/null @@ -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""" diff --git a/gestion/config/upload.py b/gestion/config/upload.py index a6a7aab0..94992284 100644 --- a/gestion/config/upload.py +++ b/gestion/config/upload.py @@ -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" diff --git a/gestion/mail/template/upload_notif/Subject/fr b/gestion/mail/template/upload_notif/Subject/fr index 24cdb9b8..b0ddf980 100644 --- a/gestion/mail/template/upload_notif/Subject/fr +++ b/gestion/mail/template/upload_notif/Subject/fr @@ -1 +1 @@ -{{ proprio|name }} a été bridé +{{ proprio|name }} a été bridé{% if nb_decos %} ({{ nb_decos }} fois ce mois){% endif %} diff --git a/gestion/mail/template/upload_notif/body/fr b/gestion/mail/template/upload_notif/body/fr index c12c410f..5a4fec11 100644 --- a/gestion/mail/template/upload_notif/body/fr +++ b/gestion/mail/template/upload_notif/body/fr @@ -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 }}. diff --git a/surveillance/deconnexion2.py b/surveillance/deconnexion2.py index 569a9950..151405d6 100755 --- a/surveillance/deconnexion2.py +++ b/surveillance/deconnexion2.py @@ -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."""