[surveillance/fiche_deconnexion/<des trucs>] iso8859-15 is evil

Réencodage des fichiers et changements des variable d'encodage du script.
This commit is contained in:
Vincent Le Gallic 2013-02-08 01:00:25 +01:00
parent 14b5e136cf
commit b29face316
3 changed files with 123 additions and 121 deletions

View file

@ -9,7 +9,7 @@
\usepackage{alltt} \usepackage{alltt}
\usepackage[dvips]{eso-pic,graphicx} \usepackage[dvips]{eso-pic,graphicx}
\usepackage{color} \usepackage{color}
\usepackage[latin1]{inputenc} \usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc} \usepackage[T1]{fontenc}
\usepackage[french]{babel} \usepackage[french]{babel}
@ -31,7 +31,7 @@
\pagestyle{fancy} \pagestyle{fancy}
\renewcommand{\headrulewidth}{0.8pt} \renewcommand{\headrulewidth}{0.8pt}
\renewcommand{\footrulewidth}{0.2pt} \renewcommand{\footrulewidth}{0.2pt}
\lhead{\textbf{Notification de déconnexion}} \lhead{\textbf{Notification de déconnexion}}
\rhead{\textbf{CR@NS}} \rhead{\textbf{CR@NS}}
\cfoot{\textbf{CR@NS}} \cfoot{\textbf{CR@NS}}
@ -71,7 +71,7 @@
\begin{tabular}[c]{c} \begin{tabular}[c]{c}
\hline \hline
\vspace{0.1cm} \\ \vspace{0.1cm} \\
\Huge{\textbf{Notification de déconnexion}}\\ \Huge{\textbf{Notification de déconnexion}}\\
\vspace{0.1cm} \\ \vspace{0.1cm} \\
\hline \hline
\end{tabular} \end{tabular}
@ -83,7 +83,7 @@
\begin{center} \begin{center}
\begin{minipage}{0.5\textwidth} \begin{minipage}{0.5\textwidth}
\textbf{Nom} \dotfill{} \nom \\ \textbf{Nom} \dotfill{} \nom \\
\textbf{Prénom} \dotfill{} \prenom \\ \textbf{Prénom} \dotfill{} \prenom \\
\textbf{Chambre} \dotfill{} \chambre \\ \textbf{Chambre} \dotfill{} \chambre \\
\textbf{Email} \dotfill{} \texttt{\email} \textbf{Email} \dotfill{} \texttt{\email}
\end{minipage} \end{minipage}
@ -93,46 +93,46 @@
\noindent\fcolorbox[gray]{0}{0.85}{% \noindent\fcolorbox[gray]{0}{0.85}{%
\begin{minipage}[t]{0.7\textwidth}% \begin{minipage}[t]{0.7\textwidth}%
\begin{center} \begin{center}
\large Tes machines ont été déconnectées pour environ \textbf{\duree{}}, du \large Tes machines ont été déconnectées pour environ \textbf{\duree{}}, du
\textbf{\depuis{}} jusqu'au \textbf{\jusquau{}} (inclus) pour usage de logiciels de pair à pair (P2P). \textbf{\depuis{}} jusqu'au \textbf{\jusquau{}} (inclus) pour usage de logiciels de pair à pair (P2P).
\end{center} \end{center}
\end{minipage}} \end{minipage}}
\end{center} \end{center}
\vspace{0.3cm} \vspace{0.3cm}
\begin{multicols}{2} \begin{multicols}{2}
{\small En effet, tes machines ont communiquées avec l'extérieur en utilisant {\small En effet, tes machines ont communiquées avec l'extérieur en utilisant
des protocoles de P2P, ce qui est interdit par la charte que tu as signée des protocoles de P2P, ce qui est interdit par la charte que tu as signée
(\url{http://www.crans.org/CransAdministratif/CharteDuCrans}). Ce point est (\url{http://www.crans.org/CransAdministratif/CharteDuCrans}). Ce point est
d'ailleurs rappelé sur l'exemplaire du formulaire d'adhésion que tu as d'ailleurs rappelé sur l'exemplaire du formulaire d'adhésion que tu as
conservé. Les causes les plus communes sont l'utilisation d'un service conservé. Les causes les plus communes sont l'utilisation d'un service
de \emph{peer to peer} type Kazaa, Morpheus, eDonkey. de \emph{peer to peer} type Kazaa, Morpheus, eDonkey.
Il n'existe pour ce genre d'actions qu'une très faible tolérance que Il n'existe pour ce genre d'actions qu'une très faible tolérance que
tu as dépassé à plusieurs reprises malgré plusieurs alertes par tu as dépassé à plusieurs reprises malgré plusieurs alertes par
mail\footnote{Si tu n'as pas reçu les mail\footnote{Si tu n'as pas reçu les
mails en question, c'est que tu ne consultes pas ton mail ; tu mails en question, c'est que tu ne consultes pas ton mail ; tu
\emph{dois} consulter régulièrement ton adresse \email. Si tu veux \emph{dois} consulter régulièrement ton adresse \email. Si tu veux
utiliser une autre adresse mail, adresse-toi à ton câbleur pour le utiliser une autre adresse mail, adresse-toi à ton câbleur pour le
changement.} accompagnés à chaque fois d'une déconnexion de 24h. changement.} accompagnés à chaque fois d'une déconnexion de 24h.
Voici l'historique de tes déconnexions : Voici l'historique de tes déconnexions :
\begin{center} \begin{center}
\begin{tabular}[c]{p{5cm}} \begin{tabular}[c]{p{5cm}}
\historique \historique
\end{tabular} \end{tabular}
\end{center} \end{center}
Tous les services te sont retirés durant la durée de la déconnexion, Tous les services te sont retirés durant la durée de la déconnexion,
\textbf{notamment l'accès à Internet}, à l'exception \textbf{notamment l'accès à Internet}, à l'exception
\ifthenelse{\boolean{mailcrans}}{du mail (sur le serveur de \ifthenelse{\boolean{mailcrans}}{du mail (sur le serveur de
l'association uniquement) et }{}de l'accès au serveur Web de l'association uniquement) et }{}de l'accès au serveur Web de
l'association (désactive le proxy si tu ne parviens pas à y accéder). l'association (désactive le proxy si tu ne parviens pas à y accéder).
Note également que tu es responsable de l'utilisation qui est faite de Note également que tu es responsable de l'utilisation qui est faite de
tes machines. Le fait que tu ne saches pas que certains programmes tes machines. Le fait que tu ne saches pas que certains programmes
utilisent des protocoles de P2P ne te dispense pas de ta responsabilité. utilisent des protocoles de P2P ne te dispense pas de ta responsabilité.
Si tu as des questions supplémentaires, envoie les à \url{disconnect@crans.org}. Si tu as des questions supplémentaires, envoie les à \url{disconnect@crans.org}.
Il est inutile d'aller déranger ton câbleur qui ne gère pas ce problème.} Il est inutile d'aller déranger ton câbleur qui ne gère pas ce problème.}
\vspace{0.3cm} \vspace{0.3cm}
\noindent\fcolorbox[gray]{0}{0.98}{\begin{minipage}{0.5\textwidth} \noindent\fcolorbox[gray]{0}{0.98}{\begin{minipage}{0.5\textwidth}
@ -142,41 +142,41 @@ Il est inutile d'aller d
$\mathcal{R}:$ \emph{#2}} $\mathcal{R}:$ \emph{#2}}
{\small {\small
\qa{Pourquoi n'ai-je pas été prévenu plus tôt ?}% \qa{Pourquoi n'ai-je pas été prévenu plus tôt ?}%
{Trois mails au minimum ont été envoyés en moins d'un an à ce sujet {Trois mails au minimum ont été envoyés en moins d'un an à ce sujet
sur l'adresse email indiquée sur cette fiche. Il nous faut nécessairement une sur l'adresse email indiquée sur cette fiche. Il nous faut nécessairement une
adresse valide pour te contacter dans les cas similaires. Tu dois donc adresse valide pour te contacter dans les cas similaires. Tu dois donc
lire le mail arrivant à cette adresse ou en indiquer une autre à ton lire le mail arrivant à cette adresse ou en indiquer une autre à ton
câbleur.\\ câbleur.\\
Ces mails étaient de plus accompagnés chacun d'une déconnexion de 24h. Ces mails étaient de plus accompagnés chacun d'une déconnexion de 24h.
} }
\qa{J'ai prêté ma chambre à un ami.}% \qa{J'ai prêté ma chambre à un ami.}%
{La connexion est personnelle, à ton nom et tu en es responsable.} {La connexion est personnelle, à ton nom et tu en es responsable.}
\qa{Je ne savais pas que tel programme utilisait un protocole de P2P.}% \qa{Je ne savais pas que tel programme utilisait un protocole de P2P.}%
{Dans le doute, mieux vaut éviter d'utiliser des programmes dont {Dans le doute, mieux vaut éviter d'utiliser des programmes dont
on ne connaît pas le fonctionnement et nous demander, notamment on ne connaît pas le fonctionnement et nous demander, notamment
lors des premiers mails de sanctions. Outre les programmes lors des premiers mails de sanctions. Outre les programmes
comme Kazaa ou eMule, l'utilisation de certaines fonctionnalités d'un comme Kazaa ou eMule, l'utilisation de certaines fonctionnalités d'un
programme peut entraîner l'usage des réseaux de P2P.} programme peut entraîner l'usage des réseaux de P2P.}
\qa{J'ai beaucoup de travail et j'ai besoin du net.}% \qa{J'ai beaucoup de travail et j'ai besoin du net.}%
{C'est le cas des \nbadherents{} adhérents du CRANS et c'est la raison principale {C'est le cas des \nbadherents{} adhérents du CRANS et c'est la raison principale
de la déconnexion. Nous avons des contraintes extérieures nous de la déconnexion. Nous avons des contraintes extérieures nous
obligeant à réguler certains usages afin de conserver la connexion obligeant à réguler certains usages afin de conserver la connexion
au réseau.} au réseau.}
\qa{Je dois rendre un projet demain !}% \qa{Je dois rendre un projet demain !}%
{Pas d'exception, ton école fournit sans doute une connexion à Internet, c'est {Pas d'exception, ton école fournit sans doute une connexion à Internet, c'est
moins confortable que depuis chez soi, mais ça marche quand même. Nous ne pouvons faire moins confortable que depuis chez soi, mais ça marche quand même. Nous ne pouvons faire
absolument \textbf{aucune} exception !} absolument \textbf{aucune} exception !}
\qa{J'ai payé !}% \qa{J'ai payé !}%
{Il s'agit de l'adhésion à une association et nous avons des contraintes {Il s'agit de l'adhésion à une association et nous avons des contraintes
supplémentaires par rapport à un fournisseur d'accès classique. Les supplémentaires par rapport à un fournisseur d'accès classique. Les
statuts nous autorisent à suspendre la connexion en cas de manquement statuts nous autorisent à suspendre la connexion en cas de manquement
à la charte que tu as signée.}} à la charte que tu as signée.}}
\end{minipage}} \end{minipage}}
\end{multicols} \end{multicols}

View file

@ -9,7 +9,7 @@
\usepackage{alltt} \usepackage{alltt}
\usepackage[dvips]{eso-pic,graphicx} \usepackage[dvips]{eso-pic,graphicx}
\usepackage{color} \usepackage{color}
\usepackage[latin1]{inputenc} \usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc} \usepackage[T1]{fontenc}
\usepackage[french]{babel} \usepackage[french]{babel}
@ -31,7 +31,7 @@
\pagestyle{fancy} \pagestyle{fancy}
\renewcommand{\headrulewidth}{0.8pt} \renewcommand{\headrulewidth}{0.8pt}
\renewcommand{\footrulewidth}{0.2pt} \renewcommand{\footrulewidth}{0.2pt}
\lhead{\textbf{Notification de déconnexion}} \lhead{\textbf{Notification de déconnexion}}
\rhead{\textbf{CR@NS}} \rhead{\textbf{CR@NS}}
\cfoot{\textbf{CR@NS}} \cfoot{\textbf{CR@NS}}
@ -72,7 +72,7 @@
\begin{tabular}[c]{c} \begin{tabular}[c]{c}
\hline \hline
\vspace{0.1cm} \\ \vspace{0.1cm} \\
\Huge{\textbf{Notification de déconnexion}}\\ \Huge{\textbf{Notification de déconnexion}}\\
\vspace{0.1cm} \\ \vspace{0.1cm} \\
\hline \hline
\end{tabular} \end{tabular}
@ -84,7 +84,7 @@
\begin{center} \begin{center}
\begin{minipage}{0.5\textwidth} \begin{minipage}{0.5\textwidth}
\textbf{Nom} \dotfill{} \nom \\ \textbf{Nom} \dotfill{} \nom \\
\textbf{Prénom} \dotfill{} \prenom \\ \textbf{Prénom} \dotfill{} \prenom \\
\textbf{Chambre} \dotfill{} \chambre \\ \textbf{Chambre} \dotfill{} \chambre \\
\textbf{Email} \dotfill{} \texttt{\email} \textbf{Email} \dotfill{} \texttt{\email}
\end{minipage} \end{minipage}
@ -94,7 +94,7 @@
\noindent\fcolorbox[gray]{0}{0.85}{% \noindent\fcolorbox[gray]{0}{0.85}{%
\begin{minipage}[t]{0.7\textwidth}% \begin{minipage}[t]{0.7\textwidth}%
\begin{center} \begin{center}
\large Tes machines ont été déconnectées pour environ \textbf{\duree{}}, du \large Tes machines ont été déconnectées pour environ \textbf{\duree{}}, du
\textbf{\depuis{}} jusqu'au \textbf{\jusquau{}} (inclus) pour upload. \textbf{\depuis{}} jusqu'au \textbf{\jusquau{}} (inclus) pour upload.
\end{center} \end{center}
\end{minipage}} \end{minipage}}
@ -102,19 +102,19 @@
\vspace{0.3cm} \vspace{0.3cm}
\begin{multicols}{2} \begin{multicols}{2}
{\small En effet, tes machines ont envoyé une quantité importante de données vers {\small En effet, tes machines ont envoyé une quantité importante de données vers
l'extérieur, ce qui est interdit par la charte que tu as signée l'extérieur, ce qui est interdit par la charte que tu as signée
(\url{http://www.crans.org/CransAdministratif/CharteDuCrans}). Ce point est (\url{http://www.crans.org/CransAdministratif/CharteDuCrans}). Ce point est
d'ailleurs rappelé sur l'exemplaire du formulaire d'adhésion que tu as d'ailleurs rappelé sur l'exemplaire du formulaire d'adhésion que tu as
conservé. Les causes les plus communes sont l'utilisation d'un service conservé. Les causes les plus communes sont l'utilisation d'un service
de \emph{peer to peer} type Kazaa, Morpheus, eDonkey. de \emph{peer to peer} type Kazaa, Morpheus, eDonkey.
La limite est de ~limitehard~ Mo par jour\footnote{Avant le 3 mai 2004, la La limite est de ~limitehard~ Mo par jour\footnote{Avant le 3 mai 2004, la
limite était de 100 Mo.} et tu as dépassé plusieurs fois cette limite limite était de 100 Mo.} et tu as dépassé plusieurs fois cette limite
malgré plusieurs rappels par mail\footnote{Si tu n'as pas reçu les malgré plusieurs rappels par mail\footnote{Si tu n'as pas reçu les
mails en question, c'est que tu ne consultes pas ton mail ; tu mails en question, c'est que tu ne consultes pas ton mail ; tu
\emph{dois} consulter régulièrement ton adresse \email. Si tu veux \emph{dois} consulter régulièrement ton adresse \email. Si tu veux
utiliser une autre adresse mail, adresse-toi à ton câbleur pour le utiliser une autre adresse mail, adresse-toi à ton câbleur pour le
changement.}. Voici l'historique : changement.}. Voici l'historique :
\begin{center} \begin{center}
\begin{tabular}[c]{p{5cm}ll} \begin{tabular}[c]{p{5cm}ll}
@ -122,18 +122,18 @@ changement.}. Voici l'historique :
\end{tabular} \end{tabular}
\end{center} \end{center}
Tous les services te sont retirés durant la durée de la déconnexion, Tous les services te sont retirés durant la durée de la déconnexion,
\textbf{notamment l'accès à Internet}, à l'exception \textbf{notamment l'accès à Internet}, à l'exception
\ifthenelse{\boolean{mailcrans}}{du mail (sur le serveur de \ifthenelse{\boolean{mailcrans}}{du mail (sur le serveur de
l'association uniquement) et }{}de l'accès au serveur Web de l'association uniquement) et }{}de l'accès au serveur Web de
l'association (désactive le proxy si tu ne parviens pas à y accéder). l'association (désactive le proxy si tu ne parviens pas à y accéder).
Note également que tu es responsable de l'utilisation qui est faite de Note également que tu es responsable de l'utilisation qui est faite de
tes machines. Le fait que tu ne saches pas que certains programmes tes machines. Le fait que tu ne saches pas que certains programmes
envoient des quantités importantes de données ne te dispense pas de ta envoient des quantités importantes de données ne te dispense pas de ta
responsabilité. responsabilité.
Si tu as des questions supplémentaires, envoie les à \url{disconnect@crans.org}. Si tu as des questions supplémentaires, envoie les à \url{disconnect@crans.org}.
Il est inutile d'aller déranger ton câbleur qui ne gère pas ce problème.} Il est inutile d'aller déranger ton câbleur qui ne gère pas ce problème.}
\vspace{0.3cm} \vspace{0.3cm}
\noindent\fcolorbox[gray]{0}{0.98}{\begin{minipage}{0.5\textwidth} \noindent\fcolorbox[gray]{0}{0.98}{\begin{minipage}{0.5\textwidth}
@ -143,40 +143,40 @@ Il est inutile d'aller d
$\mathcal{R}:$ \emph{#2}} $\mathcal{R}:$ \emph{#2}}
{\small {\small
\qa{Pourquoi n'ai-je pas été prévenu plus tôt ?}% \qa{Pourquoi n'ai-je pas été prévenu plus tôt ?}%
{Six mails au minimum ont été envoyés en moins d'un mois à ce sujet {Six mails au minimum ont été envoyés en moins d'un mois à ce sujet
sur l'adresse email indiquée sur cette fiche. Il nous faut nécessairement une sur l'adresse email indiquée sur cette fiche. Il nous faut nécessairement une
adresse valide pour te contacter dans les cas similaires. Tu dois donc adresse valide pour te contacter dans les cas similaires. Tu dois donc
lire le mail arrivant à cette adresse ou en indiquer une autre à ton lire le mail arrivant à cette adresse ou en indiquer une autre à ton
câbleur.} câbleur.}
\qa{J'ai prêté ma chambre à un ami.}% \qa{J'ai prêté ma chambre à un ami.}%
{La connexion est personnelle, à ton nom et tu en es responsable.} {La connexion est personnelle, à ton nom et tu en es responsable.}
\qa{Je ne savais pas que tel programme uploadait.}% \qa{Je ne savais pas que tel programme uploadait.}%
{Dans le doute, mieux vaut éviter d'utiliser des programmes dont {Dans le doute, mieux vaut éviter d'utiliser des programmes dont
on ne connaît pas le fonctionnement et nous demander, notamment on ne connaît pas le fonctionnement et nous demander, notamment
lors des premiers mails d'avertissement. Outre les programmes lors des premiers mails d'avertissement. Outre les programmes
comme Kazaa ou eMule qui de toute façon sont strictement interdits comme Kazaa ou eMule qui de toute façon sont strictement interdits
d'utilisation sur le réseau CRANS, l'utilisation d'une webcam peut d'utilisation sur le réseau CRANS, l'utilisation d'une webcam peut
entraîner un upload important.} entraîner un upload important.}
\qa{J'ai beaucoup de travail et j'ai besoin du net.}% \qa{J'ai beaucoup de travail et j'ai besoin du net.}%
{C'est le cas des \nbadherents{} adhérents du CRANS et c'est la raison principale {C'est le cas des \nbadherents{} adhérents du CRANS et c'est la raison principale
de la déconnexion. Nous avons des contraintes extérieures nous de la déconnexion. Nous avons des contraintes extérieures nous
obligeant à réguler certains usages afin de conserver la connexion obligeant à réguler certains usages afin de conserver la connexion
au réseau.} au réseau.}
\qa{Je dois rendre un projet demain !}% \qa{Je dois rendre un projet demain !}%
{Pas d'exception, ton école fournit sans doute une connexion à Internet, c'est {Pas d'exception, ton école fournit sans doute une connexion à Internet, c'est
moins confortable que depuis chez soi, mais ça marche quand même. Nous ne pouvons faire moins confortable que depuis chez soi, mais ça marche quand même. Nous ne pouvons faire
absolument \textbf{aucune} exception !} absolument \textbf{aucune} exception !}
\qa{J'ai payé !}% \qa{J'ai payé !}%
{Il s'agit de l'adhésion à une association. D'autre part nous avons des {Il s'agit de l'adhésion à une association. D'autre part nous avons des
contraintes supplémentaires par rapport à un fournisseur d'accès contraintes supplémentaires par rapport à un fournisseur d'accès
classique. Les statuts nous autorisent à suspendre la connexion en cas classique. Les statuts nous autorisent à suspendre la connexion en cas
de manquement à la charte que tu as signée.}} de manquement à la charte que tu as signée.}}
\end{minipage}} \end{minipage}}
\end{multicols} \end{multicols}

View file

@ -1,15 +1,17 @@
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- encoding: utf-8 -*-
""" """
Script de génération de feuille de déconnexion pour : Script de génération de feuille de déconnexion pour :
- upload - upload
- p2p - p2p
Copyright (C) Xavier Pessoles, Étienne Chové, Vincent Bernat, Nicolas Salles Copyright (C) Xavier Pessoles, Étienne Chové, Vincent Bernat, Nicolas Salles
Licence : GPL v2 Licence : GPL v2
""" """
encoding = "UTF-8"
import sys import sys
sys.path.append('/usr/scripts/gestion') sys.path.append('/usr/scripts/gestion')
@ -37,56 +39,56 @@ locale.setlocale(locale.LC_TIME, 'fr_FR.utf8')
sanctions = ['upload', 'p2p'] sanctions = ['upload', 'p2p']
help = """Script de génération d'une feuille de déconnexion. help = """Script de génération d'une feuille de déconnexion.
Les sanctions disponibles sont : Les sanctions disponibles sont :
\t--%s \t--%s
usage: generate.py --sanction recherche_ldap usage: generate.py --sanction recherche_ldap
Le motif de recherche dans la base ldap doit donné un résultat unique""" % "\n\t--".join(map(lambda x: x,sanctions)) Le motif de recherche dans la base ldap doit donné un résultat unique""" % "\n\t--".join(map(lambda x: x,sanctions))
def decode(s): def decode(s):
u""" u"""
Retourne un unicode à partir de s Retourne un unicode à partir de s
s doit être en utf-8 s doit être en utf-8
""" """
if type(s) is unicode: if type(s) is unicode:
# Si s est déjà un unicode, on ne décode pas # Si s est déjà un unicode, on ne décode pas
return s return s
else: else:
return s.decode('utf-8', 'ignore') # On ignore les erreurs return s.decode('utf-8', 'ignore') # On ignore les erreurs
def strip_accents(a): def strip_accents(a):
u""" Supression des accents de la chaîne fournie """ u""" Supression des accents de la chaîne fournie """
res = normalize('NFKD', decode(a)).encode('ASCII', 'ignore') res = normalize('NFKD', decode(a)).encode('ASCII', 'ignore')
return res.replace(' ', '_').replace("'", '') return res.replace(' ', '_').replace("'", '')
def generate_ps(sanction, proprio, db): def generate_ps(sanction, proprio, db):
"""En fonction de la sanction à appliquer au propriétaire, """En fonction de la sanction à appliquer au propriétaire,
on génère la feuille de déconnexion et on retourne son nom et on génère la feuille de déconnexion et on retourne son nom et
emplacement.""" emplacement."""
try: try:
log('Generate deconnexion notice for %s' % proprio.Nom()) log('Generate deconnexion notice for %s' % proprio.Nom())
# Dossier de génération du ps # Dossier de génération du ps
dossier = '/usr/scripts/surveillance/fiche_deconnexion' dossier = '/usr/scripts/surveillance/fiche_deconnexion'
# Base pour le nom du fichier # Base pour le nom du fichier
fichier = strftime('%Y-%m-%d-%H-%M') + '-%s-%s' % (sanction, fichier = strftime('%Y-%m-%d-%H-%M') + '-%s-%s' % (sanction,
strip_accents(proprio.Nom().lower().replace(' ', '-'))) strip_accents(proprio.Nom().lower().replace(' ', '-')))
# Création du fichier tex # Création du fichier tex
format_date = '%A %d %B %Y' format_date = '%A %d %B %Y'
template = file('%s/deconnexion_%s.tex' % (dossier, sanction)).read() template = file('%s/deconnexion_%s.tex' % (dossier, sanction)).read()
template = template.replace('~prenom~', proprio.prenom().encode('iso8859-15')) template = template.replace('~prenom~', proprio.prenom().encode(encoding))
template = template.replace('~nom~', proprio.nom().encode('iso8859-15')) template = template.replace('~nom~', proprio.nom().encode(encoding))
template = template.replace('~chambre~', proprio.chbre().encode('iso8859-15')) template = template.replace('~chambre~', proprio.chbre().encode(encoding))
template = template.replace('~mail~', proprio.email().encode('iso8859-15')) template = template.replace('~mail~', proprio.email().encode(encoding))
template = template.replace('~debut~', strftime(format_date, localtime())) template = template.replace('~debut~', strftime(format_date, localtime()))
template = template.replace('~fin~', strftime(format_date, localtime(time()+14*86400))) template = template.replace('~fin~', strftime(format_date, localtime(time()+14*86400)))
# filtrage des autodisc # filtrage des autodisc
historique = [ bl.encode('iso-8859-15', 'ignore').split('$') for bl in proprio.blacklist() if bl.split('$')[2] == 'autodisc_%s' % sanction ] historique = [ bl.encode(encoding, 'ignore').split('$') for bl in proprio.blacklist() if bl.split('$')[2] == 'autodisc_%s' % sanction ]
# transfomation en tuple (date, sanction) # transfomation en tuple (date, sanction)
historique = [ (strftime('%A %d %B %Y', localtime(int(bl[0]))), bl[-1]) for bl in historique ] historique = [ (strftime('%A %d %B %Y', localtime(int(bl[0]))), bl[-1]) for bl in historique ]
# On ne prend au maximum que les 5 dernières occurences # On ne prend au maximum que les 5 dernières occurences
historique = historique[-5:] historique = historique[-5:]
# tranformation en ligne # tranformation en ligne
if sanction == 'upload' : if sanction == 'upload' :
@ -106,17 +108,17 @@ def generate_ps(sanction, proprio, db):
file('%s/%s.tex' % (dossier, fichier), 'w').write(template) file('%s/%s.tex' % (dossier, fichier), 'w').write(template)
# Compilation du fichier latex # Compilation du fichier latex
# Paquets nécessaires : texlive-latex-base, texlive-latex-recommended, # Paquets nécessaires : texlive-latex-base, texlive-latex-recommended,
# texlive-latex-extra, texlive-lang-french, texlive-luatex, # texlive-latex-extra, texlive-lang-french, texlive-luatex,
# texlive-pstricks # texlive-pstricks
commande = 'PATH="/bin:/usr/bin" cd %(dossier)s && latex %(base)s.tex && dvips %(base)s.dvi && rm -f %(base)s.dvi %(base)s.aux %(base)s.log %(base)s.tex'%{'dossier': dossier, 'base': fichier} commande = 'PATH="/bin:/usr/bin" cd %(dossier)s && latex %(base)s.tex && dvips %(base)s.dvi && rm -f %(base)s.dvi %(base)s.aux %(base)s.log %(base)s.tex'%{'dossier': dossier, 'base': fichier}
status, output = commands.getstatusoutput(commande) status, output = commands.getstatusoutput(commande)
if status != 0: if status != 0:
log('Erreur lors de la génération du ps : ') log('Erreur lors de la génération du ps : ')
log(output) log(output)
return '%s/%s.ps' % (dossier, fichier) return '%s/%s.ps' % (dossier, fichier)
except Exception, e: except Exception, e:
log('Erreur lors de la génération du ps : ') log('Erreur lors de la génération du ps : ')
log(str(e)) log(str(e))
log("Values : sanction:%s adherent:%s" % (sanction, log("Values : sanction:%s adherent:%s" % (sanction,
strip_accents(proprio.Nom()))) strip_accents(proprio.Nom())))
@ -142,11 +144,11 @@ if __name__ == "__main__":
sanction = s sanction = s
if not sanction : if not sanction :
print "Erreur : aucune sanction définie.\n" print "Erreur : aucune sanction définie.\n"
aide() aide()
if len(sys.argv) <= 2 : if len(sys.argv) <= 2 :
print "Erreur : aucun motif de recherche défini.\n" print "Erreur : aucun motif de recherche défini.\n"
aide() aide()
else : else :
motif = sys.argv[-1] motif = sys.argv[-1]
@ -154,14 +156,14 @@ if __name__ == "__main__":
recherche = db.search(motif)['adherent'] recherche = db.search(motif)['adherent']
if len(recherche) == 0: if len(recherche) == 0:
print "Erreur : aucun résultat pour %s.\n" % motif print "Erreur : aucun résultat pour %s.\n" % motif
aide() aide()
elif len(recherche) != 1: elif len(recherche) != 1:
print "Erreur : plusieurs résultats pour %s.\n" % motif print "Erreur : plusieurs résultats pour %s.\n" % motif
aide() aide()
else : else :
adherent = recherche[0] adherent = recherche[0]
# On génére alors le postscript # On génére alors le postscript
fichier = generate_ps(sanction, adherent, db) fichier = generate_ps(sanction, adherent, db)
print u'Le fichier %s a été généré.' % fichier print u'Le fichier %s a été généré.' % fichier