Detabification
darcs-hash:20060129142901-d1718-a3ee96a2cff23ce263b8bf73f40d68d95322a95f.gz
This commit is contained in:
parent
c28734caab
commit
0133737924
1 changed files with 119 additions and 119 deletions
|
@ -30,41 +30,41 @@ class test:
|
||||||
|
|
||||||
|
|
||||||
class fichier_impression :
|
class fichier_impression :
|
||||||
nom_job=''
|
nom_job=''
|
||||||
nbr_pages=1
|
nbr_pages=1
|
||||||
nb_copie=1
|
nb_copie=1
|
||||||
taille="A4"
|
taille="A4"
|
||||||
recto_verso=False
|
recto_verso=False
|
||||||
transparent=False
|
transparent=False
|
||||||
couleur=True
|
couleur=True
|
||||||
cout=0.0
|
cout=0.0
|
||||||
portrait=True
|
portrait=True
|
||||||
user=""
|
user=""
|
||||||
user_ldap=None #seras une instance de l'utilisateur dans la base ldap.
|
user_ldap=None #seras une instance de l'utilisateur dans la base ldap.
|
||||||
imprime=-1 #-2 impression en suspend, -1 mise dans la file d'attente, 0 devis, time pour l'heure, -3 déja imprimé ou devis fait depuis trops longtemps : le pdf n'est plus disponible
|
imprime=-1 #-2 impression en suspend, -1 mise dans la file d'attente, 0 devis, time pour l'heure, -3 déja imprimé ou devis fait depuis trops longtemps : le pdf n'est plus disponible
|
||||||
nom_fichier_pdf="" #chemin et nom du pdf
|
nom_fichier_pdf="" #chemin et nom du pdf
|
||||||
nom_fichier_desc="" #chemin et nom du fichier contenant les options de l'utilisateur
|
nom_fichier_desc="" #chemin et nom du fichier contenant les options de l'utilisateur
|
||||||
list_messages=[] #liste d'erreur et de remarque
|
list_messages=[] #liste d'erreur et de remarque
|
||||||
list_messages_importants=[]
|
list_messages_importants=[]
|
||||||
list_messages_admin=[] #liste d'erreur réservé au administrateur
|
list_messages_admin=[] #liste d'erreur réservé au administrateur
|
||||||
erreur_critique=False #True si une erreur empêchant l'impression est apparue
|
erreur_critique=False #True si une erreur empêchant l'impression est apparue
|
||||||
code=None #code pour le digicode
|
code=None #code pour le digicode
|
||||||
modif_epoch=0.0 #moment de création du job ou devis. exprimé en epoch (float) : nombre de seconde depuis la référence du temps unix (+-=1970)
|
modif_epoch=0.0 #moment de création du job ou devis. exprimé en epoch (float) : nombre de seconde depuis la référence du temps unix (+-=1970)
|
||||||
job_id=None #champs pour de futur amélioration
|
job_id=None #champs pour de futur amélioration
|
||||||
|
|
||||||
def actualise_cout(self):
|
def actualise_cout(self):
|
||||||
# Calcul du cout de l'impression :
|
# Calcul du cout de l'impression :
|
||||||
retour = cout(self)
|
retour = cout(self)
|
||||||
|
|
||||||
# Met le prix dans cout s'il n'y a pas d'erreur
|
# Met le prix dans cout s'il n'y a pas d'erreur
|
||||||
if type(retour) is float :
|
if type(retour) is float :
|
||||||
self.cout=retour
|
self.cout=retour
|
||||||
self.list_messages_importants.append('cout')
|
self.list_messages_importants.append('cout')
|
||||||
else:
|
else:
|
||||||
self.erreur_critique=True
|
self.erreur_critique=True
|
||||||
self.list_messages_importants.append('erreur_critique')
|
self.list_messages_importants.append('erreur_critique')
|
||||||
self.list_messages_admin.append('erreur_cout')
|
self.list_messages_admin.append('erreur_cout')
|
||||||
sys.stderr.write(retour)
|
sys.stderr.write(retour)
|
||||||
|
|
||||||
#repond vrai si le solde est assez élevé.
|
#repond vrai si le solde est assez élevé.
|
||||||
def test_cout(self):
|
def test_cout(self):
|
||||||
|
@ -80,16 +80,16 @@ class fichier_impression :
|
||||||
self.user_ldap.save()
|
self.user_ldap.save()
|
||||||
return not (self.cout > (self.user_ldap.solde() - impression.decouvert))
|
return not (self.cout > (self.user_ldap.solde() - impression.decouvert))
|
||||||
|
|
||||||
def gen_code(self):
|
def gen_code(self):
|
||||||
#Génération du code et écriture du code
|
#Génération du code et écriture du code
|
||||||
i=0
|
i=0
|
||||||
code=0
|
code=0
|
||||||
import random
|
import random
|
||||||
#instance de base
|
#instance de base
|
||||||
rand=random.Random()
|
rand=random.Random()
|
||||||
#graine automatique avec le temps
|
#graine automatique avec le temps
|
||||||
rand.seed()
|
rand.seed()
|
||||||
while(i<1000) :
|
while(i<1000) :
|
||||||
#on génère le numéro de session
|
#on génère le numéro de session
|
||||||
code=rand.randint(100000,999999) #pour avoir six chiffres
|
code=rand.randint(100000,999999) #pour avoir six chiffres
|
||||||
#on verifie que le code n'est déja pas utilisé
|
#on verifie que le code n'est déja pas utilisé
|
||||||
|
@ -100,7 +100,7 @@ class fichier_impression :
|
||||||
break
|
break
|
||||||
i=i+1
|
i=i+1
|
||||||
|
|
||||||
if code:
|
if code:
|
||||||
#on enregistre le fichier avec le code pour numéro
|
#on enregistre le fichier avec le code pour numéro
|
||||||
codefichier=open("/var/impression/codes/%d" %code, 'w')
|
codefichier=open("/var/impression/codes/%d" %code, 'w')
|
||||||
#codefichier=open("/localhome/bobot/codes/%d" %code, 'w')
|
#codefichier=open("/localhome/bobot/codes/%d" %code, 'w')
|
||||||
|
@ -108,7 +108,7 @@ class fichier_impression :
|
||||||
codefichier.close()
|
codefichier.close()
|
||||||
self.code=code
|
self.code=code
|
||||||
self.list_messages_importants.append('code')
|
self.list_messages_importants.append('code')
|
||||||
else :
|
else :
|
||||||
# Grosse erreur : on logue, on previent et on stoppe.
|
# Grosse erreur : on logue, on previent et on stoppe.
|
||||||
print ("ERROR: Il n'y a pas de code disponible" )
|
print ("ERROR: Il n'y a pas de code disponible" )
|
||||||
sys.stderr.write ("ERROR: Il n'y a pas de code disponible" )
|
sys.stderr.write ("ERROR: Il n'y a pas de code disponible" )
|
||||||
|
@ -120,47 +120,47 @@ class fichier_impression :
|
||||||
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
|
sys.stderr.write("ERROR: Impossible d'envoyer le rapport de bug.\n")
|
||||||
sys.stderr.write("ERROR: Plus de codes disponibles.\n")
|
sys.stderr.write("ERROR: Plus de codes disponibles.\n")
|
||||||
sys.stderr.write("ERROR: Penser a ouvrir a l'adherent debite...\n")
|
sys.stderr.write("ERROR: Penser a ouvrir a l'adherent debite...\n")
|
||||||
#sys.exit(1)
|
#sys.exit(1)
|
||||||
|
|
||||||
def impression(self):
|
def impression(self):
|
||||||
# Envoi du fichier à CUPS
|
# Envoi du fichier à CUPS
|
||||||
|
|
||||||
#Création de la liste d'options
|
#Création de la liste d'options
|
||||||
#pour le nombre de copies
|
#pour le nombre de copies
|
||||||
options ='-# '+str(self.nb_copie)
|
options ='-# '+str(self.nb_copie)
|
||||||
#options ='-n '+str(self.nb_copie)
|
#options ='-n '+str(self.nb_copie)
|
||||||
|
|
||||||
#pour spécifier l'imprimante
|
#pour spécifier l'imprimante
|
||||||
options +=' -P laserjet'
|
options +=' -P laserjet'
|
||||||
|
|
||||||
#pour spécifier la version du language postscript utilisé par pdftops
|
#pour spécifier la version du language postscript utilisé par pdftops
|
||||||
options +=' -o pdf-level3'
|
options +=' -o pdf-level3'
|
||||||
|
|
||||||
#pour donner le titre de l'impression
|
#pour donner le titre de l'impression
|
||||||
options +=' -T '+self.nom_job
|
options +=' -T '+self.nom_job
|
||||||
#options +=' -t '+self.nom_job
|
#options +=' -t '+self.nom_job
|
||||||
|
|
||||||
#pour donner le login de l'adherent
|
#pour donner le login de l'adherent
|
||||||
options +=' -U '+self.user
|
options +=' -U '+self.user
|
||||||
|
|
||||||
#pour demander une page de garde
|
#pour demander une page de garde
|
||||||
options +=' -o job-sheets=crans' #page de garde de type standard
|
options +=' -o job-sheets=crans' #page de garde de type standard
|
||||||
if self.transparent :
|
if self.transparent :
|
||||||
options+=' -o InputSlot=Tray1 -o Media=Transparency'
|
options+=' -o InputSlot=Tray1 -o Media=Transparency'
|
||||||
if self.taille=='A4':
|
if self.taille=='A4':
|
||||||
options+=(' -o pdf-paper=571x817 -o PageSize=A4')
|
options+=(' -o pdf-paper=571x817 -o PageSize=A4')
|
||||||
else:
|
else:
|
||||||
options+=(' -o pdf-paper=825x1166 -o InputSlot=Tray3 -o HPPaperPolicy=A3 -o PageSize=A3')
|
options+=(' -o pdf-paper=825x1166 -o InputSlot=Tray3 -o HPPaperPolicy=A3 -o PageSize=A3')
|
||||||
|
|
||||||
if self.portrait:
|
if self.portrait:
|
||||||
if self.recto_verso:
|
if self.recto_verso:
|
||||||
options+=(' -o sides=two-sided-long-edge')
|
options+=(' -o sides=two-sided-long-edge')
|
||||||
else:
|
else:
|
||||||
options+=(' -o sides=one-sided')
|
options+=(' -o sides=one-sided')
|
||||||
else:
|
else:
|
||||||
options+=(' -o landscape')
|
options+=(' -o landscape')
|
||||||
if self.recto_verso:
|
if self.recto_verso:
|
||||||
options+=' -o sides=two-sided-short-edge'
|
options+=' -o sides=two-sided-short-edge'
|
||||||
else:
|
else:
|
||||||
options+=' -o sides=one-sided'
|
options+=' -o sides=one-sided'
|
||||||
options+=' -o HPColorasGray='+str(not self.couleur)
|
options+=' -o HPColorasGray='+str(not self.couleur)
|
||||||
|
@ -170,35 +170,35 @@ class fichier_impression :
|
||||||
#else:
|
#else:
|
||||||
#self.job_id=rep.split(' ')[3]
|
#self.job_id=rep.split(' ')[3]
|
||||||
|
|
||||||
def corrige (self):
|
def corrige (self):
|
||||||
#
|
#
|
||||||
# fic_impr=fichier_impression()
|
# fic_impr=fichier_impression()
|
||||||
# fic_impr.user=utilisateur(arguments[2],rw)
|
# fic_impr.user=utilisateur(arguments[2],rw)
|
||||||
#trouve le nombre de pages
|
#trouve le nombre de pages
|
||||||
self.nbr_pages = int(os.popen("pdfinfo %s | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1])
|
self.nbr_pages = int(os.popen("pdfinfo %s | grep Pages " % (self.nom_fichier_pdf)).readline().split()[1])
|
||||||
##Corrige les aberrations
|
##Corrige les aberrations
|
||||||
##Correction des aberations (transparent et recto_verso :) )
|
##Correction des aberations (transparent et recto_verso :) )
|
||||||
##Priorité des informations par ordre décroissant
|
##Priorité des informations par ordre décroissant
|
||||||
##Transparent, paper, nbr_page, recto_verso
|
##Transparent, paper, nbr_page, recto_verso
|
||||||
if (self.taille<>'A4') & (self.taille<>'A3'):
|
if (self.taille<>'A4') & (self.taille<>'A3'):
|
||||||
self.list_messages_importants.append("paper")
|
self.list_messages_importants.append("paper")
|
||||||
self.erreur_critique=True
|
self.erreur_critique=True
|
||||||
if self.transparent:
|
if self.transparent:
|
||||||
if self.paper<>'A4':
|
if self.paper<>'A4':
|
||||||
self.list_messages.append("A3 transparent")
|
self.list_messages.append("A3 transparent")
|
||||||
self.paper='A4'
|
self.paper='A4'
|
||||||
if self.recto_verso:
|
if self.recto_verso:
|
||||||
self.list_messages.append("Recto_verso transparent")
|
self.list_messages.append("Recto_verso transparent")
|
||||||
self.recto_verso=False
|
self.recto_verso=False
|
||||||
if self.nbr_pages==1 & self.recto_verso:
|
if self.nbr_pages==1 & self.recto_verso:
|
||||||
self.list_messages.append("Recto_verso 1 page")
|
self.list_messages.append("Recto_verso 1 page")
|
||||||
self.recto_verso=False
|
self.recto_verso=False
|
||||||
|
|
||||||
def affiche_messages_html(self):
|
def affiche_messages_html(self):
|
||||||
body=""
|
body=""
|
||||||
|
|
||||||
"""if self.imprime:
|
"""if self.imprime:
|
||||||
body=string.join(map ((dico_message_laserjet.get),self.list_messages_importants))
|
body=string.join(map ((dico_message_laserjet.get),self.list_messages_importants))
|
||||||
if len(self.list_messages)<>0:
|
if len(self.list_messages)<>0:
|
||||||
body=body+'\nRemarques:\n'+string.join(map ((dico_message_laserjet.get),self.list_messages))
|
body=body+'\nRemarques:\n'+string.join(map ((dico_message_laserjet.get),self.list_messages))
|
||||||
else:
|
else:
|
||||||
|
@ -211,7 +211,7 @@ class fichier_impression :
|
||||||
return "<p>"+body+"</p>"
|
return "<p>"+body+"</p>"
|
||||||
|
|
||||||
def enregistre_pdf(self,f_value,f_nom,dossier):
|
def enregistre_pdf(self,f_value,f_nom,dossier):
|
||||||
f_nom = f_nom.translate(string.maketrans(string.punctuation+string.whitespace,'_' * len(string.punctuation+string.whitespace)))
|
f_nom = f_nom.translate(string.maketrans(string.punctuation+string.whitespace,'_' * len(string.punctuation+string.whitespace)))
|
||||||
(fd_fichier_desc,self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc',prefix=f_nom,dir=dossier)
|
(fd_fichier_desc,self.nom_fichier_desc) = tempfile.mkstemp(suffix='.desc',prefix=f_nom,dir=dossier)
|
||||||
os.close(fd_fichier_desc)
|
os.close(fd_fichier_desc)
|
||||||
os.chmod(self.nom_fichier_desc,33184)
|
os.chmod(self.nom_fichier_desc,33184)
|
||||||
|
@ -254,16 +254,16 @@ class fichier_impression :
|
||||||
ligne=file_obj_desc.readline()[0:-1]
|
ligne=file_obj_desc.readline()[0:-1]
|
||||||
file_obj_desc.close()
|
file_obj_desc.close()
|
||||||
#Vérifie que le fichier existe bien si il doit exister.
|
#Vérifie que le fichier existe bien si il doit exister.
|
||||||
if not os.access(self.nom_fichier_pdf,os.F_OK):
|
if not os.access(self.nom_fichier_pdf,os.F_OK):
|
||||||
if self.imprime<>-3:
|
if self.imprime<>-3:
|
||||||
self.imprime=-4
|
self.imprime=-4
|
||||||
#else:
|
#else:
|
||||||
# if (time.time()-self.modif_epoch)>duree_vie_pdf:
|
# if (time.time()-self.modif_epoch)>duree_vie_pdf:
|
||||||
# os.remove(self.nom_fichier_pdf)
|
# os.remove(self.nom_fichier_pdf)
|
||||||
# self.imprime=-4
|
# self.imprime=-4
|
||||||
|
|
||||||
|
|
||||||
#fonction utilisé par print et str : renvoie le string canonique de l'objet
|
#fonction utilisé par print et str : renvoie le string canonique de l'objet
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
dict_contraire={'couleur' : 'Noir et Blanc' , 'transparent' : 'Normal' , 'portrait': 'Paysage' , 'recto_verso' : 'Recto' , 'erreur_critique' : "Pas d'erreur"}
|
dict_contraire={'couleur' : 'Noir et Blanc' , 'transparent' : 'Normal' , 'portrait': 'Paysage' , 'recto_verso' : 'Recto' , 'erreur_critique' : "Pas d'erreur"}
|
||||||
dict_normale={'couleur' : 'Couleur' , 'transparent' : 'Transparent' , 'portrait': 'Portrait' , 'recto_verso' : 'Recto-Verso' , 'erreur_critique' : "Problême survenue"}
|
dict_normale={'couleur' : 'Couleur' , 'transparent' : 'Transparent' , 'portrait': 'Portrait' , 'recto_verso' : 'Recto-Verso' , 'erreur_critique' : "Problême survenue"}
|
||||||
|
@ -301,36 +301,36 @@ class fichier_impression :
|
||||||
|
|
||||||
|
|
||||||
def utilisateur(user, rw):
|
def utilisateur(user, rw):
|
||||||
""" Renvoie l'adherent qui imprime le job
|
""" Renvoie l'adherent qui imprime le job
|
||||||
* user est l'utilisateur (argument n°2 des paramètres passés au backend)
|
* user est l'utilisateur (argument n°2 des paramètres passés au backend)
|
||||||
* rw vaut True si on veut modifier le compte LDAP de l'adhérent,
|
* rw vaut True si on veut modifier le compte LDAP de l'adhérent,
|
||||||
False dans le cas contraire
|
False dans le cas contraire
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Impression en local avec les certificats (possible pour le groupe adm)
|
# Impression en local avec les certificats (possible pour le groupe adm)
|
||||||
if user=="root":
|
if user=="root":
|
||||||
sys.stderr.write("ERROR: Utilisateur root passé en paramètre.\n")
|
sys.stderr.write("ERROR: Utilisateur root passé en paramètre.\n")
|
||||||
sys.exit(0) # On conclue l'impression
|
sys.exit(0) # On conclue l'impression
|
||||||
|
|
||||||
# Récupération de l'adhérent
|
# Récupération de l'adhérent
|
||||||
try:
|
try:
|
||||||
base = crans_ldap()
|
base = crans_ldap()
|
||||||
if rw:
|
if rw:
|
||||||
res=base.search("login=%s"%user,'w')['adherent']
|
res=base.search("login=%s"%user,'w')['adherent']
|
||||||
else:
|
else:
|
||||||
res=base.search("login=%s"%user)['adherent']
|
res=base.search("login=%s"%user)['adherent']
|
||||||
except:
|
except:
|
||||||
print ("ERROR: Erreur : Base LDAP non joignable\n")
|
print ("ERROR: Erreur : Base LDAP non joignable\n")
|
||||||
sys.exit(0) # On arrete l'avant-impression ?on arrete l'imprimante?
|
sys.exit(0) # On arrete l'avant-impression ?on arrete l'imprimante?
|
||||||
|
|
||||||
# Si on ne trouve rien :
|
# Si on ne trouve rien :
|
||||||
if len(res) != 1 :
|
if len(res) != 1 :
|
||||||
print ("ERROR: Erreur : adhérent %s non trouvé\n" % user)
|
print ("ERROR: Erreur : adhérent %s non trouvé\n" % user)
|
||||||
sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante
|
sys.exit(0) # On conclue l'avant-impression sans stopper l'imprimante
|
||||||
|
|
||||||
adherent = res[0]
|
adherent = res[0]
|
||||||
sys.stderr.write("DEBUG: Adherent %s recupere.\n" % adherent.Nom())
|
sys.stderr.write("DEBUG: Adherent %s recupere.\n" % adherent.Nom())
|
||||||
return adherent
|
return adherent
|
||||||
|
|
||||||
#fonction cout calcule le pourcentage de couleur sur les pages
|
#fonction cout calcule le pourcentage de couleur sur les pages
|
||||||
# renvoit un string avec le nom de l'erreur si erreur il y a
|
# renvoit un string avec le nom de l'erreur si erreur il y a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue