deconnexion2: fusionne mails notif upload_hard
Et on peut ainsi virer ce machin de templating dans config/
This commit is contained in:
parent
0d1eca2f8c
commit
18bcbd19ea
5 changed files with 29 additions and 89 deletions
|
@ -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"""
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
{{ proprio|name }} a été bridé
|
||||
{{ proprio|name }} a été bridé{% if nb_decos %} ({{ nb_decos }} fois ce mois){% endif %}
|
||||
|
|
|
@ -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 }}.
|
||||
|
|
|
@ -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."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue