Le Sat, Nov 24, 2007 at 09:57:47PM +0100, David a écrit : > > > > David, do you have plans to disable/fix it? > > I'm actually not having any reliable internet connection; therefore > cannot do anything :(
Hi everybody, I found a script named update-ddtp in /var/lib/gforge/chroot/home/groups/debian-med/scripts. I do not know how to put something like Perl's `__END__' in the Python script, so I just renamed it. I hope that it will not generate too much error messages. Here I attached the script. David, if you think we can substitute one URL by the one suggested before, just let me know. Have a nice day, -- Charles Plessy http://charles.plessy.org Wakō, Saitama, Japan
#!/usr/bin/python # # This Python script is: # (C) 2007, David Paleino <[EMAIL PROTECTED]> # # It is licensed under the terms of GNU General Public License (GPL) # v3, or any later revision. # from urllib import urlopen, urlretrieve import re import HTMLTemplate from datetime import datetime from email.Utils import formatdate import time from Tools import parseTasks, grep base = "/var/lib/gforge/chroot/home/groups/debian-med" #base = "/home/neo/tmp/debmed" ddtp_url = "http://ddtp.debian.net/debian/dists/sid/main/i18n/Translation-%s" fetch_url = "http://kleptog.org/cgi-bin/ddtss2-cgi/%s/fetch?package=%s" trans_url = "http://kleptog.org/cgi-bin/ddtss2-cgi/%s/translate/%s" # Should we dinamically get this list from PO translations # of the website? langs = ["de", "fr", "it", "pt_BR", "es", "ja"] langs.sort() dict = {} longs = {} shorts = {} #['adun.app', 'amap-align', 'amide', 'arb', 'bioimagesuite', 'bioperl', 'biosquid', 'blast2', 'boxshade', 'chemtool', #'cimg-dev', 'clustalw', 'clustalw-mpi', 'clustalx', 'ctn', 'ctn-dev', 'ctsim', 'cycle', 'dcmtk', 'dialign', #'dialign-t', 'dicomnifti', 'emboss', 'fastdnaml', 'fastlink', 'garlic', 'gdpc', 'gff2aplot', 'gff2ps', 'ghemical', #'gnumed-client', 'gromacs', 'hmmer', 'imagej', 'kalign', 'libbio-ruby', 'libfslio0', 'libfslio0-dev', #'libinsighttoolkit-dev', 'libmdc2-dev', 'libminc0-dev', 'libncbi6-dev', 'libniftiio0', 'libniftiio0-dev', 'loki', #'mcl', 'medcon', 'melting', 'mencal', 'minc-tools', 'mipe', 'molphy', 'mummer', 'muscle', 'ncbi-epcr', #'ncbi-tools-bin', 'ncbi-tools-x11', 'nifti-bin', 'njplot', 'octave', 'octave2.1', 'paw++', 'perlprimer', 'phylip', #'poa', 'primer3', 'probcons', 'proda', 'pymol', 'python-biopython', 'python-nifti', 'r-base', 'r-base-core', #'r-cran-qtl', 'rasmol', 'readseq', 'seaview', 'sibsim4', 'sigma-align', 'sim4', 't-coffee', 'tigr-glimmer', #'tm-align', 'tree-ppuzzle', 'tree-puzzle', 'treetool', 'treeviewx', 'wise', 'xmedcon', 'zope-zms'] def force_fetch(packages, lang = langs): global langs # If it's a single language to be updated... # # NOT USED CURRENTLY. if type(lang) == "str": for name in packages: urlopen(fetch_url % (lang, name)) else: for lang_name in lang: for pkg_name in packages: #print "Fetching %s - %s" % (lang_name, pkg_name) urlopen(fetch_url % (lang_name, pkg_name)) def get_status(package): global dict global langs status = {} for lang in langs: # print "Parsing %s - %s" % (package, lang) if grep("Package: %s\n" % package, "%s/data/ddtp/Translation-%s" % (base, lang)): status[lang] = 1 else: status[lang] = 0 dict[package] = status def parse_description(package): global dict global longs global shorts tmp_long = {} tmp_short = {} for lang in langs: if dict[package][lang]: f = open("%s/data/ddtp/Translation-%s" % (base, lang), "r") # Package: 9wm\nDescription-md5: (?P<md5sum>.{32})\nDescription-\w+: (?P<short>.*)\n(?P<long>.*\n)\n # TODO: Fix the regex. (it worked in Kodos :() regex = r"""Package: %s Description-md5: (?P<md5sum>.{32}) Description-\w+: (?P<short>.*) (?P<long>(^ .*$\n)+\n?)""" % package p = re.compile(regex, re.MULTILINE) m = p.search(f.read()) if m: tmp_long[lang] = m.group("long").replace("\n ", "<br />").replace("<br />.<br />", "<br /><br />") tmp_short[lang] = m.group("short") f.close() longs[package] = tmp_long shorts[package] = tmp_short def renderTemplate(node, langs, statuses): node.langs.repeat(renderLangs, langs) names = statuses.keys() names.sort() node.packages.repeat(renderStatuses, names, statuses) t = datetime.now() node.date.content = formatdate(time.mktime(t.timetuple())) def renderLangs(node, lang): node.code.raw = "<img src=\"/img/langs/%s.png\" alt=\"%s\" />" % (lang, lang) def renderStatuses(node, package, status): node.name.raw = '<a href="/ddtp/%s.php">%s</a>' % (package, package) langs = dict[package].keys() langs.sort() node.translations.repeat(renderTrans, langs, package, dict[package]) def renderTrans(node, lang, package, status): if status[lang] == 0: node.status.raw = '<a href="%s"><img src="/img/no.png" alt="no" title="%s - <?=_("translation not available")?>" /></a>' % (trans_url % (lang, package), lang) else: node.status.raw = '<a href="%s"><img src="/img/ok.png" alt="<?=_("yes")?>" title="%s - <?=_("translated")?>" /></a><a href="%s"><img src="/img/go.png" alt="<?=_("edit")?>" title="%s - <?=_("edit translation")?>" /></a>' % ("/ddtp/%s.php" % package, lang, trans_url % (lang, package), lang) #tem: # con:package # rep:langs # con:name # con:short # con:long def renderStatic(node, package): node.package.content = package node.langs.repeat(renderSingleTrans, dict[package], package) t = datetime.now() node.date.content = formatdate(time.mktime(t.timetuple())) def renderSingleTrans(node, lang, package): node.name.raw = '<img src="/img/langs/%s.png" alt="%s" title="%s"/>' % (lang, lang, lang) if dict[package][lang]: node.short.raw = shorts[package][lang] node.long.raw = longs[package][lang] else: node.short.raw = '<?=_("untranslated")?>' node.long.raw = '<?=_("untranslated")?><br /><?=_("Please follow the link below to start translating")?>:<br /><br /><a href="%s">%s</a>' % (trans_url % (lang, package), trans_url % (lang, package)) for lang in langs: url = ddtp_url % lang pos = url.rfind("/") name = "%s/data/ddtp/%s" % (base, url[pos + 1:]) urlretrieve(url, name) packages = parseTasks() #packages = ["adun.app", "gcc", "emboss-explorer"] packages.sort() force_fetch(packages) for item in packages: get_status(item) parse_description(item) #print dict #print longs #print shorts # Let's generate the overview page f = open("%s/htdocs/ddtp.tmpl" % base) tmpl = HTMLTemplate.Template(renderTemplate, f.read()) f.close() f = open("%s/static/ddtp.php" % base, "w") f.write(tmpl.render(langs, dict)) f.close() # Let's generate nice static overview per-package pages for name in packages: outfile = "%s/static/ddtp/%s.php" % (base, name) f = open("%s/htdocs/ddtp_details.tmpl" % base) tmpl = HTMLTemplate.Template(renderStatic, f.read()) f.close() # print tmpl.structure() f = open(outfile, "w") f.write(tmpl.render(name)) f.close()

