Detabification massive.
darcs-hash:20051018083823-d1718-09c2df38cfb707d3c3679188b9b9a812009f4f7c.gz
This commit is contained in:
parent
3c54fb2904
commit
37b21339a6
40 changed files with 1473 additions and 1473 deletions
|
@ -23,14 +23,14 @@ def GrabInfos(aDB):
|
|||
maison = os.listdir('/home')
|
||||
|
||||
for login in maison:
|
||||
compte = CompteRec.CCompte(login)
|
||||
compte = CompteRec.CCompte(login)
|
||||
|
||||
if compte: # il y a un .info, un .plan ou un .www :
|
||||
aDB.Put(login,compte)
|
||||
|
||||
i = i - 1
|
||||
if not i: break # en debogage, on ne mouline pas tous les comptes !
|
||||
|
||||
if compte: # il y a un .info, un .plan ou un .www :
|
||||
aDB.Put(login,compte)
|
||||
|
||||
i = i - 1
|
||||
if not i: break # en debogage, on ne mouline pas tous les comptes !
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -37,239 +37,239 @@ class CCompte:
|
|||
Plan = None
|
||||
URL = None # nom de fichier relatif de la page Web
|
||||
# en général .www/index.html
|
||||
# ou alors URL
|
||||
# ou alors URL
|
||||
|
||||
|
||||
def __init__(self,login = ""):
|
||||
""" Initialisation.
|
||||
""" Initialisation.
|
||||
|
||||
Cette méthode analyse le contenu du compte (login) et remplit
|
||||
self en conséquence. Il est renvoyé 0 dans self.Actif si le compte
|
||||
ne contient ni .info ni .plan. """
|
||||
Cette méthode analyse le contenu du compte (login) et remplit
|
||||
self en conséquence. Il est renvoyé 0 dans self.Actif si le compte
|
||||
ne contient ni .info ni .plan. """
|
||||
|
||||
self.Actif = 0
|
||||
self.Compte = strip(login)
|
||||
|
||||
if not login : return # en principe, on est en de-shelvage ...
|
||||
self.Actif = 0
|
||||
self.Compte = strip(login)
|
||||
|
||||
if not login : return # en principe, on est en de-shelvage ...
|
||||
|
||||
Path = "/home/" + login + "/"
|
||||
|
||||
try: # lecture du .info
|
||||
Path = "/home/" + login + "/"
|
||||
|
||||
try: # lecture du .info
|
||||
f_info = open(Path + ".info","r")
|
||||
info = f_info.readlines()
|
||||
info = f_info.readlines()
|
||||
|
||||
self.ParseInfo(info,login)
|
||||
except:
|
||||
self.ParseInfo(info,login)
|
||||
except:
|
||||
# faut probablement gueuler (sauf si le fichier est
|
||||
# légitimement absent)
|
||||
pass
|
||||
pass
|
||||
|
||||
if not (self.URL):
|
||||
url = ""
|
||||
# rien mis ? on essaye index.html et index.htm dans .www/ :
|
||||
if os.path.isfile("/home/"+login+"/www/index.html"):
|
||||
url = "/~"+login+"/index.html"
|
||||
elif os.path.isfile("/home/"+login+"/www/index.htm"):
|
||||
url = "/~"+login+"/index.htm"
|
||||
elif os.path.isfile("/home/"+login+"/www/default.htm"):
|
||||
url = "/~"+login+"/default.htm"
|
||||
self.URL = url
|
||||
if not (self.URL):
|
||||
url = ""
|
||||
# rien mis ? on essaye index.html et index.htm dans .www/ :
|
||||
if os.path.isfile("/home/"+login+"/www/index.html"):
|
||||
url = "/~"+login+"/index.html"
|
||||
elif os.path.isfile("/home/"+login+"/www/index.htm"):
|
||||
url = "/~"+login+"/index.htm"
|
||||
elif os.path.isfile("/home/"+login+"/www/default.htm"):
|
||||
url = "/~"+login+"/default.htm"
|
||||
self.URL = url
|
||||
|
||||
try: # lecture du .plan
|
||||
f_plan = open(Path + ".plan","r")
|
||||
self.Plan = f_plan.readlines()[:30]
|
||||
self.Active = 1
|
||||
except:
|
||||
pass
|
||||
try: # lecture du .plan
|
||||
f_plan = open(Path + ".plan","r")
|
||||
self.Plan = f_plan.readlines()[:30]
|
||||
self.Active = 1
|
||||
except:
|
||||
pass
|
||||
|
||||
try: # lecture du .project
|
||||
f_project = open(Path + ".project","r")
|
||||
self.Projet = f_project.readlines()[:30]
|
||||
self.Active = 1
|
||||
except:
|
||||
pass
|
||||
try: # lecture du .project
|
||||
f_project = open(Path + ".project","r")
|
||||
self.Projet = f_project.readlines()[:30]
|
||||
self.Active = 1
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
# à ce stade, l'objet est prêt à l'emploi
|
||||
# à ce stade, l'objet est prêt à l'emploi
|
||||
|
||||
def ParseInfo (self,info , login):
|
||||
""" Analyse un fichier .info.
|
||||
""" Analyse un fichier .info.
|
||||
|
||||
cette routine analyse un fichier .info et transfère ses
|
||||
informations si elles sont cohérentes.
|
||||
Les erreurs sont envoyees a self.DisplayError
|
||||
cette routine analyse un fichier .info et transfère ses
|
||||
informations si elles sont cohérentes.
|
||||
Les erreurs sont envoyees a self.DisplayError
|
||||
"""
|
||||
|
||||
nom = None
|
||||
compte = None
|
||||
pseudo = None
|
||||
email = login + "@crans.org"
|
||||
logo = None
|
||||
photo = None
|
||||
devise = None
|
||||
projet = None
|
||||
section = None
|
||||
adresse = None
|
||||
telephone = None
|
||||
url = None
|
||||
version = 1
|
||||
|
||||
for ligne in info :
|
||||
if lstrip(ligne)[:1] == '#': continue # commentaire
|
||||
|
||||
nom = None
|
||||
compte = None
|
||||
pseudo = None
|
||||
email = login + "@crans.org"
|
||||
logo = None
|
||||
photo = None
|
||||
devise = None
|
||||
projet = None
|
||||
section = None
|
||||
adresse = None
|
||||
telephone = None
|
||||
url = None
|
||||
version = 1
|
||||
|
||||
for ligne in info :
|
||||
if lstrip(ligne)[:1] == '#': continue # commentaire
|
||||
|
||||
|
||||
ligne = rstrip(ligne) # vire le \012 final
|
||||
spl_ligne = split(ligne,":")
|
||||
champ = lower(strip(spl_ligne[0]))
|
||||
valeur = strip(join(spl_ligne[1:],":"))
|
||||
|
||||
|
||||
try:
|
||||
if champ=="compte": compte = strip(valeur)
|
||||
elif champ=="nom": nom = valeur
|
||||
elif champ=="pseudo": pseudo = valeur
|
||||
elif champ=="email": email = valeur
|
||||
elif champ=="logo": logo = valeur
|
||||
elif champ=="photo": photo = valeur
|
||||
elif champ=="devise": devise = valeur
|
||||
elif champ=="section": section = valeur
|
||||
elif champ=="adresse": adresse = valeur
|
||||
elif champ=="telephone": telephone = valeur
|
||||
elif champ=="url" : url = valeur
|
||||
elif champ=="version" : version = atoi(strip(valeur))
|
||||
|
||||
ligne = rstrip(ligne) # vire le \012 final
|
||||
spl_ligne = split(ligne,":")
|
||||
champ = lower(strip(spl_ligne[0]))
|
||||
valeur = strip(join(spl_ligne[1:],":"))
|
||||
|
||||
|
||||
try:
|
||||
if champ=="compte": compte = strip(valeur)
|
||||
elif champ=="nom": nom = valeur
|
||||
elif champ=="pseudo": pseudo = valeur
|
||||
elif champ=="email": email = valeur
|
||||
elif champ=="logo": logo = valeur
|
||||
elif champ=="photo": photo = valeur
|
||||
elif champ=="devise": devise = valeur
|
||||
elif champ=="section": section = valeur
|
||||
elif champ=="adresse": adresse = valeur
|
||||
elif champ=="telephone": telephone = valeur
|
||||
elif champ=="url" : url = valeur
|
||||
elif champ=="version" : version = atoi(strip(valeur))
|
||||
except:
|
||||
erreur = [" une erreur est survenue sur le champ "+champ+
|
||||
". Il y a toutes les chances que tu n'aie pas "
|
||||
" respecté la syntaxe de .info. \012",
|
||||
" selon toutes probabilités, une autre erreur "
|
||||
"va se déclencher... on laisse courir.\012",
|
||||
" (non critique)","\012"]
|
||||
self.DisplayError(login,erreur)
|
||||
pass
|
||||
erreur = [" une erreur est survenue sur le champ "+champ+
|
||||
". Il y a toutes les chances que tu n'aie pas "
|
||||
" respecté la syntaxe de .info. \012",
|
||||
" selon toutes probabilités, une autre erreur "
|
||||
"va se déclencher... on laisse courir.\012",
|
||||
" (non critique)","\012"]
|
||||
self.DisplayError(login,erreur)
|
||||
pass
|
||||
|
||||
|
||||
if (url) and (url[:7] != "http://") and (url[:1] != "/"):
|
||||
# c'est un nom de fichier.... on verifie qu'il commence par .www
|
||||
if url[:5] != ".www/" :
|
||||
erreur = ["Le champ url doit etre un URL ou un nom de fichier"
|
||||
"commencant par .www/ \012","(non critique) \012",
|
||||
"\012"]
|
||||
self.DisplayError(login,erreur)
|
||||
else: # c'est bon.. on en fait un url relatif au site...
|
||||
url = "/~"+login+url[:4]
|
||||
pass
|
||||
|
||||
|
||||
if strip(compte) != strip(login):
|
||||
erreur = ["Le champ 'Compte' et le login ne correspondent pas !",
|
||||
" (fatal) ",""]
|
||||
self.DisplayError(login,erreur)
|
||||
raise SyntaxError
|
||||
|
||||
if (url) and (url[:7] != "http://") and (url[:1] != "/"):
|
||||
# c'est un nom de fichier.... on verifie qu'il commence par .www
|
||||
if url[:5] != ".www/" :
|
||||
erreur = ["Le champ url doit etre un URL ou un nom de fichier"
|
||||
"commencant par .www/ \012","(non critique) \012",
|
||||
"\012"]
|
||||
self.DisplayError(login,erreur)
|
||||
else: # c'est bon.. on en fait un url relatif au site...
|
||||
url = "/~"+login+url[:4]
|
||||
pass
|
||||
|
||||
|
||||
if strip(compte) != strip(login):
|
||||
erreur = ["Le champ 'Compte' et le login ne correspondent pas !",
|
||||
" (fatal) ",""]
|
||||
self.DisplayError(login,erreur)
|
||||
raise SyntaxError
|
||||
|
||||
if version < 1:
|
||||
erreur = ["La version du fichier (champ Version) est inférieure ",
|
||||
"a 1 ",
|
||||
"(non critique)",""]
|
||||
self.DisplayError(login,erreur)
|
||||
#raise SyntaxError
|
||||
if version < 1:
|
||||
erreur = ["La version du fichier (champ Version) est inférieure ",
|
||||
"a 1 ",
|
||||
"(non critique)",""]
|
||||
self.DisplayError(login,erreur)
|
||||
#raise SyntaxError
|
||||
|
||||
if version > 1:
|
||||
erreur = ["Ce mkinfos est probablement obsolète ou une erreur "
|
||||
" existe sur le champ Version. ",
|
||||
" (non critique)",""]
|
||||
self.DisplayError(login,erreur)
|
||||
if version > 1:
|
||||
erreur = ["Ce mkinfos est probablement obsolète ou une erreur "
|
||||
" existe sur le champ Version. ",
|
||||
" (non critique)",""]
|
||||
self.DisplayError(login,erreur)
|
||||
|
||||
|
||||
self.Compte = compte
|
||||
self.Actif = 1
|
||||
self.Pseudo = pseudo
|
||||
self.Email = email
|
||||
self.Logo = logo
|
||||
self.Photo = photo
|
||||
self.Devise = devise
|
||||
self.Section = section
|
||||
self.Projet = projet
|
||||
self.Adresse = adresse
|
||||
self.Telephone = telephone
|
||||
self.Nom = nom
|
||||
self.URL = url
|
||||
self.Compte = compte
|
||||
self.Actif = 1
|
||||
self.Pseudo = pseudo
|
||||
self.Email = email
|
||||
self.Logo = logo
|
||||
self.Photo = photo
|
||||
self.Devise = devise
|
||||
self.Section = section
|
||||
self.Projet = projet
|
||||
self.Adresse = adresse
|
||||
self.Telephone = telephone
|
||||
self.Nom = nom
|
||||
self.URL = url
|
||||
|
||||
if logo:
|
||||
try:
|
||||
self.FindLogo()
|
||||
except:
|
||||
erreur = ["Erreur a la récupération du logo",
|
||||
"(non critique)",
|
||||
""]
|
||||
self.DisplayError(login,erreur)
|
||||
pass
|
||||
|
||||
if logo:
|
||||
try:
|
||||
self.FindLogo()
|
||||
except:
|
||||
erreur = ["Erreur a la récupération du logo",
|
||||
"(non critique)",
|
||||
""]
|
||||
self.DisplayError(login,erreur)
|
||||
pass
|
||||
|
||||
|
||||
def DisplayError(self, login, errorlines):
|
||||
""" Affiche une erreur de compilation du .info de 'login'.
|
||||
|
||||
errorlines contient un tableau de chaines de caracteres.
|
||||
En general, on changera cette routine (par exemple pour
|
||||
envoyer un mail a 'login'
|
||||
"""
|
||||
""" Affiche une erreur de compilation du .info de 'login'.
|
||||
|
||||
errorlines contient un tableau de chaines de caracteres.
|
||||
En general, on changera cette routine (par exemple pour
|
||||
envoyer un mail a 'login'
|
||||
"""
|
||||
|
||||
print "Erreur dans .info , compte =",login
|
||||
for i in errorlines:
|
||||
print i
|
||||
print ""
|
||||
print "Erreur dans .info , compte =",login
|
||||
for i in errorlines:
|
||||
print i
|
||||
print ""
|
||||
|
||||
|
||||
|
||||
def FindLogo(self):
|
||||
""" Récupere le logo.
|
||||
|
||||
Cette routine récupere le logo contenu dans le champ Logo du compte
|
||||
'account' et le stocke dans $InfoDir/$login.logo.extension
|
||||
Le champ Logo du compte est alors mis à jour.
|
||||
"""
|
||||
|
||||
|
||||
import urllib # urllib.urlopen()
|
||||
import posixpath # posixpath.splitext()
|
||||
""" Récupere le logo.
|
||||
|
||||
Cette routine récupere le logo contenu dans le champ Logo du compte
|
||||
'account' et le stocke dans $InfoDir/$login.logo.extension
|
||||
Le champ Logo du compte est alors mis à jour.
|
||||
"""
|
||||
|
||||
|
||||
import urllib # urllib.urlopen()
|
||||
import posixpath # posixpath.splitext()
|
||||
|
||||
# Où sont stockés les logos
|
||||
InfoDir = "/home/httpd/html/info-2/"
|
||||
InfoPath = "/info-2/"
|
||||
|
||||
if not self.Logo:
|
||||
return # rien a faire !
|
||||
logopath = self.Logo
|
||||
self.Logo = ""
|
||||
olddir = os.getcwd()
|
||||
# Où sont stockés les logos
|
||||
InfoDir = "/home/httpd/html/info-2/"
|
||||
InfoPath = "/info-2/"
|
||||
|
||||
if not self.Logo:
|
||||
return # rien a faire !
|
||||
logopath = self.Logo
|
||||
self.Logo = ""
|
||||
olddir = os.getcwd()
|
||||
|
||||
os.chdir("/home/"+self.Compte)
|
||||
try:
|
||||
rf = urllib.urlopen(logopath)
|
||||
|
||||
base,ext = posixpath.splitext(logopath)
|
||||
logoname = self.Compte + ".logo" + ext
|
||||
f = open(InfoDir + logoname,"w")
|
||||
os.chdir("/home/"+self.Compte)
|
||||
try:
|
||||
rf = urllib.urlopen(logopath)
|
||||
|
||||
base,ext = posixpath.splitext(logopath)
|
||||
logoname = self.Compte + ".logo" + ext
|
||||
f = open(InfoDir + logoname,"w")
|
||||
|
||||
data = rf.read(-1) # tout d'un coup !
|
||||
data = rf.read(-1) # tout d'un coup !
|
||||
|
||||
f.write(data) # hop !
|
||||
f.write(data) # hop !
|
||||
|
||||
# on ferme !
|
||||
f.close()
|
||||
rf = None
|
||||
# on ferme !
|
||||
f.close()
|
||||
rf = None
|
||||
|
||||
# bon on peut mettre a jour le compte maintenant !
|
||||
self.Logo = InfoPath + logoname
|
||||
finally:
|
||||
os.chdir(olddir)
|
||||
# bon on peut mettre a jour le compte maintenant !
|
||||
self.Logo = InfoPath + logoname
|
||||
finally:
|
||||
os.chdir(olddir)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# A ce stade : on a defini une classe "CCompte" capable d'analyser le .info
|
||||
# et le .plan, une fois donne un nom de login.
|
||||
|
||||
# test debug :
|
||||
|
||||
if 0:
|
||||
if 0:
|
||||
A = CCompte("chepelov")
|
||||
print A.__dict__
|
||||
|
|
|
@ -22,15 +22,15 @@ class CInfoDb:
|
|||
db = None
|
||||
|
||||
def __init__(self,filename,mode="rw"):
|
||||
self.db = shelve.open(filename,mode)
|
||||
|
||||
self.db = shelve.open(filename,mode)
|
||||
|
||||
def __del__(self):
|
||||
self.db.close()
|
||||
self.db.close()
|
||||
|
||||
def Put(self,name,obj):
|
||||
""" Ajoute un element."""
|
||||
self.db[name] = obj
|
||||
""" Ajoute un element."""
|
||||
self.db[name] = obj
|
||||
|
||||
def Get(self,name):
|
||||
""" recupere un element. """
|
||||
return self.db[name]
|
||||
""" recupere un element. """
|
||||
return self.db[name]
|
||||
|
|
|
@ -13,7 +13,7 @@ import sys
|
|||
import commands
|
||||
|
||||
#Excluded = ['snepa','lasauce','cineclub','innomine','hubris','gmpcad',
|
||||
# 'jdr','coope','asme','sono','rilem','krobot']
|
||||
# 'jdr','coope','asme','sono','rilem','krobot']
|
||||
Excluded = []
|
||||
|
||||
|
||||
|
@ -48,40 +48,40 @@ compteur = 4
|
|||
for key in keys:
|
||||
compte = DB.Get(key)
|
||||
#sys.stderr.write('%s\n'%key)
|
||||
|
||||
|
||||
try:
|
||||
if compte.URL and not (compte.Compte in Excluded):
|
||||
s = ' <td align="center" valign="center" width="25%">\n\
|
||||
if compte.URL and not (compte.Compte in Excluded):
|
||||
s = ' <td align="center" valign="center" width="25%">\n\
|
||||
<font style="font-size: x-small" face="Verdana, Tahoma, Arial, Helvetica, sans-serif" color="#000000" >\n'
|
||||
|
||||
if compte.Logo : l = compte.Logo
|
||||
else: l = "/images/crans-mini.jpg"
|
||||
|
||||
if compte.Logo : l = compte.Logo
|
||||
else: l = "/images/crans-mini.jpg"
|
||||
|
||||
url = compte.URL
|
||||
s = s + ' <a href="' + url + '"><img src="'+l+'" alt="*" border=0></a><br>'
|
||||
if compte.Nom: nom = compte.Nom
|
||||
else: nom = compte.Compte
|
||||
url = compte.URL
|
||||
s = s + ' <a href="' + url + '"><img src="'+l+'" alt="*" border=0></a><br>'
|
||||
if compte.Nom: nom = compte.Nom
|
||||
else: nom = compte.Compte
|
||||
|
||||
|
||||
s = s + '\n <b> <a href="' + url + '">' + nom + '</a></b><br>'
|
||||
|
||||
if compte.Pseudo:
|
||||
s = s + '\n «'+compte.Pseudo+'»<br>'
|
||||
|
||||
if compteur == 0:
|
||||
print " </tr>\n <tr>"
|
||||
s = s + '\n <b> <a href="' + url + '">' + nom + '</a></b><br>'
|
||||
|
||||
if compte.Pseudo:
|
||||
s = s + '\n «'+compte.Pseudo+'»<br>'
|
||||
|
||||
if compteur == 0:
|
||||
print " </tr>\n <tr>"
|
||||
|
||||
print s, # qu'il y ait ou non un pseudo !!!
|
||||
|
||||
if compte.Devise:
|
||||
s = '\n <font style="font-size: xx-small"><i>'+compte.Devise+'</i></font>'
|
||||
print s,
|
||||
print '\n </font>\n </td>'
|
||||
if compte.Devise:
|
||||
s = '\n <font style="font-size: xx-small"><i>'+compte.Devise+'</i></font>'
|
||||
print s,
|
||||
print '\n </font>\n </td>'
|
||||
|
||||
compteur = (compteur + 1)%4
|
||||
compteur = (compteur + 1)%4
|
||||
|
||||
except:
|
||||
pass
|
||||
pass
|
||||
|
||||
print " </tr>\n\
|
||||
</table>\n\
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue