scripts/wiki/macro/PagesPerso.py
gdetrez 839ecbe22c dimensionnement proportionnel des images
darcs-hash:20060416120357-f46e9-fb28bb28ee029548b205ddf28e4c7645cb36bc26.gz
2006-04-16 14:03:57 +02:00

87 lines
2.9 KiB
Python

# -*- encoding: iso-8859-15 -*-
import os
class account:
"""Classe représentant la page perso d'une personne"""
def __init__(self, login):
"""Instanciation avec le `login' de la personne"""
self.login = login
_info = None
def info(self, champ):
"""Retourne le contenu du champ `champ' dans le fichier info"""
if self._info == None:
try:
lignes = file("/home/%s/.info" % self.login)
except IOError:
lignes = []
# self._info est un dictionnaire qui reprend le contenu du .info
self._info = dict(map(lambda z: (unicode(z[0].lower(),"iso-8859-15"),
unicode(z[1],"iso-8859-15")),
filter(lambda w: len(w) == 2 and len(w[1]),
map(lambda x: map(lambda y: y.strip(),
x.split(":")),
lignes))))
print self._info
if self._info.has_key(champ.lower()):
return self._info[champ.lower()]
else:
return u""
def chemin(self):
"""Chemin vers le www"""
return u"/home/%s/www" % self.login
def url(self):
"""URL vers la page perso"""
return u"http://perso.crans.org/~%s/" % self.login
def logo(self):
"""URL du logo s'il y en a un"""
if self.info("logo"):
# Le logo peut être en absolu ou en relatif
if self.info("logo").startswith("/home/%s/www" % self.login):
logo = self.info("logo").replace("/home/%s/www/" % self.login, "")
else:
logo = self.info("logo")
if os.path.isfile("/home/%s/www/%s" % (self.login, logo)):
return u"%s%s" % (self.url(), logo)
return u"http://perso.crans.org/pageperso.png"
def __str__(self):
"""Renvoie le code HTML correspondant au fichier .info"""
html = [ u'<div class="vignetteperso">',
u'<a href="%s">' % self.url(),
u'<img src="%s" alt="%s">' % (self.logo(), self.login),
u'</a><br>',
self.info("nom") and u'<b>%s</b><br>' % self.info("nom") or u'%s<br>' % self.login,
self.info("devise") and u'<i>%s</i>' % self.info("devise") or u'',
u'</div>' ]
return u'\n'.join(html)
def comptes():
"""Retourne la liste des comptes"""
def execute(macro, args):
# La liste des comptes :
dirs = filter(lambda x: os.path.isdir(u"/home/%s/www" % x),
os.listdir(u"/home"))
dirs.sort()
html = u"""
<style type="text/css">
<!--
@import url(/wiki/common/pagesPersos.css);
-->
</style>"""
for d in dirs:
html = u"%s\n%s" % (html, account(d).__str__())
html += u'<br style="clear: both">'
return html