diff --git a/wiki/macro/PagesClubs.py b/wiki/macro/PagesClubs.py index 10846f29..93a230e0 100644 --- a/wiki/macro/PagesClubs.py +++ b/wiki/macro/PagesClubs.py @@ -1,87 +1,19 @@ # -*- encoding: iso-8859-15 -*- import os - -class account: - """Classe représentant la page perso d'un club""" - - def __init__(self, login): - """Instanciation avec le `login' du club""" - 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/club/%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/club/%s" % self.login - - def url(self): - """URL vers la page du club""" - return u"http://clubs.ens-cachan.fr/%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/club%s" % self.login): - logo = self.info("logo").replace("/home/club/%s" % self.login, "") - else: - logo = self.info("logo") - if os.path.isfile("/home/club/%s/%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'
', - u'' % self.url(), - u'%s' % (self.logo(), self.login), - u'
', - self.info("nom") and u'%s
' % self.info("nom") or u'%s
' % self.login, - self.info("devise") and u'%s' % self.info("devise") or u'', - u'
' ] - return u'\n'.join(html) +import PagesPerso def comptes(): """Retourne la liste des comptes""" - -def execute(macro, args): - - # La liste des comptes : - dirs = filter(lambda x: os.path.isdir(u"/home/club/%s" % x), + return filter(lambda x: os.path.isdir(u"/home/club/%s" % x) and not os.path.islink(u"/home/club/%s" % x), os.listdir(u"/home/club")) - dirs.sort() - html = u""" - """ +def url(self): + """URL vers la page perso""" + return u"http://clubs.ens-cachan.fr/%s/" % self.login - for d in dirs: - html = u"%s\n%s" % (html, account(d).__str__()) - - html += u'
' - return html +PagesPerso.comptes = comptes +PagesPerso.account.home = "/home/club" +PagesPerso.account.www = "" +PagesPerso.account.url = url +execute = PagesPerso.execute diff --git a/wiki/macro/PagesPerso.py b/wiki/macro/PagesPerso.py index 3100af18..6cf053a9 100644 --- a/wiki/macro/PagesPerso.py +++ b/wiki/macro/PagesPerso.py @@ -4,17 +4,22 @@ import os class account: """Classe représentant la page perso d'une personne""" - + + home = "/home" + www = "/www" + def __init__(self, login): """Instanciation avec le `login' de la personne""" self.login = login + self.home = "%s/%s" % (self.home, login) + self.www = self.www _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) + lignes = file("%s/.info" % self.home) except IOError: lignes = [] @@ -34,7 +39,7 @@ class account: def chemin(self): """Chemin vers le www""" - return u"/home/%s/www" % self.login + return u"%s%s" % (self.home, self.www) def url(self): """URL vers la page perso""" @@ -44,11 +49,11 @@ class account: """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, "") + if self.info("logo").startswith(self.chemin()): + logo = self.info("logo").replace("%s/" % self.chemin(), "") else: logo = self.info("logo") - if os.path.isfile("/home/%s/www/%s" % (self.login, logo)): + if os.path.isfile("%s/%s" % (self.chemin(), logo)): return u"%s%s" % (self.url(), logo) return u"http://perso.crans.org/pageperso.png" @@ -65,12 +70,12 @@ class account: def comptes(): """Retourne la liste des comptes""" + return filter(lambda x: os.path.isdir(u"/home/%s/www" % x) and not os.path.islink(u"/home/%s/www" % x), + os.listdir(u"/home")) + 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 = comptes() dirs.sort() html = u"""