[chambres_vides.py, config.py] On envoie un mail aux adhérent pour les prévenir qu'on va bientôt supprimer leur machines.

Ignore-this: 3a82abab8e7e49a0bfc30096319a33d3

darcs-hash:20120920030050-2c9c1-fd4b1f272d082d57b5fd3f1e7e601b19cde021f6.gz
This commit is contained in:
Vincent Le Gallic 2012-09-20 05:00:50 +02:00
parent 46e9dab74a
commit 49fb17b8d5
2 changed files with 51 additions and 25 deletions

View file

@ -10,40 +10,61 @@ import ldap_crans
conn = ldap_crans.CransLdap() conn = ldap_crans.CransLdap()
import sys import sys
sendmails = False
if "--mail-all" in sys.argv:
sendmails = True
import email.Header
import os import os
import config import config
year = config.ann_scol year = config.ann_scol
delai = 0 # jours avant d'être considéré déserteur delai = config.upload.demenagement_delai
# On récupère ceux qui n'ont pas payé cette année # On récupère ceux qui n'ont pas payé cette année
bad_boys_e_s = conn.search('chbre=????&paiement=%d&paiement!=%d' % (year-1,year))['adherent'] bad_boys_e_s = conn.search('chbre=????&paiement=%d&paiement!=%d' % (year-1,year))['adherent']
timeout = time.time() - 3600*24*delai now = time.time()
header_printed = False
to_print = [] to_print = []
for clandestin in bad_boys_e_s: for clandestin in bad_boys_e_s:
# On cherche la dernière fois qu'il s'est retrouvé en chambre ???? # On cherche la dernière fois qu'il s'est retrouvé en chambre ????
for l in clandestin.historique(): for l in clandestin.historique():
# On récupère la date du dernier changement de chambre # On récupère la date du dernier changement de chambre
# (l'historique est enregistré par ordre chronologique) # (l'historique est enregistré par ordre chronologique)
x = re.match("(.*),.* : chbre \(.*-> \?\?\?\?\)",l) x = re.match("(.*),.* : chbre \((.*) -> \?\?\?\?\)",l)
if x <> None: if x <> None:
d = x.group(1) kickout_date = x.group(1)
exchambre = x.group(2)
machine_liste = clandestin.machines()
# On lui accorde un délai # On lui accorde un délai
if timeout < time.mktime(time.strptime(d,'%d/%m/%Y %H:%M')): kickout_date = time.mktime(time.strptime(kickout_date, "%d/%m/%Y %H:%M"))
continue delta = now - kickout_date
ttl = delai*86400 - delta
for m in clandestin.machines(): if ttl > 0:
# On n'a pas envie d'essayer de supprimer une machine qui a une blackliste if sendmails and machine_liste != []:
if len(m.blacklist_actif()) > 0: # On lui envoie un mail pour le prévenir
continue to = clandestin.mail()
to_print.append( (clandestin.id(), m.ip(), m.id(), m.nom()) ) if not "@" in to:
##m2 = conn.search('mid=%s' % m.id(),mode='w')['machine'][0] to += "@crans.org"
##m2.delete('Adherent sans chambre valide depuis %d jours' % delai) mail = config.upload.message_demenagement % {"from" : "respbats@crans.org",
"chambre" : exchambre,
"jours" : int(ttl/86400) + 1,
"to" : to}
mailer = os.popen("/usr/sbin/sendmail -t", "w")
mailer.write(mail.encode("utf-8") + "\n.")
mailer.close()
else:
for m in machine_liste:
# On n'a pas envie d'essayer de supprimer une machine qui a une blackliste
if len(m.blacklist_actif()) > 0:
continue
to_print.append( (clandestin.id(), m.ip(), m.id(), m.nom()) )
m2 = conn.search('mid=%s' % m.id(),mode='w')['machine'][0]
m2.delete('Adherent sans chambre valide depuis %d jours' % delai)
if to_print != []: if to_print != []:
# Il s'est passé quelque chose, donc on envoie un mail # Il s'est passé quelque chose, donc on envoie un mail
@ -59,7 +80,7 @@ if to_print != []:
for aid, ip, mid, hostname in to_print: for aid, ip, mid, hostname in to_print:
message += template % (aid, ip, mid, hostname) message += template % (aid, ip, mid, hostname)
message += tiret_line message += tiret_line
headers = u"From: respbats@crans.org\nSubject: Machines supprimées pour chambre invalide\n" headers = u"From: respbats@crans.org\nSubject: %s\n" % email.Header.make_header([("Machines supprimées pour chambre invalide", "utf8")]).encode()
headers += u"Content-Type: text/plain; charset=UTF-8\n" headers += u"Content-Type: text/plain; charset=UTF-8\n"
headers += u"To: respbats@crans.org\n" headers += u"To: respbats@crans.org\n"
mail = headers + "\n" + message mail = headers + "\n" + message

View file

@ -10,6 +10,9 @@ from time import localtime
# Fichier généré # Fichier généré
from config_srv import adm_only, role from config_srv import adm_only, role
# Pour les emails
import email.Header
##### Gestion des câblages ##### Gestion des câblages
# Selon la date, on met : # Selon la date, on met :
# -ann_scol : Année scolaire en cours # -ann_scol : Année scolaire en cours
@ -278,22 +281,24 @@ Le PS a été généré et se trouve sur zamok :
--\u0020 --\u0020
Message créé par deconnexion.py""" Message créé par deconnexion.py"""
demenagement_delai = 8
message_demenagement = u"""From: %(from)s # Nombre de jours après le passage en chambre ???? où on supprime les machines
To: %(to)s message_demenagement = u"""From: %%(from)s
Subject: =?iso-8859-1?Q?D=E9m=E9nagement=20non=20d=E9clar=E9?= To: %%(to)s
Subject: %s
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
Bonjour, Bonjour,
Il semble que tu étais inscrit dans la chambre %(chambre), mais un Il semble que tu étais inscrit dans la chambre %%(chambre)s, mais un
autre adhérent s'y est inscrit, ce qui suppose que tu n'y es plus. autre adhérent s'y est inscrit, ce qui suppose que tu n'y es plus.
Pourrais tu nous préciser ta nouvelle chambre ou adresse stp ? Pourrais-tu passer à une permanence afin de régulariser ta situation ?
Si tu es parti du campus, souhaites-tu garder tes machines ?
Si tu ne nous donnes pas de nouvelles d'ici %%(jours)s jours, tes machines seront
automatiquement effacées de notre base de données.
--\u0020 --\u0020
Merci par avance, Les membres actifs du Crans""" % email.Header.make_header([("Déménagement non déclaré", "utf8")])
Les membres actifs du Crans"""
# Classe pour les paramètres du firewall # # Classe pour les paramètres du firewall #