|
|
| version 1.75, 2005/11/25 12:14:13 | version 1.83, 2006/04/25 17:01:54 |
|---|---|
| Line 19 import os.path | Line 19 import os.path |
| import os | import os |
| from OFS.SimpleItem import SimpleItem | from OFS.SimpleItem import SimpleItem |
| def getTextFromNode(nodename): | |
| nodelist=nodename.childNodes | |
| rc = "" | |
| for node in nodelist: | |
| if node.nodeType == node.TEXT_NODE: | |
| rc = rc + node.data | |
| return rc | |
| def analyseIntSearch(word): | def analyseIntSearch(word): |
| #analyse integer searches | #analyse integer searches |
| Line 72 class ZSQLExtendFolder(Folder,Persistent | Line 81 class ZSQLExtendFolder(Folder,Persistent |
| return sql_quote(str) | return sql_quote(str) |
| def importXMLFile(self,table,containerTagName,file,identify=None,RESPONSE=None): | def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None): |
| """normalize a field""" | |
| import unicodedata | |
| if not newFieldName: | |
| newFieldName=fieldname+"_normal" | |
| def normal(str): | |
| if str: | |
| return unicodedata.normalize('NFKD', str.decode('utf-8')).encode('ASCII', 'ignore') | |
| else: | |
| return "" | |
| if mode=="create": # create the field | |
| qstr="""alter table %s add %s %s""" | |
| self.ZSQLSimpleSearch(qstr%(table,newFieldName,'text')) | |
| qstr="select oid,%s from %s"%(fieldname,table) | |
| for result in self.ZSQLSimpleSearch(qstr): | |
| qstr="update %s set %s = %s where oid = %s" | |
| self.ZSQLSimpleSearch(qstr%(table,newFieldName,self.ZSQLQuote(normal(getattr(result,fieldname))),result.oid)) | |
| def importAccessModell(self,configFileName,RESPONSE=None): | |
| """import tables from access | |
| @param configFileName: xml-configfile | |
| """ | |
| from Ft.Xml import Parse | |
| fh=file(configFileName) | |
| doc=Parse(fh) | |
| x=doc.xpath("//pathToFolder/@path") | |
| if not (len(x)==1): # tag ist nich eineindeutig | |
| return False | |
| pathToFolder=x[0].value | |
| for db in doc.xpath("//db"): | |
| containers=db.xpath("./@container") | |
| identifiers=db.xpath("./@identify") | |
| print containers | |
| if not (len(containers)==1): | |
| return False | |
| else: | |
| container=containers[0].value | |
| if not (len(identifiers)==1): | |
| identifier=None | |
| else: | |
| identifier=identifiers[0].value | |
| self.xsdToTable(container.lower(),container,modus="drop",filename=os.path.join(pathToFolder,container.lower()+".xsd")) | |
| self.importXMLFileAccess(container.lower(),container,filename=os.path.join(pathToFolder,container.lower()+".xml"),identify=identifier) | |
| return "<html><body>DONE</body></html>" | |
| def xsdToTable(self,table,elementNameForTable,modus="update", filename=None,data=None,RESPONSE=None): | |
| """reads an xsd file an creates the columns of a table out of its structure | |
| @param table: name of the table the xml shall be imported into | |
| @param elementNameForTable: must be a element of type complex type. the element of the sequence in the complex type | |
| define the columns of the table >table< | |
| @param data (optional): data to be imported | |
| @param filename (optional) or filename | |
| @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. | |
| @param RESPONSE: (optional) | |
| """ | |
| #from xml.dom.minidom import parseString,parse | |
| from Ft.Xml import Parse | |
| zLOG.LOG("import xsd",zLOG.INFO,"called") | |
| #fh=file("/tmp/fmpxml.xml") | |
| import bz2 | |
| import base64 | |
| ret="" | |
| if data: | |
| data=bz2.decompress(base64.decodestring(data)) | |
| #zLOG.LOG("import xsd",zLOG.INFO,"received file") | |
| doc=Parse(data) | |
| #zLOG.LOG("import xsd",zLOG.INFO,"parsed file") | |
| elif filename: | |
| fh=file(filename) | |
| txt=fh.read() | |
| doc=Parse(txt) | |
| #zLOG.LOG("import xsd",zLOG.INFO,"parsed file") | |
| Nss={'xsd':'http://www.w3.org/2001/XMLSchema'} | |
| definingSequence=doc.xpath("""//xsd:element[@name='%s']/xsd:complexType/xsd:sequence/xsd:element/@name"""%elementNameForTable,explicitNss=Nss) | |
| fieldNames=[x.value for x in definingSequence] | |
| #check if table exists | |
| qstr="""select relname from pg_class where relname = '%s'"""%table | |
| if not(self.ZSQLSimpleSearch(qstr)) or (len (self.ZSQLSimpleSearch(qstr))<1): # if not the create the table | |
| columns=[] | |
| create=True | |
| else: | |
| create=False | |
| zLOG.LOG("update xsd: fieldnames",zLOG.INFO,repr(fieldNames)) | |
| qstr="""select attname from pg_attribute, pg_class where attrelid = pg_class.oid and relname = '%s' """ | |
| columns=[x.attname for x in self.ZSQLSimpleSearch(qstr%table)] | |
| if (modus=="drop") and (not create): #table shall be deleted, therefore it should exist (not create) | |
| print "drop" | |
| qstr="""DROP TABLE %s """ | |
| self.ZSQLSimpleSearch(qstr%table) | |
| columns=[] | |
| create=True | |
| for fieldName in fieldNames: | |
| if type(fieldName) is UnicodeType: | |
| fieldName=fieldName.encode('utf-8') | |
| zLOG.LOG("update xml: fieldname",zLOG.INFO,repr(fieldName)) | |
| if fieldName.lower() not in columns: | |
| if create:# table does not exist therefore create with one column | |
| qstr="""create table %s (%s %s)""" | |
| create=False | |
| else:# otherwise add the field | |
| qstr="""alter table %s add %s %s""" | |
| self.ZSQLSimpleSearch(qstr%(table,fieldName,'text')) | |
| zLOG.LOG("update xsd: fieldname add",zLOG.INFO,qstr%(table,fieldName,'text')) | |
| def importXMLFileAccess(self,table,container,data=None,identify=None,filename=None,RESPONSE=None): | |
| ''' | |
| Import XML file in access format into the table | |
| @param table: name of the table the xml shall be imported into | |
| @param containerTagName: XML-Tag which describes a dataset | |
| @param data: data to be imported | |
| @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. | |
| @param RESPONSE: (optional) | |
| ''' | |
| from xml.dom.pulldom import parseString,parse | |
| zLOG.LOG("import xml",zLOG.INFO,"called") | |
| #fh=file("/tmp/fmpxml.xml") | |
| import bz2 | |
| import base64 | |
| ret="" | |
| if data: | |
| data=bz2.decompress(base64.decodestring(data)) | |
| zLOG.LOG("import xml",zLOG.INFO,"received file") | |
| doc=parseString(data) | |
| zLOG.LOG("import xml",zLOG.INFO,"parsed file") | |
| elif filename: | |
| fh=file(filename) | |
| doc=parse(fh) | |
| zLOG.LOG("import xml",zLOG.INFO,"parsed file") | |
| while 1: | |
| node=doc.getEvent() | |
| if node is None: | |
| break; | |
| else: | |
| if node[1].nodeName.lower()==container.lower(): # make everything case insensitive | |
| doc.expandNode(node[1]) | |
| dataSet={} | |
| for col in node[1].childNodes: | |
| if col.nodeType is col.ELEMENT_NODE: | |
| data=col.nodeName | |
| dataSet[data]=getTextFromNode(col) | |
| print dataSet.keys() | |
| update=False | |
| if identify: | |
| field=dataSet[identify] | |
| searchStr="""select %s from %s where %s = '%s'"""%(identify,table,identify,field) | |
| zLOG.LOG("import xml",zLOG.INFO,searchStr) | |
| search=self.ZSQLSimpleSearch(searchStr) | |
| if search: | |
| update=True | |
| if update: | |
| tmp=[] | |
| for fieldName in dataSet.keys(): | |
| tmp.append("""%s = %s"""%(fieldName,self.ZSQLQuote(dataSet[fieldName]))) | |
| setStr=",".join(tmp) | |
| field=dataSet[identify] | |
| queryStr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,identify,field) | |
| zLOG.LOG("update xml",zLOG.INFO,queryStr) | |
| self.ZSQLSimpleSearch(queryStr) | |
| ret+="ud: %s \n"%field | |
| else: | |
| fields=",".join(dataSet.keys()) | |
| values=",".join([""" %s """%self.ZSQLQuote(dataSet[x]) for x in dataSet.keys()]) | |
| queryStr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) | |
| self.ZSQLSimpleSearch(queryStr) | |
| zLOG.LOG("update xml",zLOG.INFO,queryStr) | |
| return ret | |
| def importXMLFile(self,table,data=None,identify=None,filename=None,RESPONSE=None): | |
| #TODO: finish importXMLFile | #TODO: finish importXMLFile |
| ''' | ''' |
| Import XML file into the table | Import XML file into the table |
| @param table: name of the table the xml shall be imported into | @param table: name of the table the xml shall be imported into |
| @param containerTagName: XML-Tag which describes a dataset | @param containerTagName: XML-Tag which describes a dataset |
| @param file: xmlfile handle | @param data: data to be imported |
| @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. | @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. |
| @param RESPONSE: (optional) | @param RESPONSE: (optional) |
| ''' | ''' |
| from xml.dom.pulldom import parseString | from xml.dom.pulldom import parseString,parse |
| zLOG.LOG("import xml",zLOG.INFO,"called") | |
| #fh=file("/tmp/fmpxml.xml") | |
| import bz2 | |
| import base64 | |
| ret="" | |
| if data: | |
| data=bz2.decompress(base64.decodestring(data)) | |
| doc=parseString(file.read()) | zLOG.LOG("import xml",zLOG.INFO,"received file") |
| doc=parseString(data) | |
| zLOG.LOG("import xml",zLOG.INFO,"parsed file") | |
| elif filename: | |
| fh=file(filename) | |
| doc=parse(fh) | |
| zLOG.LOG("import xml",zLOG.INFO,"parsed file") | |
| while 1: | while 1: |
| node=doc.getEvent() | node=doc.getEvent() |
| if node is None: | if node is None: |
| break; | break; |
| else: | else: |
| if node[1].nodeName==containerTagName: | if node[1].nodeName=='ROW': |
| doc.expandNode(node[1]) | doc.expandNode(node[1]) |
| cols=node[1].getElementsByTagName('COL') | |
| dataSet=[] | |
| for col in cols: | |
| data=col.getElementsByTagName('DATA') | |
| dataSet.append(getTextFromNode(data[0])) | |
| update=False | |
| if identify: | |
| nr=fieldNames.index(identify) | |
| field=dataSet[nr] | |
| searchStr="""select %s from %s where %s = '%s'"""%(identify,table,identify,field) | |
| zLOG.LOG("import xml",zLOG.INFO,searchStr) | |
| search=self.ZSQLSimpleSearch(searchStr) | |
| if search: | |
| update=True | |
| if update: | |
| tmp=[] | |
| for fieldName in fieldNames: | |
| tmp.append("""%s = %s"""%(fieldName,self.ZSQLQuote(dataSet[fieldNames.index(fieldName)]))) | |
| setStr=",".join(tmp) | |
| nr=fieldNames.index(identify) | |
| field=dataSet[nr] | |
| queryStr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,identify,field) | |
| zLOG.LOG("update xml",zLOG.INFO,queryStr) | |
| self.ZSQLSimpleSearch(queryStr) | |
| ret+="ud: %s \n"%field | |
| else: | |
| fields=",".join(fieldNames) | |
| values=",".join([""" %s """%self.ZSQLQuote(x) for x in dataSet]) | |
| queryStr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) | |
| self.ZSQLSimpleSearch(queryStr) | |
| zLOG.LOG("update xml",zLOG.INFO,queryStr) | |
| ret+="ad: %s \n"%field | |
| elif node[1].nodeName=="METADATA": | |
| fieldNames=[] | |
| doc.expandNode(node[1]) | |
| names=node[1].getElementsByTagName('FIELD') | |
| for name in names: | |
| fieldNames.append(name.getAttribute('NAME')) | |
| zLOG.LOG("update xml: fieldnames",zLOG.INFO,repr(fieldNames)) | |
| qstr="""select attname from pg_attribute, pg_class where attrelid = pg_class.oid and relname = '%s' """ | |
| columns=[x.attname for x in self.ZSQLSimpleSearch(qstr%table)] | |
| for fieldName in fieldNames: | |
| zLOG.LOG("update xml: fieldname",zLOG.INFO,repr(fieldName)) | |
| if fieldName not in columns: | |
| qstr="""alter table %s add %s %s""" | |
| self.ZSQLSimpleSearch(qstr%(table,fieldName,'text')) | |
| zLOG.LOG("update xml: fieldname add",zLOG.INFO,qstr%(table,fieldName,'text')) | |
| #fn=node[1].getAttribute("xml:id") | #fn=node[1].getAttribute("xml:id") |
| #nf=file("xtf/"+fn+".xtf",'w') | #nf=file("xtf/"+fn+".xtf",'w') |
| #nf.write("""<texts xmlns="http://emegir.info/xtf" xmlns:lem="http://emegir.info/lemma" >"""+node[1].toxml()+"</texts>") | #nf.write("""<texts xmlns="http://emegir.info/xtf" xmlns:lem="http://emegir.info/lemma" >"""+node[1].toxml()+"</texts>") |
| #print "wrote: %s"%fn | #print "wrote: %s"%fn |
| return ret | |
| def generateIndex(self,field,index_name,table,RESPONSE=None): | def generateIndex(self,field,index_name,table,RESPONSE=None): |
| """erzeuge index aus feld""" | """erzeuge index aus feld""" |
| Line 171 class ZSQLExtendFolder(Folder,Persistent | Line 480 class ZSQLExtendFolder(Folder,Persistent |
| return "" | return "" |
| def getLabel(self): | def getLabel(self): |
| """getLabe""" | """getLabel""" |
| try: | try: |
| return self.label | return self.label |
| except: | except: |
| return "" | return "" |
| def getTitle(self): | |
| """getTitle""" | |
| try: | |
| return self.title | |
| except: | |
| return "" | |
| def getDescription(self): | def getDescription(self): |
| """getLabe""" | """getDescription""" |
| try: | try: |
| return self.description | return self.description |
| except: | except: |
| Line 207 class ZSQLExtendFolder(Folder,Persistent | Line 524 class ZSQLExtendFolder(Folder,Persistent |
| def formatAscii(self,str,url=None): | def formatAscii(self,str,url=None): |
| """ersetze ascii umbrueche durch <br>""" | """ersetze ascii umbrueche durch <br>""" |
| #url=None | #url=None |
| if not str: | |
| return "" | |
| str=str.rstrip().lstrip() | str=str.rstrip().lstrip() |
| if url and str: | if url and str: |
| Line 334 class ZSQLExtendFolder(Folder,Persistent | Line 655 class ZSQLExtendFolder(Folder,Persistent |
| ret+="""</select>""" | ret+="""</select>""" |
| return ret | return ret |
| def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None): | def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None,selected=None): |
| """generate select options form a search list | """generate select options form a search list |
| es wird | es wird |
| <select name=fieldname mutiple> | <select name=fieldname mutiple> |
| Line 369 class ZSQLExtendFolder(Folder,Persistent | Line 690 class ZSQLExtendFolder(Folder,Persistent |
| field=getattr(result,fieldName) | field=getattr(result,fieldName) |
| fieldValue=getattr(result,valueName) | fieldValue=getattr(result,valueName) |
| if fieldValue: | if fieldValue: |
| print "XXX",field,repr(type(field)),repr(type(selected)) | |
| if not linelen: | if not linelen: |
| if field == selected: | |
| print "huhu" | |
| ret+="""<option value="%s" selected>%s</option>"""%(field,fieldValue) | |
| else: | |
| ret+="""<option value="%s">%s</option>"""%(field,fieldValue) | ret+="""<option value="%s">%s</option>"""%(field,fieldValue) |
| else: | else: |
| mist = """%s"""%(fieldValue) | mist = """%s"""%(fieldValue) |
| Line 432 class ZSQLExtendFolder(Folder,Persistent | Line 759 class ZSQLExtendFolder(Folder,Persistent |
| return self.ZSQLSimpleSearch(query) | return self.ZSQLSimpleSearch(query) |
| def ZSQLSimpleSearch(self,query=None,max_rows=1000000): | def ZSQLResetConnection(self): |
| """reset the connectione""" | |
| try: | |
| self.getConnectionObj().manage_close_connection() | |
| except: | |
| zLOG.LOG("ZSQLResetConnection",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) | |
| try: | |
| self.getConnectionObj().manage_open_connection() | |
| except: | |
| zLOG.LOG("ZSQLResetConnection",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) | |
| def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None): | |
| """simple search""" | """simple search""" |
| if not query: | if not query: |
| query=self.query | query=self.query |
| if debug: | |
| print "DEBUG: ZSQLSimpleSearch:", query | |
| if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")): | if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")): |
| self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","<dtml-var var>") | self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","<dtml-var var>") |
| self._v_searchSQL.max_rows_=max_rows | self._v_searchSQL.max_rows_=max_rows |
| try: | try: |
| return self._v_searchSQL.__call__(var=query) | return self._v_searchSQL.__call__(var=query) |
| except : | except : |
| if sys.exc_info()[0]=="Database Error": | if sys.exc_info()[0]=="Database Error": |
| try: | try: |
| self.getConnectionObj().manage_open_connection() | self.getConnectionObj().manage_open_connection() |
| Line 454 class ZSQLExtendFolder(Folder,Persistent | Line 795 class ZSQLExtendFolder(Folder,Persistent |
| zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) | zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) |
| else: | else: |
| try: | try: |
| self._v_searchSQL.max_rows_=max_rows | self._v_searchSQL.max_rows_=max_rows |
| return self._v_searchSQL.__call__(var=query) | return self._v_searchSQL.__call__(var=query) |
| except : | except : |
| if sys.exc_info()[0]=="Database Error": | if sys.exc_info()[0]=="Database Error": |
| try: | try: |
| self.getConnectionObj().manage_open_connection() | self.getConnectionObj().manage_open_connection() |
| Line 584 class ZSQLExtendFolder(Folder,Persistent | Line 927 class ZSQLExtendFolder(Folder,Persistent |
| elif name=="-format": | elif name=="-format": |
| format=urllib.unquote(value) | format=urllib.unquote(value) |
| elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0): | elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0): |
| changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value))) | changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value))) |
| changeString=string.join(changeList,",") | changeString=string.join(changeList,",") |
| queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify) | queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify) |
| self.ZSQLSimpleSearch(queryString) | self.ZSQLSimpleSearch(queryString) |
| Line 644 class ZSQLExtendFolder(Folder,Persistent | Line 989 class ZSQLExtendFolder(Folder,Persistent |
| if field[0]=="_": | if field[0]=="_": |
| fieldTmp="-"+field[1:] | fieldTmp="-"+field[1:] |
| else: | else: |
| fieldTmp=field | fieldTmp=urllib.unquote(field) |
| qs+=",%s=%s"%(fieldTmp,argv[field]) | qs+=",%s=%s"%(fieldTmp,argv[field]) |
| Line 673 class ZSQLExtendFolder(Folder,Persistent | Line 1018 class ZSQLExtendFolder(Folder,Persistent |
| qs=string.join(delEmpty(qs.split(",")),",") | qs=string.join(delEmpty(qs.split(",")),",") |
| if storename: | if not storename: |
| """store""" | |
| else: | |
| storename="foundCount" | storename="foundCount" |
| #store query for further usage | #store query for further usage |
| self.REQUEST.SESSION['query']=qs | self.REQUEST.SESSION['query']=qs |
| print "st",storename,qs | |
| #print "calling Query with",repr(NoQuery) | #print "calling Query with",repr(NoQuery) |
| ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter) | ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter) |
| #print self.REQUEST.SESSION["foundCount"] | #print self.REQUEST.SESSION["foundCount"] |
| # if not hasattr(self,'_v_results'): | |
| # self._v_results={} | |
| # | |
| # | |
| # self._v_results[urllib.quote(qs)]=ret[0:] | |
| return ret | return ret |
| Line 955 class ZSQLExtendFolder(Folder,Persistent | Line 1302 class ZSQLExtendFolder(Folder,Persistent |
| tmp=string.join(tmps,' OR ') | tmp=string.join(tmps,' OR ') |
| searchFieldsOnly[namealt]=value | |
| op="all" | op="all" |
| searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp) | searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp) |
| queryTemplate.append(searchTmp) | queryTemplate.append(searchTmp) |
| elif (not name[0]==iCT) and (not len(value)==0): | elif (not name[0]==iCT) and (not len(value)==0): |
| Line 1084 class ZSQLExtendFolder(Folder,Persistent | Line 1433 class ZSQLExtendFolder(Folder,Persistent |
| self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit) | self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit) |
| self.REQUEST.SESSION[storename]['rangeSize']=limit | self.REQUEST.SESSION[storename]['rangeSize']=limit |
| self.REQUEST.SESSION[storename]['searchFields']=searchFields | self.REQUEST.SESSION[storename]['searchFields']=searchFields |
| print "SF",searchFieldsOnly,searchFields | |
| self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly | self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly |
| if not NoQuery: | if not NoQuery: |
| return self.ZSQLQuery(query) | return self.ZSQLQuery(query) |
| Line 1572 class ZSQLBibliography(Folder,ZSQLExtend | Line 1923 class ZSQLBibliography(Folder,ZSQLExtend |
| host_port = self.REQUEST['SERVER_PORT'] | host_port = self.REQUEST['SERVER_PORT'] |
| fix_host = None | fix_host = None |
| if http_host and http_host.rfind(host_port) == -1: | if http_host and http_host.rfind(host_port) == -1: |
| print "HTTP_HOST needs fixing!" | #print "HTTP_HOST needs fixing!" |
| fix_host = http_host + ":" + host_port | fix_host = http_host + ":" + host_port |
| ret="""<?xml version="1.0" ?> | ret="""<?xml version="1.0" ?> |