--- ZSQLExtend/ZSQLExtend.py 2006/03/28 19:54:41 1.79
+++ ZSQLExtend/ZSQLExtend.py 2006/07/27 17:31:50 1.87
@@ -19,15 +19,6 @@ import os.path
import os
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):
#analyse integer searches
@@ -80,99 +71,34 @@ class ZSQLExtendFolder(Folder,Persistent
"""quote str for sql"""
return sql_quote(str)
-
- def importXMLFile(self,table,data,identify=None,RESPONSE=None):
+ def importXMLFile(self,table,containerTagName,file,identify=None,RESPONSE=None):
#TODO: finish importXMLFile
'''
Import XML file 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 file: xmlfile handle
@param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.
@param RESPONSE: (optional)
'''
from xml.dom.pulldom import parseString
-
-
- #fh=file("/tmp/fmpxml.xml")
- import bz2
- import base64
-
- ret=""
- data=bz2.decompress(base64.decodestring(data))
- #data=fh.read()
- doc=parseString(data)
+ doc=parseString(file.read())
while 1:
node=doc.getEvent()
-
+
if node is None:
break;
else:
- if node[1].nodeName=='ROW':
- 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)
- 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)
- 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)
- ret+="ad: %s \n"%field
-
- elif node[1].nodeName=="METADATA":
- fieldNames=[]
+ if node[1].nodeName==containerTagName:
doc.expandNode(node[1])
-
- names=node[1].getElementsByTagName('FIELD')
-
- for name in names:
- fieldNames.append(name.getAttribute('NAME'))
-
- 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:
- if fieldName not in columns:
- qstr="""alter table %s add %s %s"""
- self.ZSQLSimpleSearch(qstr%(table,fieldName,'text'))
-
#fn=node[1].getAttribute("xml:id")
#nf=file("xtf/"+fn+".xtf",'w')
#nf.write(""""""+node[1].toxml()+"")
#print "wrote: %s"%fn
- return ret
-
+
+
def generateIndex(self,field,index_name,table,RESPONSE=None):
"""erzeuge index aus feld"""
index={}
@@ -245,22 +171,14 @@ class ZSQLExtendFolder(Folder,Persistent
return ""
def getLabel(self):
- """getLabel"""
+ """getLabe"""
try:
return self.label
except:
return ""
-
- def getTitle(self):
- """getTitle"""
- try:
- return self.title
- except:
- return ""
-
def getDescription(self):
- """getDescription"""
+ """getLabe"""
try:
return self.description
except:
@@ -289,10 +207,6 @@ class ZSQLExtendFolder(Folder,Persistent
def formatAscii(self,str,url=None):
"""ersetze ascii umbrueche durch
"""
#url=None
-
- if not str:
- return ""
-
str=str.rstrip().lstrip()
if url and str:
@@ -529,15 +443,13 @@ class ZSQLExtendFolder(Folder,Persistent
except:
zLOG.LOG("ZSQLResetConnection",zLOG.ERROR, '%s %s'%sys.exc_info()[:2])
- def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None):
+ def ZSQLSimpleSearch(self,query=None,max_rows=1000000):
"""simple search"""
-
if not 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")):
self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","")
@@ -621,7 +533,7 @@ class ZSQLExtendFolder(Folder,Persistent
name=re.sub("r'+'"," ",q.split("=")[0].lower())
value=q.split("=")[1]
value=re.sub(r'\+'," ",value)
- value=urllib.unquote(value)
+ value=urllib.unquote(value)
if name=="-table":
table=urllib.unquote(value)
elif name=="-format":
@@ -655,6 +567,7 @@ class ZSQLExtendFolder(Folder,Persistent
qs_temp=[]
if USE_FORM or RESPONSE:
for a in self.REQUEST.form.keys():
+
qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
@@ -672,12 +585,12 @@ class ZSQLExtendFolder(Folder,Persistent
changeList=[]
for q in qs_temp:
-
+
name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))
value="=".join(q.split("=")[1:])
value=re.sub(r'\+'," ",value)
value=urllib.unquote(value)
-
+
if name=="-table":
table=urllib.unquote(value)
elif name=="-identify":
@@ -685,13 +598,15 @@ class ZSQLExtendFolder(Folder,Persistent
identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1])
elif name=="-format":
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):
+ elif (not (name[0]=="-" or name[0]=="_")):
changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value)))
changeString=string.join(changeList,",")
queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
+ zLOG.LOG("ZSQLExtend",zLOG.INFO,"CHANGE: "+queryString)
self.ZSQLSimpleSearch(queryString)
@@ -748,7 +663,7 @@ class ZSQLExtendFolder(Folder,Persistent
if field[0]=="_":
fieldTmp="-"+field[1:]
else:
- fieldTmp=urllib.unqoute(field)
+ fieldTmp=field
qs+=",%s=%s"%(fieldTmp,argv[field])
@@ -1068,7 +983,7 @@ class ZSQLExtendFolder(Folder,Persistent
elif (not name[0]==iCT) and (not len(value)==0):
- #print "OP",op,name
+ #print "OP",op,name
value=value.lower()
tmp=""
if opfields.has_key(name):
@@ -1190,7 +1105,6 @@ class ZSQLExtendFolder(Folder,Persistent
self.REQUEST.SESSION[storename]['searchFields']=searchFields
self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly
-
if not NoQuery:
return self.ZSQLQuery(query)
@@ -1312,7 +1226,7 @@ class ZSQLExtendFolder(Folder,Persistent
newquery.append(query)
newquerystring=string.join(newquery,"&")
- return "%s"%(self.REQUEST['URL']+"?"+newquerystring,html)
+ return "%s"%(self.REQUEST['URL']+"?"+newquerystring,html)
@@ -1556,16 +1470,16 @@ class ZSQLBibliography(Folder,ZSQLExtend
retdata={}
fieldlist=self.standardMD.fieldList
- for referenceTypeF in self.referencetypes:
- #print referenceType,referenceTypeF[1].title
- if referenceTypeF[1].title == referenceType:
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
- bibdata['data']=referenceTypeF[1]
- self.fields=bibdata[referenceType]
+ for referenceTypeF in self.referencetypes:
+ #print referenceType,referenceTypeF[1].title
+ if referenceTypeF[1].title == referenceType:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ bibdata['data']=referenceTypeF[1]
+ self.fields=bibdata[referenceType]
for field in fieldlist:
- if referenceTypeF[1].getValue(field)[0]==None:
- retdata[field]=field
- else:
+ if referenceTypeF[1].getValue(field)[0]==None:
+ retdata[field]=field
+ else:
retdata[field]=referenceTypeF[1].getValue(field)[0]
return retdata,fieldlist
@@ -1577,12 +1491,12 @@ class ZSQLBibliography(Folder,ZSQLExtend
retdata={}
fieldlist=self.standardMD.fieldList
- for referenceTypeF in self.referencetypes:
- #print referenceType,referenceTypeF[1].title
- if referenceTypeF[1].title == referenceType:
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
- bibdata['data']=referenceTypeF[1]
- self.fields=bibdata[referenceType]
+ for referenceTypeF in self.referencetypes:
+ #print referenceType,referenceTypeF[1].title
+ if referenceTypeF[1].title == referenceType:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ bibdata['data']=referenceTypeF[1]
+ self.fields=bibdata[referenceType]
for field in fieldlist:
retdata[field]=referenceTypeF[1].getValue(field)[1]
@@ -1681,7 +1595,7 @@ class ZSQLBibliography(Folder,ZSQLExtend
fix_host = http_host + ":" + host_port
ret="""
- """
+ """
for found in self.ZSQLSimpleSearch("select oid from %s limit ALL"%self.tableName):
base_url = self.absolute_url()
if fix_host: