[lib/impression] on déplace tout dans impression
Ignore-this: f8064e9bceb8818911dcdaf73cb9f0ec darcs-hash:20090518184018-bd074-ae9530b4d2aba374d34d5a9e26e422c649d9e8db.gz
This commit is contained in:
parent
9e2cd076f5
commit
788012f862
7 changed files with 32 additions and 67 deletions
158
impression/digicode.py
Executable file
158
impression/digicode.py
Executable file
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# #############################################################
|
||||
# ..
|
||||
# .... ............ ........
|
||||
# . ....... . .... ..
|
||||
# . ... .. .. .. .. ..... . ..
|
||||
# .. .. ....@@@. .. . ........ .
|
||||
# .. . .. ..@.@@..@@. .@@@@@@@ @@@@@@. ....
|
||||
# .@@@@. .@@@@. .@@@@..@@.@@..@@@..@@@..@@@@.... ....
|
||||
# @@@@... .@@@.. @@ @@ .@..@@..@@...@@@. .@@@@@. ..
|
||||
# .@@@.. . @@@. @@.@@..@@.@@..@@@ @@ .@@@@@@.. .....
|
||||
# ...@@@.... @@@ .@@.......... ........ ..... ..
|
||||
# . ..@@@@.. . .@@@@. .. ....... . .............
|
||||
# . .. .... .. .. . ... ....
|
||||
# . . .... ............. .. ...
|
||||
# .. .. ... ........ ... ...
|
||||
# ................................
|
||||
#
|
||||
# #############################################################
|
||||
"""
|
||||
digicode.py
|
||||
|
||||
Fonctions pour controler le digicode du 4@J (simulation)
|
||||
|
||||
Copyright (c) 2006, 2007, 2008, 2009 by Cr@ns (http://www.crans.org)
|
||||
"""
|
||||
import sys, time, tempfile, os, commands, string, random
|
||||
import crans.utils.files
|
||||
# #############################################################
|
||||
# CONSTANTES
|
||||
# #############################################################
|
||||
CODES_SERVER = "zamok"
|
||||
CODES_DIR = "/var/impression/codes/"
|
||||
|
||||
|
||||
# #############################################################
|
||||
# EXCEPTIONS
|
||||
# #############################################################
|
||||
def CodeAlreadyExists(Exception):
|
||||
pass
|
||||
|
||||
# #############################################################
|
||||
# FONCTIONS
|
||||
# #############################################################
|
||||
# test pour voir si on est bien sur la bonne machine
|
||||
import socket
|
||||
if socket.gethostname() != CODES_SERVER:
|
||||
CODES_DIR = tempfile.mkdtemp(prefix='fake_digicode')
|
||||
FAKE_DIR = True
|
||||
#raise EnvironmentError, "La manipulation des codes pour le digicode n'est possible que sur %s" % CODES_SERVER
|
||||
else:
|
||||
FAKE_DIR = False
|
||||
|
||||
def __del__():
|
||||
if FAKE_DIR:
|
||||
os.rmdir(CODES_DIR)
|
||||
|
||||
|
||||
def __init__():
|
||||
pass
|
||||
# ###############################
|
||||
# save_code
|
||||
# ###############################
|
||||
# enregistre le codes avec "monString" dans le fichier
|
||||
#
|
||||
def save_code(code, monString=""):
|
||||
"""enregistre le codes avec "monString" dans le fichier """
|
||||
code = str(code)
|
||||
if os.path.exists( os.path.join( CODES_DIR, code ) ):
|
||||
raise CodeAlreadyExists
|
||||
# On enregistre le fichier avec le code pour numero
|
||||
codefichier = open( os.path.join( CODES_DIR, code ) , 'w')
|
||||
codefichier.write(monString)
|
||||
codefichier.write("\n")
|
||||
codefichier.close()
|
||||
return code
|
||||
|
||||
|
||||
# ###############################
|
||||
# gen_code
|
||||
# ###############################
|
||||
# genere un code aleatoire
|
||||
# et l'enregistre
|
||||
#
|
||||
def gen_code(user_name):
|
||||
""" Genere un code au hasard l'enregistre avec user_name dans le fichier"""
|
||||
# Generation du code et ecriture du code
|
||||
rand=random.Random()
|
||||
# Graine automatique avec le temps
|
||||
rand.seed()
|
||||
|
||||
for i in range(1000):
|
||||
# On genere un code
|
||||
code = rand.randint(100000, 999999)
|
||||
# Si le code est libre, on sort de la boucle
|
||||
if not os.path.exists( os.path.join( CODES_DIR, str( code ) ) ):
|
||||
break
|
||||
|
||||
else:
|
||||
# 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" )
|
||||
try:
|
||||
sys.stderr.write("DEBUG: Un rapport de bug a ete automatiquement envoye.\n")
|
||||
except:
|
||||
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: Penser a ouvrir a l'adherent debite...\n")
|
||||
return
|
||||
save_code(code, user_name)
|
||||
return code
|
||||
|
||||
|
||||
# ###############################
|
||||
# list_code
|
||||
# ###############################
|
||||
# liste les codes et leur age en secondes
|
||||
#
|
||||
def list_code():
|
||||
"""
|
||||
Renvoie la liste des codes existants.
|
||||
La liste est sous la forme [(code, age (en sec), contenu du fichier),...]
|
||||
"""
|
||||
files = os.listdir(CODES_DIR)
|
||||
code_list = []
|
||||
for aCode in files:
|
||||
age = crans.utils.files.ageOfFile(os.path.join(CODES_DIR, aCode ) )
|
||||
content = read_code_file(aCode)
|
||||
code_list.append((aCode, age, content ) )
|
||||
return code_list
|
||||
|
||||
def read_code_file(code):
|
||||
"""
|
||||
Lis le fichier correspondant au code.
|
||||
Renvoie le contenu du fichier.
|
||||
"""
|
||||
myfile = open(os.path.join(CODES_DIR, code ), 'r')
|
||||
lineStr = myfile.readline()
|
||||
myfile.close()
|
||||
return lineStr.replace('\n','')
|
||||
|
||||
|
||||
# ###############################
|
||||
# menage
|
||||
# ###############################
|
||||
# supprime les codes vieux de plus de 24h
|
||||
#
|
||||
def menage():
|
||||
"""
|
||||
Supprime les codes vieux de plus de 24h
|
||||
"""
|
||||
fileList = os.listdir(CODES_DIR)
|
||||
for aFile in fileList:
|
||||
aFilePath = os.path.join(CODES_DIR, aFile)
|
||||
if os.path.isfile(aFilePath):
|
||||
if crans.utils.files.fileIsOlderThan(aFilePath, days=1):
|
||||
os.remove(aFilePath)
|
Loading…
Add table
Add a link
Reference in a new issue