--- ZSQLExtend/ZSQLExtend.py 2004/12/04 21:33:12 1.52 +++ ZSQLExtend/ZSQLExtend.py 2005/02/09 20:10:42 1.59 @@ -1,17 +1,20 @@ from OFS.Folder import Folder -from Globals import Persistent from Acquisition import Implicit -from Globals import DTMLFile,package_home +from Globals import DTMLFile,package_home,Persistent import urllib import re import string +import sys #from pyPgSQL import libpq from AccessControl import getSecurityManager -import os.path +from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.ZSQLMethods.SQL import SQLConnectionIDs import Shared.DC.ZRDB.DA +import zLOG +import os.path +import os def analyseIntSearch(word): #analyse integer searches @@ -307,8 +310,33 @@ class ZSQLExtendFolder(Folder,Persistent #print "INLINE:",query return self.ZSQLSimpleSearch(query) + def ZSQLSimpleSearch(self,query=None,max_rows=1000000): + """simple search""" - def ZSQLSimpleSearch(self,query=None): + if not query: + query=self.query + + 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.connection_id,"var","") + self._v_searchSQL.max_rows_=max_rows + try: + return self._v_searchSQL.__call__(var=query) + except : + if sys.exc_info()[0]=="Database Error": + try: + getattr(self,self.connection_id).manage_open_connection() + except: pass + else: + try: + self._v_searchSQL.max_rows_=max_rows + return self._v_searchSQL.__call__(var=query) + except : + if sys.exc_info()[0]=="Database Error": + try: + getattr(self,self.connection_id).manage_open_connection() + except: pass + + def ZSQLSimpleSearch2(self,query=None): """ returrn SQLSearch""" #print "hi",query if not query: @@ -1147,8 +1175,9 @@ class ZSQLBibliography(Folder,ZSQLExtend pt.content_type="text/html" return pt() - def changeZSQLBibliography(self,tableName,label,description,REQUEST=None): + def changeZSQLBibliography(self,tableName,label,description,connection_id=None,REQUEST=None): """change it""" + self.connection_id=connection_id self.tableName=tableName self.label=label self.description=description @@ -1158,6 +1187,8 @@ class ZSQLBibliography(Folder,ZSQLExtend manage_options=Folder.manage_options+( {'label':'Main Config','action':'changeZSQLBibliographyForm'}, + {'label':'Generate RDF Template','action':'generateRDFTemplate'}, + {'label':'Generate XML Template','action':'generateXMLTemplate'}, ) @@ -1222,8 +1253,16 @@ class ZSQLBibliography(Folder,ZSQLExtend return retdata,fieldlist + def createRDFTag(self,tag,content): + """create RDF""" + if content: + ret=""" %s"""%(tag,content,tag) + return ret.decode('latin-1') + else: + return "" + def createIndexTag(self,tag,content): - """creste tag""" + """create tag""" if content: ret="""<%s>%s"""%(tag,content,tag) return ret @@ -1240,11 +1279,52 @@ class ZSQLBibliography(Folder,ZSQLExtend pt.content_type="text/xml" return pt() + + def generateRDFTemplate(self,REQUEST=None): + """generateRDFtemplate""" + zt=ZopePageTemplate('record.rdf') + self._setObject('record.rdf',zt) + default_content_fn = os.path.join(package_home(globals()), + 'zpt','record.rdf') + text = open(default_content_fn).read() + zt.pt_edit(text, 'text/xml') + + + if REQUEST is not None: + return self.manage_main(self, REQUEST) + + def generateXMLTemplate(self,REQUEST=None): + """generateXMLtemplate""" + zt=ZopePageTemplate('record.xml') + self._setObject('record.xml',zt) + default_content_fn = os.path.join(package_home(globals()), + 'zpt','record.xml') + text = open(default_content_fn).read() + zt.pt_edit(text, 'text/xml') + + + if REQUEST is not None: + return self.manage_main(self, REQUEST) + def getMetaDataRDF(self): + """crate index meta""" + find=self.ZopeFind(self,obj_ids=["record.rdf"]) + if not find: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record.rdf')).__of__(self) + pt.content_type="text/xml" + return pt() + else: + return find[0][1]() + def getMetaDataXML(self): """crate index meta""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record.xml')).__of__(self) - pt.content_type="text/xml" - return pt() + find=self.ZopeFind(self,obj_ids=["record.xml"]) + if not find: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record.xml')).__of__(self) + pt.content_type="text/xml" + return pt() + else: + return find[0][1]() + def getMetaDatasXML(self): """index""" @@ -1277,6 +1357,7 @@ manage_addZSQLBibliographyForm=DTMLFile( def manage_addZSQLBibliography(self, id, tableName,label,description,title='', createPublic=0, createUserF=0, + connection_id=None, REQUEST=None): """Add a new Folder object with id *id*. @@ -1294,6 +1375,7 @@ def manage_addZSQLBibliography(self, id, setattr(ob,'tableName',tableName) setattr(ob,'label',label) setattr(ob,'description',description) + setattr(ob,'connection_id',connection_id) checkPermission=getSecurityManager().checkPermission