Annotation of ECHO_content/ECHO_xslt.py, revision 1.3

1.1       dwinter     1: ### XSLT Class ###
                      2: ### setzt 4 suite vorraus ###
                      3: 
                      4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      5: from Globals import DTMLFile
                      6: from ECHO_Nav import ECHO_pageTemplate
1.2       dwinter     7: from threading import Thread,Timer
1.1       dwinter     8: 
                      9: from Globals import package_home
                     10: 
                     11: import os.path
                     12: 
                     13: import urllib
                     14: 
                     15: try:
                     16:     from Ft.Xml.Xslt.Processor import Processor
                     17:     from Ft.Xml import InputSource
                     18:     
                     19: except:
                     20:     print "4suite has to be installed"
                     21: 
                     22: 
1.2       dwinter    23: class getXML:
                     24:     """get XML thread"""
                     25: 
                     26:     def __init__(self,qs,xsl):
                     27: 
                     28:         self.qs=qs
                     29:         self.xsl=xsl
                     30:         self.result=None
                     31: 
                     32:     def __call__(self):
1.3     ! dwinter    33:         try:
        !            34:            urlH=urllib.urlopen(self.qs)
        !            35:            xml=urlH.read()
        !            36:            urlH.close()
1.2       dwinter    37:         
                     38:        
1.3     ! dwinter    39:            xsltproc=Processor()
        !            40:            document = InputSource.DefaultFactory.fromString(xml)
        !            41:            stylesheet = InputSource.DefaultFactory.fromUri(self.xsl)
        !            42:            xsltproc.appendStylesheet(stylesheet)
        !            43:         
        !            44:            self.result=xsltproc.run(document)
        !            45:            except:
        !            46:        self.result="<html>error</html>"
1.2       dwinter    47:         
                     48:     def getResult(self):
                     49:         return self.result
                     50: 
                     51: 
                     52: 
                     53:     
1.1       dwinter    54: class ECHO_xslt(ECHO_pageTemplate):
                     55:     """ECHO_xslt classe"""
                     56: 
                     57:     meta_type="ECHO_xslt"
1.2       dwinter    58:     def refreshTxt(self):
                     59:         """txt fuer refresh"""
                     60:         return """ 2;url=%s?repeat=%s """%(self.absolute_url(),self.threadName)
1.1       dwinter    61: 
                     62:     def xslt(self):
1.2       dwinter    63:         """xslt"""
                     64:         return self.pt_render()
1.1       dwinter    65: 
                     66: 
                     67: 
1.2       dwinter    68:         
                     69:     def index_html(self,repeat=None):
                     70:         """standard ausgabe"""
                     71:         threadName=repeat
                     72:         
1.1       dwinter    73: 
1.2       dwinter    74:         if not threadName or threadName=="":
                     75:             self.cgiUrl="http://medea.mpiwg-berlin.mpg.de/cgi-bin/search/q1"
1.1       dwinter    76: 
1.2       dwinter    77:             qs="%s?%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING'])
                     78:             xsl=self.absolute_url()+"/xslt"
                     79:             self.xmltrans=getXML(qs,xsl)
                     80:             thread=Thread(target=self.xmltrans)
                     81:             
                     82:             thread.start()
                     83:             
                     84:             self.threadName=thread.getName()[0:]
                     85:             wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])
                     86:             if wait_template:
                     87:                 return wait_template[0][1]()
                     88:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','xsltWait.zpt')).__of__(self)
                     89:             return pt()
                     90:         #xmltrans.run()
                     91:         
                     92:         else:
                     93:             
                     94:             if (self.xmltrans.getResult()==None):
1.3     ! dwinter    95: 
        !            96:                wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])
        !            97:                if wait_template:
        !            98:                    return wait_template[0][1]()
1.2       dwinter    99:                 
                    100:                 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','xsltWait.zpt')).__of__(self)
                    101:                 return pt()
                    102:             else:
                    103:                 return self.xmltrans.getResult()
                    104: 
                    105: 
                    106:     
1.1       dwinter   107: def manage_addECHO_xsltForm(self):
                    108:     """Form for adding"""
                    109:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_xslt.zpt')).__of__(self)
                    110:     return pt()
                    111: 
                    112: from urllib import quote
                    113: 
                    114: 
                    115: def manage_addECHO_xslt(self, id, label, weight= 0,contentType=0,title=None, text=None,
                    116:                            REQUEST=None, submit=None):
                    117:     "Add a Page Template with optional file content."
                    118: 
                    119:     
                    120:     id = str(id)
                    121:     if REQUEST is None:
                    122:         self._setObject(id, ECHO_xslt(id, text))
                    123:         ob = getattr(self, id)
                    124:         setattr(ob,'weight',weight)
                    125:         setattr(ob,'label',label)
                    126:         setattr(ob,'contentType',contentType)
                    127:         if title:
                    128:             ob.pt_setTitle(title)
                    129:         return ob
                    130:     else:
                    131:         file = REQUEST.form.get('file')
                    132:         headers = getattr(file, 'headers', None)
                    133:         if headers is None or not file.filename:
                    134:             zpt = ECHO_xslt(id)
                    135:         else:
                    136:             zpt = ECHO_xslt(id, file, headers.get('contentType'))
                    137: 
                    138:         self._setObject(id, zpt)
                    139:         ob = getattr(self, id)
                    140:         setattr(ob,'weight',weight)
                    141:         setattr(ob,'label',label)
                    142:         if title:
                    143:             ob.pt_setTitle(title)
                    144:         
                    145:         try:
                    146:             u = self.DestinationURL()
                    147:         except AttributeError:
                    148:             u = REQUEST['URL1']
                    149: 
                    150:         if submit == " Add and Edit ":
                    151:             u = "%s/%s" % (u, quote(id))
                    152:         REQUEST.RESPONSE.redirect(u+'/manage_main')
                    153:     return ''
                    154: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>