Commit a1bf0a45 authored by Pierre-Elliott Bécue's avatar Pierre-Elliott Bécue

[scripts] Going to utf-8

parent c4a19a88
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: utf-8 -*-
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet # Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# 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
actifs qui n'ont pas signé la charte du même nom. actifs qui n'ont pas signé la charte du même nom.
Utilisation : Utilisation :
%(prog)s {liste|modif|spam} [--debug <adresse>] %(prog)s {liste|modif|spam} [--debug <adresse>]
L'unique option est : L'unique option est :
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt --debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
qu'aux vrais destinataires qu'aux vrais destinataires
Les commandes sont : Les commandes sont :
* liste énumérer les membres n'ayant pas signé la charte * liste énumérer les membres n'ayant pas signé la charte
* modif modifier les membres actifs n'ayant pas signé la charte * modif modifier les membres actifs n'ayant pas signé la charte
* spam envoie des mails de rappel pour les chartes * spam envoie des mails de rappel pour les chartes
""" """
...@@ -29,7 +29,7 @@ from email_tools import send_email, parse_mail_template ...@@ -29,7 +29,7 @@ from email_tools import send_email, parse_mail_template
# Fonctions d'affichage # Fonctions d'affichage
from affich_tools import coul, tableau, prompt, cprint from affich_tools import coul, tableau, prompt, cprint
# Importation de la base de données # Importation de la base de données
from ldap_crans import crans_ldap, ann_scol from ldap_crans import crans_ldap, ann_scol
db = crans_ldap() db = crans_ldap()
...@@ -44,12 +44,12 @@ if __name__ == '__main__': ...@@ -44,12 +44,12 @@ if __name__ == '__main__':
sys.argv.pop() sys.argv.pop()
if debug: if debug:
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug) cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
def _controle_interactif_adherents(liste): def _controle_interactif_adherents(liste):
""" """
Contrôle interactif des adhérents de la liste. Contrôle interactif des adhérents de la liste.
Retourne (nb_OK, nb_pas_OK). Retourne (nb_OK, nb_pas_OK).
""" """
...@@ -57,10 +57,10 @@ def _controle_interactif_adherents(liste): ...@@ -57,10 +57,10 @@ def _controle_interactif_adherents(liste):
if restant == 0: if restant == 0:
return 0, 0 return 0, 0
cprint(u'\nContrôle des membre actifs' , 'cyan') cprint(u'\nContrôle des membre actifs' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).") cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.") cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).") cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u"") cprint(u"")
nb = 0 nb = 0
...@@ -81,7 +81,7 @@ def _controle_interactif_adherents(liste): ...@@ -81,7 +81,7 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(True) modifiable.charteMA(True)
cprint(modifiable.save()) cprint(modifiable.save())
else: else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge') cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
elif ok == 'n': elif ok == 'n':
if a.charteMA() == True: if a.charteMA() == True:
modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0] modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0]
...@@ -89,16 +89,16 @@ def _controle_interactif_adherents(liste): ...@@ -89,16 +89,16 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(False) modifiable.charteMA(False)
cprint(modifiable.save()) cprint(modifiable.save())
else: else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge') cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
else: else:
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge') 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
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 = db.search('droits=*')['adherent']
liste_nok = [] liste_nok = []
for adh in liste_actifs: for adh in liste_actifs:
...@@ -110,25 +110,25 @@ def liste_charte_nok(): ...@@ -110,25 +110,25 @@ def liste_charte_nok():
def controle_interactif(): def controle_interactif():
""" """
Procédure interactive de contrôle des chartes de membres actifs. Procédure interactive de contrôle des chartes de membres actifs.
""" """
todo_list = liste_charte_nok() todo_list = liste_charte_nok()
# 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(), x.prenom()), (y.nom(), y.prenom())))
# Zou ! # Zou !
ok, nok = _controle_interactif_adherents(todo_list) ok, nok = _controle_interactif_adherents(todo_list)
cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet') cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet')
liste = [[u'membres actifs', str(ok), str(nok)]] liste = [[u'membres actifs', str(ok), str(nok)]]
cprint(tableau(liste, cprint(tableau(liste,
titre = [u'Catégorie', u'OK', u'pas OK'], titre = [u'Catégorie', u'OK', u'pas OK'],
largeur = [15, 10, 10])) largeur = [15, 10, 10]))
def spammer(): def spammer():
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier # On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
todo_list = liste_charte_nok() todo_list = liste_charte_nok()
if todo_list: if todo_list:
...@@ -144,10 +144,10 @@ def spammer(): ...@@ -144,10 +144,10 @@ def spammer():
print to print to
if not debug: if not debug:
data = config.mails.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to} data = config.mails.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15')) connexion.sendmail("ca@crans.org",to,data.encode('utf-8'))
def __usage(message=None): def __usage(message=None):
""" Comment ça marche ? """ """ Comment ça marche ? """
cprint(__doc__ % { 'prog': sys.argv[0] }) cprint(__doc__ % { 'prog': sys.argv[0] })
if message: if message:
cprint(message) cprint(message)
...@@ -161,7 +161,7 @@ if __name__ == '__main__' : ...@@ -161,7 +161,7 @@ if __name__ == '__main__' :
elif sys.argv[1] == 'liste': elif sys.argv[1] == 'liste':
if len(sys.argv) != 2: if len(sys.argv) != 2:
__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 adh.Nom()
elif sys.argv[1] == 'modif': elif sys.argv[1] == 'modif':
......
This diff is collapsed.
...@@ -47,7 +47,7 @@ if u'Tresorier' not in cableur.droits(): ...@@ -47,7 +47,7 @@ if u'Tresorier' not in cableur.droits():
dlg = dialog.Dialog() dlg = dialog.Dialog()
dlg.setBackgroundTitle('Tresorerie') dlg.setBackgroundTitle('Tresorerie')
encoding = sys.stdin.encoding or 'ISO-8859-15' encoding = sys.stdin.encoding or 'UTF-8'
######################################################################## ########################################################################
# Retrait des accents # Retrait des accents
......
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: utf-8 -*-
import sys import sys
# Copyright (C) Stéphane Glondu, Alexandre Bos # Copyright (C) Stéphane Glondu, Alexandre Bos
# Licence : GPLv2 # Licence : GPLv2
__doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne __doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne
sont plus sur le campus, ie ceux qui ne sont plus à jour de cotisation. sont plus sur le campus, ie ceux qui ne sont plus à jour de cotisation.
Utilisation : Utilisation :
%(prog)s {lister|radier} [--debug <adresse>] %(prog)s {lister|radier} [--debug <adresse>]
Les commandes sont : Les commandes sont :
* lister afficher la liste des câbleurs succeptibles d'être * lister afficher la liste des câbleurs succeptibles d'être
radiés radiés
* radier selectionner, parmis eux, les cableurs que l'on * radier selectionner, parmis eux, les cableurs que l'on
souhaite radier souhaite radier
""" """
...@@ -28,23 +28,23 @@ from email_tools import send_email, parse_mail_template ...@@ -28,23 +28,23 @@ from email_tools import send_email, parse_mail_template
# Fonctions d'affichage # Fonctions d'affichage
from affich_tools import coul, tableau, prompt, cprint from affich_tools import coul, tableau, prompt, cprint
# Importation de la base de données # Importation de la base de données
from ldap_crans import crans_ldap, ann_scol from ldap_crans import crans_ldap, ann_scol
db = crans_ldap() db = crans_ldap()
def _controle_interactif_adherents(liste): def _controle_interactif_adherents(liste):
""" """
Demande ce qu'il faut faire à chaque fois Demande ce qu'il faut faire à chaque fois
""" """
restant = len(liste) restant = len(liste)
if restant == 0: if restant == 0:
return 0, 0 return 0, 0
cprint(u'\nRadiation des câbleurs fantômes' , 'cyan') cprint(u'\nRadiation des câbleurs fantômes' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).") cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.") cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).") cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u"") cprint(u"")
nb = 0 nb = 0
...@@ -58,9 +58,9 @@ def _controle_interactif_adherents(liste): ...@@ -58,9 +58,9 @@ def _controle_interactif_adherents(liste):
modifiable.droits([]) modifiable.droits([])
cprint(modifiable.save()) cprint(modifiable.save())
else: else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge') cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
elif ok != 'n': elif ok != 'n':
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge') cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
break break
def candidats(): def candidats():
...@@ -74,10 +74,10 @@ def candidats(): ...@@ -74,10 +74,10 @@ def candidats():
def lister(): def lister():
""" """
Afficher les câbleurs fantômes potentiels. Afficher les câbleurs fantômes potentiels.
""" """
todo_list = candidats() todo_list = candidats()
print "Liste des câbleur dont la cotisation n'est pas à jour." print "Liste des câbleur dont la cotisation n'est pas à jour."
print print
for adh in todo_list: for adh in todo_list:
print adh.prenom() + " " + adh.nom() print adh.prenom() + " " + adh.nom()
...@@ -86,7 +86,7 @@ def lister(): ...@@ -86,7 +86,7 @@ def lister():
def controle_interactif(): def controle_interactif():
""" """
Procédure interactive de radiations des câbleurs fantômes. Procédure interactive de radiations des câbleurs fantômes.
""" """
todo_list = candidats() todo_list = candidats()
...@@ -94,7 +94,7 @@ def controle_interactif(): ...@@ -94,7 +94,7 @@ def controle_interactif():
_controle_interactif_adherents(todo_list) _controle_interactif_adherents(todo_list)
def __usage(message=None): def __usage(message=None):
""" Comment ça marche ? """ """ Comment ça marche ? """
cprint(__doc__ % { 'prog': sys.argv[0] }) cprint(__doc__ % { 'prog': sys.argv[0] })
if message: if message:
......
...@@ -18,11 +18,11 @@ except: ...@@ -18,11 +18,11 @@ except:
pass pass
if not encoding: if not encoding:
encoding = sys.stdin.encoding or "ISO-8859-15" encoding = sys.stdin.encoding or 'UTF-8'
# Si aucune locale n'est définie, on se met en ISO-8859-15 # Si aucune locale n'est définie, on se met en...
if encoding == "ANSI_X3.4-1968": if encoding == "ANSI_X3.4-1968":
encoding = "ISO-8859-15" encoding = 'UTF-8'
if 'TERM' in os.environ and os.environ['TERM'] != 'unknown': if 'TERM' in os.environ and os.environ['TERM'] != 'unknown':
el = subprocess.Popen('tput cr ; tput el', shell=True, stdout=subprocess.PIPE).stdout.read() el = subprocess.Popen('tput cr ; tput el', shell=True, stdout=subprocess.PIPE).stdout.read()
...@@ -115,7 +115,7 @@ def to_unicode(txt, enc=encoding): ...@@ -115,7 +115,7 @@ def to_unicode(txt, enc=encoding):
return txt.decode("UTF-8") return txt.decode("UTF-8")
except: except:
# Sinon c'est surement de l'iso # Sinon c'est surement de l'iso
return txt.decode("ISO8859-15") return txt.decode("UTF-8")
def to_encoding(txt, enc=encoding): def to_encoding(txt, enc=encoding):
return to_unicode(txt).encode(enc, 'ignore') return to_unicode(txt).encode(enc, 'ignore')
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p #: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p
avertissement = u"""From: %(From)s avertissement = u"""From: %(From)s
To: %(To)s To: %(To)s
Subject: =?iso-8859-1?Q?D=E9tection?= de p2p sur la machine %(hostname)s Subject: =?utf-8?q?D=C3=A9tection?= de p2p sur la machine %(hostname)s
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
La machine %(hostname)s a été déconnectée pendant 24h pour La machine %(hostname)s a été déconnectée pendant 24h pour
...@@ -20,7 +20,7 @@ Message créé par deconnexion.py""" ...@@ -20,7 +20,7 @@ Message créé par deconnexion.py"""
#: Envoyé à l'adhérent en cas de déconnexion pour p2p #: Envoyé à l'adhérent en cas de déconnexion pour p2p
deconnexion = u"""From: %(From)s deconnexion = u"""From: %(From)s
To: %(To)s To: %(To)s
Subject: Avis de =?iso-8859-15?Q?D=E9connexion?= Subject: Avis de =?utf-8?q?D=C3=A9connexion?=
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
Bonjour, Bonjour,
...@@ -81,7 +81,7 @@ Disconnect Team""" ...@@ -81,7 +81,7 @@ Disconnect Team"""
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p plusieurs fois #: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p plusieurs fois
message_disconnect_multi = u"""From: %(from)s message_disconnect_multi = u"""From: %(from)s
To: %(to)s To: %(to)s
Subject: %(proprio)s a =?iso-8859-15?Q?=E9t=E9=20d=E9connect=E9?= %(nbdeco)d fois pour p2p en un an ! Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_d=C3=A9connect=C3=A9?= %(nbdeco)d fois pour p2p en un an !
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
L'adhérent %(proprio)s a été déconnecté %(nbdeco)d fois pour p2p en un an ! L'adhérent %(proprio)s a été déconnecté %(nbdeco)d fois pour p2p en un an !
...@@ -90,4 +90,4 @@ Le PS a été généré et se trouve sur zamok : ...@@ -90,4 +90,4 @@ Le PS a été généré et se trouve sur zamok :
%(ps)s %(ps)s
--\u0020 --\u0020
Message créé par deconnexion.py""" Message créé par deconnexion.py"""
\ No newline at end of file
...@@ -124,7 +124,7 @@ Message créé par deconnexion.py""" ...@@ -124,7 +124,7 @@ Message créé par deconnexion.py"""
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard #: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard
message_disconnect_hard = u"""From: %(from)s message_disconnect_hard = u"""From: %(from)s
To: %(to)s To: %(to)s
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20brid=E9?= Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?=
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
%(proprio)s (%(id)s) a été limité en débit montant du fait d'un %(proprio)s (%(id)s) a été limité en débit montant du fait d'un
...@@ -141,7 +141,7 @@ Message créé par deconnexion.py""" ...@@ -141,7 +141,7 @@ Message créé par deconnexion.py"""
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois #: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois
message_disconnect_multi = u"""From: %(from)s message_disconnect_multi = u"""From: %(from)s
To: %(to)s To: %(to)s
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20brid=E9?= Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?=
%(nbdeco)d fois pour upload en un mois ! %(nbdeco)d fois pour upload en un mois !
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
......
...@@ -14,7 +14,7 @@ format_sender et send_email adaptés depuis /usr/scripts/impression/crans_backen ...@@ -14,7 +14,7 @@ format_sender et send_email adaptés depuis /usr/scripts/impression/crans_backen
import re import re
def format_sender(sender, header_charset='ISO-8859-15'): def format_sender(sender, header_charset='utf-8'):
""" """
Check and format sender for header. Check and format sender for header.
""" """
...@@ -42,8 +42,8 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de ...@@ -42,8 +42,8 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de
Only the real name part of sender and recipient addresses may contain Only the real name part of sender and recipient addresses may contain
non-ASCII characters. The email will be properly MIME encoded. non-ASCII characters. The email will be properly MIME encoded.
The charset of the email will be the first one out of US-ASCII, ISO-8859-15 The charset of the email will be the first one out of US-ASCII or UTF-8
and UTF-8 that can represent all the characters occurring in the email. that can represent all the characters occurring in the email.
Argument server maybe a string, indicating the name of the SMTP server, or Argument server maybe a string, indicating the name of the SMTP server, or
directly an instance of smtplib.SMTP. directly an instance of smtplib.SMTP.
...@@ -57,10 +57,10 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de ...@@ -57,10 +57,10 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de
# Header class is smart enough to try US-ASCII, then the charset we # Header class is smart enough to try US-ASCII, then the charset we
# provide, then fall back to UTF-8. # provide, then fall back to UTF-8.
header_charset = 'ISO-8859-15' header_charset = 'UTF-8'
# We must choose the body charset manually # We must choose the body charset manually
for body_charset in 'US-ASCII', 'ISO-8859-15', 'UTF-8': for body_charset in 'US-ASCII', 'UTF-8':
try: try:
body.encode(body_charset) body.encode(body_charset)
except UnicodeError: except UnicodeError:
......
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: utf-8 -*-
""" Package pour la génération des fichiers de conf """ Package pour la génération des fichiers de conf
Copyright (C) Frédéric Pauget Copyright (C) Frédéric Pauget
Licence : GPLv2 Licence : GPLv2
""" """
...@@ -18,11 +18,11 @@ import config ...@@ -18,11 +18,11 @@ import config
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
class gen_config : class gen_config :
""" Base pour toutes les classes de génération de fichiers de conf """ """ Base pour toutes les classes de génération de fichiers de conf """
base = None base = None
debug = 0 debug = 0
_locked = 0 _locked = 0
__restore={} # pour restorer la config d'origine en cas d'erreur de génération __restore={} # pour restorer la config d'origine en cas d'erreur de génération
def lockname(self): def lockname(self):
"""Nom du lock""" """Nom du lock"""
...@@ -39,7 +39,7 @@ class gen_config : ...@@ -39,7 +39,7 @@ class gen_config :
if self._locked : remove_lock(self.lockname()) if self._locked : remove_lock(self.lockname())
def __del__(self) : def __del__(self) :
# Au cas où... # Au cas où...
self.unlock() self.unlock()
def _restore(self) : def _restore(self) :
...@@ -54,12 +54,12 @@ class gen_config : ...@@ -54,12 +54,12 @@ class gen_config :
os.system('cp -f %s %s' % ( f.name, nom ) ) os.system('cp -f %s %s' % ( f.name, nom ) )
def _open_conf(self,nom,comment=None) : def _open_conf(self,nom,comment=None) :
""" Créé un fichier """ Créé un fichier
si comment est fourni, insère une entète qui utilisera le caractère si comment est fourni, insère une entète qui utilisera le caractère
de commentaire fourni de commentaire fourni
copie l'ancien fichier dans un fichier temporaire pour permettre copie l'ancien fichier dans un fichier temporaire pour permettre
la restauration en cas d'échec de la configuration la restauration en cas d'échec de la configuration
Retourne le descripteur du fichier """ Retourne le descripteur du fichier """
...@@ -89,15 +89,15 @@ class gen_config : ...@@ -89,15 +89,15 @@ class gen_config :
return fd return fd
def gen_conf(self) : def gen_conf(self) :
""" Génération des fichiers de conf, retourne False si erreur """ """ Génération des fichiers de conf, retourne False si erreur """
self.lock() self.lock()
self.anim = anim('\tgénération fichiers') self.anim = anim('\tgénération fichiers')
try : try :
warn = self._gen() warn = self._gen()
if warn : if warn :
self.anim.reinit() self.anim.reinit()
print WARNING print WARNING
if self.debug : sys.stderr.write(warn.encode("ISO-8859-15")) if self.debug : sys.stderr.write(warn.encode("UTF-8"))
else : else :
self.anim.reinit() self.anim.reinit()
print OK print OK
...@@ -110,7 +110,7 @@ class gen_config : ...@@ -110,7 +110,7 @@ class gen_config :
return False return False
def restart(self) : def restart(self) :
""" Redémarrage du service concerné """ """ Redémarrage du service concerné """
if not self.restart_cmd : return if not self.restart_cmd : return
self.lock() self.lock()
self.anim = anim('\trestart') self.anim = anim('\trestart')
...@@ -127,8 +127,8 @@ class gen_config : ...@@ -127,8 +127,8 @@ class gen_config :
self.unlock() self.unlock()
def reconfigure(self) : def reconfigure(self) :
""" Génère les fichiers puis redémarre le service """ Génère les fichiers puis redémarre le service
si la génération c'est bien passée """ si la génération c'est bien passée """
cprint(u'Reconfiguration %s :' % self.__str__(), 'gras') cprint(u'Reconfiguration %s :' % self.__str__(), 'gras')
if self.gen_conf() : if self.gen_conf() :
return self.restart() return self.restart()
......
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: utf-8 -*-
# Copyright (C) Frdric Pauget # Copyright (C) Frédéric Pauget
# Licence : GPLv2 # Licence : GPLv2
import smtplib, sys, commands, shutil, os, traceback import smtplib, sys, commands, shutil, os, traceback
...@@ -18,7 +18,7 @@ try: ...@@ -18,7 +18,7 @@ try:
from Mailman.UserDesc import UserDesc from Mailman.UserDesc import UserDesc
from Mailman.Errors import MMAlreadyAMember from Mailman.Errors import MMAlreadyAMember
except: except:
# Machine sans mailman, les ML ne seront pas reconfigures # Machine sans mailman, les ML ne seront pas reconfigurées
pass pass
...@@ -101,7 +101,7 @@ class home: ...@@ -101,7 +101,7 @@ class home:
self.args = args self.args = args
def reconfigure(self): def reconfigure(self):
cprint(u'Cration home', 'gras') cprint(u'Création home', 'gras')
for args in self.args: for args in self.args:
anim('\t' + args) anim('\t' + args)
try: try:
...@@ -116,11 +116,11 @@ class home: ...@@ -116,11 +116,11 @@ class home:
os.mkdir(home, 0755) os.mkdir(home, 0755)
os.chown(home, int(uid), config.gid) os.chown(home, int(uid), config.gid)
elif os.path.isdir(home): elif os.path.isdir(home):
# Il y un rpertoire existant # Il y un répertoire existant
# Bon UID ? # Bon UID ?
stat = os.stat(home) stat = os.stat(home)
if stat[4] != int(uid) or stat[5] != config.gid: if stat[4] != int(uid) or stat[5] != config.gid:
# Le home n'est pas pas la bonne personne # Le home n'est pas pas à la bonne personne
raise OSError('home existant') raise OSError('home existant')
### Quota ### Quota
...@@ -226,7 +226,7 @@ class ML_ens: ...@@ -226,7 +226,7 @@ class ML_ens:
try: try:
mlist.ApprovedAddMember(UserDesc(mail)) mlist.ApprovedAddMember(UserDesc(mail))
except MMAlreadyAMember: except MMAlreadyAMember:
cprint(u"DJ INSCRIT", "jaune") cprint(u"DÉJÀ INSCRIT", "jaune")
except: except:
print ERREUR print ERREUR
if self.debug: