From 1a3ceec41d7c2ec9c00000d6618a2605afe52c60 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Mon, 10 Nov 2008 17:06:47 +0100 Subject: [PATCH] [wiki-lenny/local/macro] Ajout des macro des pages perso/club MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Qui nécessiteront que les homes soient montés en nfs darcs-hash:20081110160647-bd074-fa059858eff0a7f44d638cfc4abb4cb2583bb247.gz --- wiki-lenny/local/macro/PagesClubs.py | 19 +++++ wiki-lenny/local/macro/PagesPerso.py | 104 +++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 wiki-lenny/local/macro/PagesClubs.py create mode 100644 wiki-lenny/local/macro/PagesPerso.py diff --git a/wiki-lenny/local/macro/PagesClubs.py b/wiki-lenny/local/macro/PagesClubs.py new file mode 100644 index 00000000..81ef23fa --- /dev/null +++ b/wiki-lenny/local/macro/PagesClubs.py @@ -0,0 +1,19 @@ +# -*- encoding: iso-8859-1 -*- + +import os +import PagesPerso + +def comptes(): + """Retourne la liste des comptes""" + 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")) + +def url(self): + """URL vers la page perso""" + return u"http://clubs.ens-cachan.fr/%s/" % self.login + +PagesPerso.comptes = comptes +PagesPerso.account.home = "/home/club" +PagesPerso.account.www = "" +PagesPerso.account.url = url +execute = PagesPerso.execute diff --git a/wiki-lenny/local/macro/PagesPerso.py b/wiki-lenny/local/macro/PagesPerso.py new file mode 100644 index 00000000..b014f672 --- /dev/null +++ b/wiki-lenny/local/macro/PagesPerso.py @@ -0,0 +1,104 @@ +# -*- encoding: iso-8859-1 -*- + +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) + + _info = None + def info(self, champ): + """Retourne le contenu du champ `champ' dans le fichier info""" + if self._info == None: + try: + lignes = file("%s/.info" % self.home) + 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"%s%s" % (self.home, self.www) + + 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(self.chemin()): + logo = self.info("logo").replace("%s/" % self.chemin(), "") + else: + logo = self.info("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" + + 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) + +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 makeAnchor(letter): + return u"
%s:
" % ( letter, letter ) + +def makeIndex(letter_list): + index = u'' + for aLetter in letter_list: + index = u"%s%s" % ( index, aLetter, aLetter) + return u"
%s
" % index + +def execute(macro, args): + dirs = comptes() + dirs.sort() + + html = u"" + + premiere_lettre = '' + letter_list = [] + for d in dirs: + if premiere_lettre != d[0]: + premiere_lettre = d[0] + letter_list.append(premiere_lettre) + html = u"%s\n%s" % ( html, makeAnchor(premiere_lettre) ) + html = u"%s\n%s" % (html, account(d).__str__()) + + + index = makeIndex(letter_list) + html = index + html + html += u'
' + return html