Le jeudi 6 juillet 2006 09:15, Patrice Karatchentzeff a écrit :
> J'ai des soucis avec Mailman et le changement de nom d'une machine...
>
> Dans les messages de templates de Mailman, les liens sont faux pour le
> nom de la machine.
>
> D'après les templates (par exemple, templates/en/postheld.txt), le
> lien est obtenu via la variable %(confirm)s...
>
> Si on gratouille un peu le code de Python, cette variable s'obtient par
> GetScriptURL qui est défini par ScriptURL dans Util.py... La définition
> est celle-là :
>
> def ScriptURL(target, web_page_url=None, absolute=False):
> """target - scriptname only, nothing extra
> web_page_url - the list's configvar of the same name
> absolute - a flag which if set, generates an absolute url
> """
> if web_page_url is None:
> web_page_url = mm_cfg.DEFAULT_URL_PATTERN % get_domain()
> if web_page_url[-1] <> '/':
> web_page_url = web_page_url + '/'
> if web_page_url[-1] <> '/':
> web_page_url = web_page_url + '/'
> #
> web_page_url = mm_cfg.DEFAULT_URL_PATTERN % get_domain()
> if web_page_url[-1] <> '/':
> web_page_url = web_page_url + '/'
> if web_page_url[-1] <> '/':
> web_page_url = web_page_url + '/'
> #
> fullpath = os.environ.get('REQUEST_URI')
> if fullpath is None:
> fullpath = os.environ.get('SCRIPT_NAME', '') + \
> os.environ.get('PATH_INFO', '')
> baseurl = urlparse.urlparse(web_page_url)[2]
> if not absolute and fullpath.endswith(baseurl):
> # Use relative addressing
> fullpath = fullpath[len(baseurl):]
> i = fullpath.find('?')
> if i > 0:
> count = fullpath.count('/', 0, i)
> else:
> count = fullpath.count('/')
> path = ('../' * count) + target
> else:
> path = web_page_url + target
> return path + mm_cfg.CGIEXT
>
> Voilà, c'est beau comme du python, certainement hyper maintenable par
> les cerveaux de l'équipe de dév de Mailman mais j'aimerai comprendre
> que cela fait pour que je puisse enfin tuner le mm_cfg.py (encore un
> truc merveilleux de Mailman...) et que cette migration en soit enfin
> une...
Petit cours de python pour t'aider à trouver :
>>> d = {'confirm':'blablabla', 'truc':1, 'bidule':2}
>>> print "%(confirm)s : %(truc)d" % d
blablabla : 1
Qu'est-ce qu'il y a dans la variable DEFAULT_URL_PATTERN du module
mm_cfg.py ?
Il faudrait aussi savoir ce que retourne get_domain()...
<troll>
> PS : je ne sais pas ce que je hais le plus : python ou les
> développeurs Python :)
Faut avouer que ce code n'est pas des plus limpides ; un code objet serait
certainement plus lisible. Ça doit être un transfuge Perl qui a développé
ça, et qui n'a pas encore pris les bonnes habitudes ;o)
N'empèche, sans connaître python, tu es déjà allé assez loin dans ton
analyse...
</troll>
--
Frédéric
http://www.gbiloba.org