--- OSA_system2/OSAS_server.py 2005/02/10 20:23:24 1.2 +++ OSA_system2/OSAS_server.py 2005/02/11 12:03:31 1.3 @@ -4,7 +4,7 @@ import stat from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Globals import InitializeClass,package_home from OFS.SimpleItem import SimpleItem -import xml.dom.minidom + import OSAS_helpers from OSAS_helpers import * @@ -13,68 +13,7 @@ class OSAS_storeOnlineServer(SimpleItem) _v_metaFiles={} #chache fuer indexMeta meta_type="OSAS_server" - def getSubDirsFromIndexMeta(self,path): - - """Gebe alle path untergeordenten Objekte aus - @param path: optional, default ist "", Pfad auf das Object relativ zum rootFolderName - @return: Directory [pfad auf das Objekt]->(fileType,''), fileType ist hierbei OSAS_dir_archive falls Object ein directory und OSAS_file_archive falls das Object ein File ist,der zweite Eintrag des Tupels ist zur Zeit immer '', spaeter wird hier die Beschreibung gemaess Metadaten stehen, wie bei readObjectsFromPath. - @todo: Rueckgabe einer Beschreibung gemaess Metadaten - """ - ret={} - #server=xmlrpclib.Server(self.serverUrl) - indexMeta,stats=self.findIndexMetaWithStats(path)#findex index.meta zu path. - - if not indexMeta: - return ret - - realPath=os.path.split(indexMeta)[0] - path=path.replace(realPath,"") - if path and (path[0]==os.sep): #falls am Anfang os.sep steht lösche dieses. - path=path[1:] - - - - #teste ob schon im cache - - if self._v_metaFiles.has_key(path) and (self._v_metaFiles[path][0]==stats[stat.ST_MTIME]): - return self._v_metaFiles[path][1] - - try: - dom=xml.dom.minidom.parse(indexMeta) - except: - zLOG.LOG("OSAS_browser (getSubDirsFromIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) - return ret - - dirs=[] - dirs=dom.getElementsByTagName('dir')+dom.getElementsByTagName('file') - - for dir in dirs: - pathes=dir.getElementsByTagName('path') - if pathes: - pathX=OSAS_helpers.getText(pathes[0].childNodes) - else: - pathX="" - names=dir.getElementsByTagName('name') - if names: - name=OSAS_helpers.getText(names[0].childNodes) - else: - name="" - #print "PP",pathX,path - if pathX==path: - if dir.tagName=="dir": - fileType="OSAS_dir_archive" - else: - fileType="OSAS_file_archive" - - object=os.path.join(realPath,pathX,name) - ret[object.encode('utf-8')]=(fileType,'') - - self._v_metaFiles[path]=(stats[stat.ST_MTIME],ret) # speicher im chache - - return ret - - def findIndexMeta(self,realPath=""): """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file @@ -125,140 +64,13 @@ class OSAS_storeOnlineServer(SimpleItem) """list dir""" return os.listdir(path) - - def getMetaFile(self,path): - """get index.meta and translate it to HTML""" - html=[] - - if not os.path.exists(path+"/index.meta"): - - return self.getMetaInfoFromIndexMeta(path) - #return "NO_METADATA" - else: - - f = os.popen("cat "+path+"/index.meta","r") - lines = f.read() - - dom = xml.dom.minidom.parseString(lines) - try: - name=getText(dom.getElementsByTagName("name")[0].childNodes) - except: - name="NOT_DEFINED!!!" - try: - creator=getText(dom.getElementsByTagName("creator")[0].childNodes) - except: - creator="NOT_DEFINED!!!" - - try: - creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes) - except: - creation_date="NOT_DEFINED!!!" - - try: - description=getText(dom.getElementsByTagName("description")[0].childNodes) - except: - description="NOT_DEFINED!!!" - - try: - type=getText(dom.getElementsByTagName("content-type")[0].childNodes) - except: - type="" - if type=="scanned document": - html="

Document: "+name+"

" - elif type=="folder": - html="

Folder: "+name+"

" - else: - html="

Document: "+name+"

" - - html=html+"

created by: "+creator+" at: "+creation_date+"

" - html=html+"

Description

"+description+"

" - try: - bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] - if bib.attributes.has_key('type'): - html=html+"

Info ("+bib.attributes['type'].value+")

" - else: - html=html+"

Info

" - html=html+getBib(bib.childNodes) - - except: - """none""" - - # html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace') - - return html - - - def getMetaInfoFromIndexMeta(self,path): - """metadaten zu path als html aus dem index.meta file zu path (meta tag im file bzw. dir container) - @param path: Pfad auf das Object relativ zum rootFolderName - @return: metadata als html - """ - xmlInfos=self.findEntryInIndexMeta(path) - if xmlInfos: - return OSAS_helpers.getMetaInfoFromXML(path,xmlInfos) - else: - return "" - - def findEntryInIndexMeta(self,path): - """Finde im naechstgelegenden index.meta relativ zu path den entprechenden Eintrag fuer diesen Pfad. - @param path: Pfad auf das Object relativ zum rootFolderName - @return: den Teil von Index.meta der Informationen zu path enthaelt, None wenn error. - """ - - indexMeta=self.findIndexMeta(path) # suche index.meta - - if not indexMeta: - return None - - realPath=os.path.split(indexMeta)[0] - path=os.path.normpath(path) - - try: - dom=xml.dom.minidom.parse(indexMeta) - except: - zLOG.LOG("OSAS_browser (findEntryInIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta) - #ist path ein directory? - dirs=dom.getElementsByTagName('dir') - for dir in dirs: - pathes=dir.getElementsByTagName('path') - if pathes: - pathX=OSAS_helpers.getText(pathes[0].childNodes) - else: - pathX="" - names=dir.getElementsByTagName('name') - if names: - name=OSAS_helpers.getText(names[0].childNodes) - else: - name="" - - checkpath=os.path.normpath(os.path.join(realPath,pathX,name)) - if checkpath==path: - - return dir.toxml() - - #ist path ein file? - files=dom.getElementsByTagName('file') - for dir in dirs: - pathes=dir.getElementsByTagName('path') - if pathes: - pathX=OSAS_helpers.getText(pathes[0].childNodes) - else: - pathX="" - names=dir.getElementsByTagName('name') - if names: - name=OSAS_helpers.getText(names[0].childNodes) - else: - name="" - - checkpath=os.path.normpath(os.path.join(realPath,pathX,name)) - if checkpath==path: - - return dir.toxml() - - - return None - - + def getFile(self,path): + """getFile""" + f=file(path,'r') + ret=f.read() + f.close() + return ret + def manage_addOSAS_storeOnlineServerForm(self): """interface for adding the OSAS_storeOnline""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)