Changeset 266:62850df3abbe in livinglogic.python.www for site/Python_xmlns.py

Show
Ignore:
Timestamp:
06/18/04 20:34:34 (15 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add sims info (and reorder elements, so that the model can be set inside
the element definition)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • site/Python_xmlns.py

    r251 r266  
    33 
    44from ll import url 
    5 from ll.xist import xsc, parsers 
     5from ll.xist import xsc, sims, parsers 
    66from ll.xist.ns import html, chars, htmlspecials, specials, abbr, meta, doc, code, xml, text 
    77 
     
    748748 
    749749 
     750class pageref(xsc.Element): 
     751    model = sims.NoElements() 
     752    class Attrs(xsc.Element.Attrs): 
     753        class ref(xsc.TextAttr): pass 
     754 
     755    def convert(self, converter): 
     756        if "ref" in self.attrs: 
     757            page = pages[unicode(self["ref"].convert(converter))] 
     758        else: 
     759            page = pages 
     760        e = html.a(self.content, href=page.getURL(), title=page.getDescription()) 
     761        return e.convert(converter) 
     762 
     763 
     764class download(xsc.Element): 
     765    model = sims.Empty() 
     766    class Attrs(xsc.Element.Attrs): 
     767        class href(xsc.TextAttr): pass 
     768        class type(xsc.TextAttr): pass 
     769 
     770    def convert(self, converter): 
     771        target = converter.target 
     772        name = url.URL(unicode(self["href"].convert(converter))).file 
     773        if "type" in self.attrs: 
     774            type = self["type"] 
     775        elif name.endswith(".tar.gz") or name.endswith(".tar.bz2") or name.endswith(".zip"): 
     776            type = "Source" 
     777        elif name.endswith(".exe"): 
     778            type = "Windows installer" 
     779        elif name.endswith(".src.rpm"): 
     780            type = "Source RPM" 
     781        elif name.endswith(".rpm"): 
     782            type = "Binary RPM" 
     783        else: 
     784            type = chars.nbsp() 
     785 
     786        if issubclass(target, doc): 
     787            e = target.item( 
     788                target.link(unicode(name), href=("http://ftp.livinglogic.de/", self["href"])), 
     789                " (", 
     790                type, 
     791                ", ", 
     792                specials.filesize(href=("http://ftp.livinglogic.de/", self["href"])), 
     793                " bytes)" 
     794            ) 
     795        else: 
     796            e = html.tr( 
     797                html.td(html.a(unicode(name), href=("http://ftp.livinglogic.de/", self["href"]), title=("Download http://ftp.livinglogic.de/", self["href"])), class_="file"), 
     798                html.td(type, class_="type"), 
     799                html.td(specials.filesize(href=("http://ftp.livinglogic.de/", self["href"])), class_="size"), 
     800                class_="download" 
     801            ) 
     802        return e.convert(converter) 
     803 
     804 
     805class downloads(xsc.Element): 
     806    model = sims.Elements(download) 
     807    class Attrs(xsc.Element.Attrs): 
     808        class version(xsc.TextAttr): pass 
     809        class date(xsc.TextAttr): pass 
     810 
     811    def convert(self, converter): 
     812        target = converter.target 
     813        if issubclass(target, doc): 
     814            e = target.section( 
     815                target.title("Version ", self["version"], " (released ", self["date"], ")"), 
     816                target.ulist(self.content) 
     817            ) 
     818        else: 
     819            e = xsc.Frag( 
     820                html.tr( 
     821                    html.th(self["version"], class_="version"), 
     822                    html.th("Type", class_="type"), 
     823                    html.th("Size", class_="size") 
     824                ), 
     825                self.content 
     826            ) 
     827            if "date" in self.attrs: 
     828                e[0][0].append(" ", html.span("(released ", self["date"], ")", class_="note")) 
     829        return e.convert(converter) 
     830 
     831 
     832class alldownloads(xsc.Element): 
     833    model = sims.Elements(downloads) 
     834 
     835    def convert(self, converter): 
     836        target = converter.target 
     837        if issubclass(target, doc): 
     838            e = self.content 
     839        else: 
     840            e = html.div( 
     841                htmlspecials.plaintable( 
     842                    self.content, 
     843                    class_="downloads" 
     844                ), 
     845                align="center" 
     846            ) 
     847        return e.convert(converter) 
     848 
     849 
     850class content(xsc.Element): 
     851    model = sims.Elements(alldownloads, doc.block) 
     852    def convert(self, converter): 
     853        return self.content.convert(converter) 
     854 
     855 
    750856class page(xsc.Element): 
    751     empty = False 
     857    model = sims.Elements(content) 
    752858    class Attrs(xsc.Element.Attrs): 
    753859        class title(xsc.TextAttr): pass 
     
    9941100 
    9951101 
    996 class content(xsc.Element): 
    997     empty = False 
    998     def convert(self, converter): 
    999         return self.content.convert(converter) 
    1000  
    1001  
    1002 class pageref(xsc.Element): 
    1003     empty = False 
    1004     class Attrs(xsc.Element.Attrs): 
    1005         class ref(xsc.TextAttr): pass 
    1006  
    1007     def convert(self, converter): 
    1008         if "ref" in self.attrs: 
    1009             page = pages[unicode(self["ref"].convert(converter))] 
    1010         else: 
    1011             page = pages 
    1012         e = html.a(self.content, href=page.getURL(), title=page.getDescription()) 
    1013         return e.convert(converter) 
    1014  
    1015  
    1016 class alldownloads(xsc.Element): 
    1017     empty = False 
    1018  
    1019     def convert(self, converter): 
    1020         target = converter.target 
    1021         if issubclass(target, doc): 
    1022             e = self.content 
    1023         else: 
    1024             e = html.div( 
    1025                 htmlspecials.plaintable( 
    1026                     self.content, 
    1027                     class_="downloads" 
    1028                 ), 
    1029                 align="center" 
    1030             ) 
    1031         return e.convert(converter) 
    1032  
    1033  
    1034 class downloads(xsc.Element): 
    1035     empty = False 
    1036     class Attrs(xsc.Element.Attrs): 
    1037         class version(xsc.TextAttr): pass 
    1038         class date(xsc.TextAttr): pass 
    1039  
    1040     def convert(self, converter): 
    1041         target = converter.target 
    1042         if issubclass(target, doc): 
    1043             e = target.section( 
    1044                 target.title("Version ", self["version"], " (released ", self["date"], ")"), 
    1045                 target.ulist(self.content) 
    1046             ) 
    1047         else: 
    1048             e = xsc.Frag( 
    1049                 html.tr( 
    1050                     html.th(self["version"], class_="version"), 
    1051                     html.th("Type", class_="type"), 
    1052                     html.th("Size", class_="size") 
    1053                 ), 
    1054                 self.content 
    1055             ) 
    1056             if "date" in self.attrs: 
    1057                 e[0][0].append(" ", html.span("(released ", self["date"], ")", class_="note")) 
    1058         return e.convert(converter) 
    1059  
    1060  
    1061 class download(xsc.Element): 
    1062     empty = True 
    1063     class Attrs(xsc.Element.Attrs): 
    1064         class href(xsc.TextAttr): pass 
    1065         class type(xsc.TextAttr): pass 
    1066  
    1067     def convert(self, converter): 
    1068         target = converter.target 
    1069         name = url.URL(unicode(self["href"].convert(converter))).file 
    1070         if "type" in self.attrs: 
    1071             type = self["type"] 
    1072         elif name.endswith(".tar.gz") or name.endswith(".tar.bz2") or name.endswith(".zip"): 
    1073             type = "Source" 
    1074         elif name.endswith(".exe"): 
    1075             type = "Windows installer" 
    1076         elif name.endswith(".src.rpm"): 
    1077             type = "Source RPM" 
    1078         elif name.endswith(".rpm"): 
    1079             type = "Binary RPM" 
    1080         else: 
    1081             type = chars.nbsp() 
    1082  
    1083         if issubclass(target, doc): 
    1084             e = target.item( 
    1085                 target.link(unicode(name), href=("http://ftp.livinglogic.de/", self["href"])), 
    1086                 " (", 
    1087                 type, 
    1088                 ", ", 
    1089                 specials.filesize(href=("http://ftp.livinglogic.de/", self["href"])), 
    1090                 " bytes)" 
    1091             ) 
    1092         else: 
    1093             e = html.tr( 
    1094                 html.td(html.a(unicode(name), href=("http://ftp.livinglogic.de/", self["href"]), title=("Download http://ftp.livinglogic.de/", self["href"])), class_="file"), 
    1095                 html.td(type, class_="type"), 
    1096                 html.td(specials.filesize(href=("http://ftp.livinglogic.de/", self["href"])), class_="size"), 
    1097                 class_="download" 
    1098             ) 
    1099         return e.convert(converter) 
    1100  
    1101  
    11021102class xmlns(xsc.Namespace): 
    11031103    xmlname = "py"