Modernisation et reparation de controle charte MA pour le secretaire
This commit is contained in:
parent
8d250bdc27
commit
a2a8538b61
7 changed files with 61 additions and 46 deletions
|
@ -1,7 +1,8 @@
|
||||||
#! /usr/bin/env python
|
#!/bin/bash /usr/scripts/python.sh
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
|
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
|
||||||
|
# Remanié en 2015 par Gabriel Détraz
|
||||||
# Licence : GPLv2
|
# Licence : GPLv2
|
||||||
|
|
||||||
u"""Ce script permet au secrétaire de repérer plus facilement les membres
|
u"""Ce script permet au secrétaire de repérer plus facilement les membres
|
||||||
|
@ -21,22 +22,23 @@ Les commandes sont :
|
||||||
|
|
||||||
|
|
||||||
import sys, os, re
|
import sys, os, re
|
||||||
sys.path.append('/usr/scripts/gestion')
|
|
||||||
import config
|
|
||||||
import config.mails
|
|
||||||
from email_tools import send_email, parse_mail_template
|
|
||||||
|
|
||||||
# Fonctions d'affichage
|
# Fonctions d'affichage
|
||||||
from affich_tools import coul, tableau, prompt, cprint
|
from gestion.affich_tools import coul, tableau, prompt, cprint
|
||||||
|
|
||||||
|
from utils.sendmail import actually_sendmail
|
||||||
|
from gestion import mail
|
||||||
|
|
||||||
# Importation de la base de données
|
# Importation de la base de données
|
||||||
from ldap_crans import crans_ldap, ann_scol
|
from lc_ldap import shortcuts
|
||||||
db = crans_ldap()
|
|
||||||
|
|
||||||
# Lors des tests, on m'envoie tous les mails !
|
# Lors des tests, on m'envoie tous les mails !
|
||||||
from socket import gethostname
|
from socket import gethostname
|
||||||
debug = False
|
debug = False
|
||||||
|
|
||||||
|
# Conn à la db
|
||||||
|
ldap = shortcuts.lc_ldap_admin()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 3 and sys.argv[-2] == '--debug':
|
if len(sys.argv) > 3 and sys.argv[-2] == '--debug':
|
||||||
debug = sys.argv[-1]
|
debug = sys.argv[-1]
|
||||||
|
@ -65,33 +67,28 @@ def _controle_interactif_adherents(liste):
|
||||||
|
|
||||||
nb = 0
|
nb = 0
|
||||||
for a in liste:
|
for a in liste:
|
||||||
valeur = a.charteMA()
|
valeur = a['charteMA']
|
||||||
if valeur:
|
if valeur:
|
||||||
suggestion = 'o'
|
suggestion = 'o'
|
||||||
else:
|
else:
|
||||||
suggestion = 'n'
|
suggestion = 'n'
|
||||||
ok = prompt(u'[%3d] %s, %s (%s) ?'
|
ok = prompt(u'[%3d] %s, %s (%s) ?'
|
||||||
% (restant, a.nom(), a.prenom(), a.id()), suggestion, '').lower()
|
% (restant, a['nom'][0], a['prenom'][0], a['aid'][0]), suggestion, '').lower()
|
||||||
restant -= 1
|
restant -= 1
|
||||||
if ok == 'o':
|
if ok == 'o':
|
||||||
nb += 1
|
nb += 1
|
||||||
if a.charteMA() == False :
|
if a['charteMA'] != True :
|
||||||
modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0]
|
modifiable = ldap.search(u'aid=%s' % a['aid'][0], mode='rw')
|
||||||
if modifiable._modifiable:
|
try:
|
||||||
modifiable.charteMA(True)
|
with modifiable[0] as adh:
|
||||||
cprint(modifiable.save())
|
adh['charteMA']=True
|
||||||
else:
|
adh.history_gen()
|
||||||
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
|
adh.save()
|
||||||
elif ok == 'n':
|
cprint(u'Controle OK')
|
||||||
if a.charteMA() == True:
|
except:
|
||||||
modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0]
|
cprint(u'Adhérent %s locké, réessayer plus tard' % a['nom'][0], 'rouge')
|
||||||
if modifiable._modifiable:
|
elif ok != 'n':
|
||||||
modifiable.charteMA(False)
|
cprint(u'Arrêt du contrôle des membres actifs', 'rouge')
|
||||||
cprint(modifiable.save())
|
|
||||||
else:
|
|
||||||
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
|
|
||||||
else:
|
|
||||||
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
|
|
||||||
break
|
break
|
||||||
|
|
||||||
return nb, len(liste)-nb
|
return nb, len(liste)-nb
|
||||||
|
@ -99,12 +96,12 @@ def _controle_interactif_adherents(liste):
|
||||||
|
|
||||||
def liste_charte_nok():
|
def liste_charte_nok():
|
||||||
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
|
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
|
||||||
liste_actifs = db.search('droits=*')['adherent']
|
liste_actifs = ldap.search(u'droits=*')
|
||||||
liste_nok = []
|
liste_nok = []
|
||||||
for adh in liste_actifs:
|
for adh in liste_actifs:
|
||||||
if (len([droit for droit in adh.droits()
|
if (len([droit for droit in adh['droits']
|
||||||
if droit not in ['Multimachines', 'Webradio']]) > 0
|
if droit not in ['Multimachines', 'Webradio']]) > 0
|
||||||
and not adh.charteMA()):
|
and not adh['charteMA']):
|
||||||
liste_nok.append(adh)
|
liste_nok.append(adh)
|
||||||
return liste_nok
|
return liste_nok
|
||||||
|
|
||||||
|
@ -116,7 +113,7 @@ def controle_interactif():
|
||||||
|
|
||||||
# Tri de la liste des adhérents selon nom, prénom
|
# Tri de la liste des adhérents selon nom, prénom
|
||||||
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
|
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
|
||||||
todo_list.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom())))
|
todo_list.sort(lambda x, y: cmp((x['nom'][0], x['prenom'][0]), (y['nom'][0], y['prenom'][0])))
|
||||||
|
|
||||||
# Zou !
|
# Zou !
|
||||||
ok, nok = _controle_interactif_adherents(todo_list)
|
ok, nok = _controle_interactif_adherents(todo_list)
|
||||||
|
@ -132,19 +129,18 @@ def spammer():
|
||||||
todo_list = liste_charte_nok()
|
todo_list = liste_charte_nok()
|
||||||
|
|
||||||
if todo_list:
|
if todo_list:
|
||||||
from smtplib import SMTP
|
|
||||||
connexion = SMTP()
|
|
||||||
if gethostname().split(".")[0] == 'redisdead':
|
|
||||||
connexion.connect("localhost")
|
|
||||||
else: connexion.connect("redisdead.crans.org")
|
|
||||||
print "Envoi des mails de rappel pour les chartes des membres actifs"
|
print "Envoi des mails de rappel pour les chartes des membres actifs"
|
||||||
|
|
||||||
for adh in todo_list:
|
for adh in todo_list:
|
||||||
to = adh.email()
|
to = adh['mail'][0]
|
||||||
print to
|
print to
|
||||||
if not debug:
|
if not debug:
|
||||||
data = config.mails.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
|
From = u"ca@crans.org"
|
||||||
connexion.sendmail("ca@crans.org",to,data.encode('utf-8'))
|
data=mail.generate('missing_charte_MA', {
|
||||||
|
'To': to,
|
||||||
|
'From': From,
|
||||||
|
})
|
||||||
|
actually_sendmail(u'ca@crans.org', (to,), data)
|
||||||
|
|
||||||
def __usage(message=None):
|
def __usage(message=None):
|
||||||
""" Comment ça marche ? """
|
""" Comment ça marche ? """
|
||||||
|
@ -163,7 +159,7 @@ if __name__ == '__main__' :
|
||||||
__usage(u'Mauvaise utilisation de liste')
|
__usage(u'Mauvaise utilisation de liste')
|
||||||
print "Liste des membres actifs n'ayant pas signé la charte :"
|
print "Liste des membres actifs n'ayant pas signé la charte :"
|
||||||
for adh in liste_charte_nok():
|
for adh in liste_charte_nok():
|
||||||
print adh.Nom()
|
print unicode(adh['prenom'][0]) + u" " + unicode(adh['nom'][0])
|
||||||
elif sys.argv[1] == 'modif':
|
elif sys.argv[1] == 'modif':
|
||||||
if len(sys.argv) != 2:
|
if len(sys.argv) != 2:
|
||||||
__usage(u'Mauvaise utilisation de modif')
|
__usage(u'Mauvaise utilisation de modif')
|
||||||
|
|
1
gestion/mail/template/missing_charte_MA/From/fr
Normal file
1
gestion/mail/template/missing_charte_MA/From/fr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Le bureau du Crans <ca@crans.org>
|
1
gestion/mail/template/missing_charte_MA/README
Normal file
1
gestion/mail/template/missing_charte_MA/README
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Envoyé à l'adhérent lorsque son impression est terminée
|
1
gestion/mail/template/missing_charte_MA/Subject/fr
Normal file
1
gestion/mail/template/missing_charte_MA/Subject/fr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[Crans] Charte membre actif manquante
|
1
gestion/mail/template/missing_charte_MA/To/fr
Normal file
1
gestion/mail/template/missing_charte_MA/To/fr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{To}}
|
1
gestion/mail/template/missing_charte_MA/X-Mailer/fr
Normal file
1
gestion/mail/template/missing_charte_MA/X-Mailer/fr
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{ mailer }}
|
14
gestion/mail/template/missing_charte_MA/body/fr
Normal file
14
gestion/mail/template/missing_charte_MA/body/fr
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Il semble que tu es membre actif du CRANS et que tu n'as pas
|
||||||
|
signé la charte des membres actifs. Si tu n'es pas membre actif
|
||||||
|
ou si tu as signé la charte des membres actifs, merci de nous le
|
||||||
|
signaler. Sinon, il faudrait signer la charte et nous la rendre
|
||||||
|
rapidement. Tu peux l'imprimer à partir du fichier suivant :
|
||||||
|
|
||||||
|
https://wiki.crans.org/CransAdministratif?action=AttachFile&do=get&target=charte_ma.pdf
|
||||||
|
|
||||||
|
Merci par avance,
|
||||||
|
|
||||||
|
--
|
||||||
|
Le bureau du CRANS
|
Loading…
Add table
Add a link
Reference in a new issue