Changeset 453:5f2926acef9f in livinglogic.python.www for site/Python_xmlns.py

Show
Ignore:
Timestamp:
02/21/07 19:08:46 (13 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

ll-orasql 1.16.

Revamp download stuff: Now ssh-URLs are used to get all files for one
version of the package (and to get the sizes again).

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • site/Python_xmlns.py

    r432 r453  
    11# -*- coding: iso-8859-1 -*- 
     2 
     3 
     4from __future__ import with_statement 
     5 
    26import sys, types, inspect 
    37 
     
    979983    model = sims.Empty() 
    980984    class Attrs(xsc.Element.Attrs): 
    981         class href(xsc.TextAttr): pass 
    982         class type(xsc.TextAttr): pass 
    983  
    984     def convert(self, converter): 
     985        class version(xsc.TextAttr): pass 
     986        class date(xsc.TextAttr): pass 
     987 
     988    base = "ssh://root@ftp.livinglogic.de/~ftp/pub/livinglogic/" 
     989 
     990    def file(self, converter, u): 
    985991        target = converter.target 
    986         name = url.URL(unicode(self["href"].convert(converter))).file 
    987         if "type" in self.attrs: 
    988             type = self["type"] 
    989         elif name.endswith(".tar.gz") or name.endswith(".tar.bz2") or name.endswith(".zip"): 
     992        name = u.file 
     993        if name.endswith(".tar.gz") or name.endswith(".tar.bz2") or name.endswith(".zip"): 
    990994            type = "Source" 
    991995        elif name.endswith(".egg"): 
     
    10131017            type = chars.nbsp() 
    10141018 
     1019        href = ("http://ftp.livinglogic.de/", u.relative(self.base)) 
    10151020        if issubclass(target, doc): 
    10161021            e = target.item( 
    1017                 target.link(unicode(name), href=("http://ftp.livinglogic.de/", self["href"])), 
     1022                target.link(unicode(name), href=href), 
    10181023                " (", 
    10191024                type, 
     
    10221027        else: 
    10231028            e = html.tr( 
    1024                 html.td(html.a(unicode(name), href=("http://ftp.livinglogic.de/", self["href"]), title=("Download http://ftp.livinglogic.de/", self["href"])), class_="file"), 
     1029                html.td(html.a(unicode(name), href=href, title=("Download ", href)), class_="file"), 
    10251030                html.td(type, class_="type"), 
     1031                html.td(u.size(), class_="size"), 
    10261032                class_="download" 
    10271033            ) 
    1028         return e.convert(converter) 
    1029  
    1030  
    1031 class downloads(xsc.Element): 
    1032     model = sims.Elements(download) 
    1033     class Attrs(xsc.Element.Attrs): 
    1034         class version(xsc.TextAttr): pass 
    1035         class date(xsc.TextAttr): pass 
     1034        return e 
    10361035 
    10371036    def convert(self, converter): 
     1037        version = str(self.attrs.version.convert(converter)) 
     1038        name = converter[downloads].name 
     1039        u = url.URL("%s/%s/" % (self.base, name)) 
     1040        files = u/u.files("*-%s[-.][twpz]*" % version) 
     1041        files = (self.file(converter, f) for f in files) 
    10381042        target = converter.target 
    10391043        if issubclass(target, doc): 
    10401044            e = target.section( 
    10411045                target.title("Version ", self["version"], " (released ", self["date"], ")"), 
    1042                 target.ulist(self.content) 
     1046                target.ulist(files), 
    10431047            ) 
    10441048        else: 
     
    10471051                    html.th(self["version"], class_="version"), 
    10481052                    html.th("Type", class_="type"), 
     1053                    html.th("Bytes", class_="size"), 
    10491054                ), 
    1050                 self.content 
     1055                files, 
    10511056            ) 
    10521057            if "date" in self.attrs: 
     
    10551060 
    10561061 
    1057 class alldownloads(xsc.Element): 
    1058     model = sims.Elements(downloads) 
     1062class downloads(xsc.Element): 
     1063    model = sims.Elements(download) 
     1064    class Attrs(xsc.Element.Attrs): 
     1065        class name(xsc.TextAttr): pass 
     1066    class Context(xsc.Element.Context): 
     1067        pass 
    10591068 
    10601069    def convert(self, converter): 
     1070        converter[self].name = str(self.attrs.name.convert(converter)) 
    10611071        target = converter.target 
    10621072        if issubclass(target, doc): 
     
    10741084 
    10751085class page(xsc.Element): 
    1076     model = sims.Elements(alldownloads, doc.block) 
     1086    model = sims.Elements(downloads, doc.block) 
    10771087    class Attrs(xsc.Element.Attrs): 
    10781088        class refresh(xsc.TextAttr): pass