Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.94 and 1.98

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):

Removed from v.1.94  
changed lines
  Added in v.1.98


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