version 1.94, 2006/09/17 10:05:03
|
version 1.98, 2006/12/08 16:23:54
|
Line 1
|
Line 1
|
|
|
from OFS.Folder import Folder |
from OFS.Folder import Folder |
from Acquisition import Implicit |
from Acquisition import Implicit |
from Globals import DTMLFile,package_home,Persistent |
from Globals import DTMLFile,package_home,Persistent |
Line 333 class ZSQLExtendFolder(Folder,Persistent
|
Line 332 class ZSQLExtendFolder(Folder,Persistent
|
else: |
else: |
if node[1].nodeName==containerTagName: |
if node[1].nodeName==containerTagName: |
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>") |
Line 645 class ZSQLExtendFolder(Folder,Persistent
|
Line 704 class ZSQLExtendFolder(Folder,Persistent
|
|
|
#print "INLINE:",argv |
#print "INLINE:",argv |
for a in argTmp.keys(): |
for a in argTmp.keys(): |
qs.append(a+"="+urllib.quote(str(argTmp[a]))) |
aFiltered=re.sub(r"^-","_",a) # beginning of a command should always be "_" |
|
qs.append(aFiltered+"="+urllib.quote(str(argTmp[a]))) |
#return [] |
#return [] |
ret = self.parseQueryString(string.join(qs,","),"_",storename=storename) |
ret = self.parseQueryString(string.join(qs,","),"_",storename=storename) |
|
|
Line 693 class ZSQLExtendFolder(Folder,Persistent
|
Line 753 class ZSQLExtendFolder(Folder,Persistent
|
|
|
#print "INLINE:",argv |
#print "INLINE:",argv |
for a in argTmp.keys(): |
for a in argTmp.keys(): |
try: |
aFiltered=re.sub(r"^-","_",a) # beginning of a command should always be "_" |
qs.append(a+"="+urllib.quote(str(argTmp[a]))) |
qs.append(aFiltered+"="+urllib.quote(str(argTmp[a]))) |
except: |
|
import urllib |
|
qs.append(a+"="+urllib.quote(str(argTmp[a]))) |
|
|
|
#return [] |
#return [] |
|
|
Line 886 class ZSQLExtendFolder(Folder,Persistent
|
Line 944 class ZSQLExtendFolder(Folder,Persistent
|
#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]=="_")): |
elif (not (name[0]=="-" or name[0]=="_")): |
|
|
|
if value=="": |
|
changeList.append("\""+name+"\"=null") |
|
else: |
changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value))) |
changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value))) |
|
|
changeString=string.join(changeList,",") |
changeString=string.join(changeList,",") |
Line 1052 class ZSQLExtendFolder(Folder,Persistent
|
Line 1113 class ZSQLExtendFolder(Folder,Persistent
|
|
|
def ZSQLNewSearch(self,linkText,storename=None,url=None,args=None,**argv): |
def ZSQLNewSearch(self,linkText,storename=None,url=None,args=None,**argv): |
"""suche mit alten parametern bis auf die in argv getauschten""" |
"""suche mit alten parametern bis auf die in argv getauschten""" |
|
str = self.ZSQLNewSearchURL(storename, url, args, **argv) |
|
return """<a href="%s"> %s</a>"""%(str,linkText) |
|
|
|
|
|
def ZSQLNewSearchURL(self, storename=None,url=None,args=None,**argv): |
|
"""suche mit alten parametern bis auf die in argv getauschten""" |
|
|
if storename: |
if storename: |
"""store""" |
"""store""" |
Line 1095 class ZSQLExtendFolder(Folder,Persistent
|
Line 1162 class ZSQLExtendFolder(Folder,Persistent
|
else: |
else: |
str="ZSQLSearch?"+"&".join(newquery) |
str="ZSQLSearch?"+"&".join(newquery) |
|
|
return """<a href="%s"> %s</a>"""%(str,linkText) |
return str |
|
|
def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None): |
def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None): |
"""analysieren den QueryString""" |
"""analysieren den QueryString""" |
Line 1233 class ZSQLExtendFolder(Folder,Persistent
|
Line 1300 class ZSQLExtendFolder(Folder,Persistent
|
#TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE_-table |
#TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE_-table |
#i.e. erzeugt wird |
#i.e. erzeugt wird |
#das Statement |
#das Statement |
#WHERE DENTIFIER_IN_TABELLE_-table in (select from SELECT_FIELD |
#WHERE IDENTIFIER_IN_TABELLE in (select * from SELECT_FIELD |
#where LOWER(UCHFELD_IN_DIESER_TABELLE) something value) |
#where LOWER(SUCHFELD_IN_DIESER_TABELLE) something value) |
#something is defined by _op_TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE_-table |
#something is defined by _op_TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE |
|
|
elif (not name[0]==iCT) and len(punktsplit)==4: |
elif (not name[0]==iCT) and len(punktsplit)==4: |
if opfields.has_key(name): |
if opfields.has_key(name): |