--- ImageArchive/ImageArchive.py 2006/05/17 20:18:38 1.86 +++ ImageArchive/ImageArchive.py 2006/05/17 21:42:49 1.88 @@ -1,7 +1,7 @@ genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config - +from Ft.Xml.Domlette import NonvalidatingReader from OFS.Folder import Folder from OFS.OrderedFolder import OrderedFolder from OFS.SimpleItem import SimpleItem @@ -1631,7 +1631,7 @@ class ImageCollection(OrderedFolder, Per def getImageByName(self,filename,onlyName=None): """get filename""" - + #print repr(filename) #FIXME: umlaute in filename fn=getattr(self,repr(filename),None) if not fn: @@ -1870,15 +1870,38 @@ class ImageCollectionMD(ImageCollection, def searchDB(self,REQUEST=None,RESPONSE=None,xml=None): """search""" - #context.ZSQLFind(_table='vision_main') - urlTmp=REQUEST['URL1'] - url=urlTmp+'/searchResultXML?-table=%s&'%self.imageCollectionConfig.getTable()+REQUEST['QUERY_STRING'] - - if xml is None: - RESPONSE.redirect('xmlinput?url='+urllib.quote(url)) + rc=[] + fnIds={} + for found in self.ZSQLInlineSearch(args=self.REQUEST.form): + key=getattr(found,self.imageCollectionConfig.getKey()) + key=self.getImageByName(key,onlyName="yes") + rc.append((key,'',0)) + fnIds[key]=('',0) + + rc.sort() + self.REQUEST.SESSION['filenames']=rc + self.REQUEST.SESSION['filenamesIds']=fnIds + + overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html']) + + if overview: + return overview[0][1]() else: - RESPONSE.redirect(url) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) + return pt() + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) + return pt() + + #urlTmp=REQUEST['URL1'] + + #url=urlTmp+'/searchResultXML?-table=%s&'%self.imageCollectionConfig.getTable()+REQUEST['QUERY_STRING'] + + #if xml is None: + # RESPONSE.redirect('xmlinput?url='+urllib.quote(url)) + #else: + # RESPONSE.redirect(url) def index_html(self,fn=None,selection=None,generic='No',REQUEST=None,RESPONSE=None): """main template collection""" @@ -2055,25 +2078,26 @@ class ImageCollectionMD(ImageCollection, xmldoc=urllib.urlopen(url).read() #return xmldoc try: - dom=xml.dom.minidom.parseString(xmldoc) + dom=NonvalidatingReader.parseUri(url) + except: return "ERROR: (%s %s) %s"%(sys.exc_info()[0],sys.exc_info()[1],xmldoc) - images=dom.getElementsByTagName('image') + images=dom.xpath("//image") rc=[] fnIds={} for image in images: - - imagename=image.getElementsByTagName('imagename')[0] - + imagename=image.xpath('./imagename')[0] + - idnr=image.getElementsByTagName('idnr')[0] + + idnr=image.xpath('./idnr')[0] id=getText(idnr.childNodes) try: - numberOfPages=image.getElementsByTagName('numberOfPages')[0] + numberOfPages=image.xpath('./numberOfPages')[0] except: numberOfPages=None @@ -2088,7 +2112,6 @@ class ImageCollectionMD(ImageCollection, texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste for text in texts: - if not text=="": text=self.getImageByName(text,onlyName="yes") try: @@ -2100,10 +2123,9 @@ class ImageCollectionMD(ImageCollection, rc.sort() - self.REQUEST.SESSION['filenames']=rc self.REQUEST.SESSION['filenamesIds']=fnIds - + overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html']) if overview: