--- OSA_system2/OSAS_server.py 2005/02/10 19:50:18 1.1 +++ OSA_system2/OSAS_server.py 2005/02/12 11:41:56 1.7 @@ -1,18 +1,22 @@ import os import os.path import stat +import OSAS_helpers +import bz2 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 * + + + class OSAS_storeOnlineServer(SimpleItem): """Server for store Online system""" - - meta_type="OSAS_server" + + meta_type="OSAS_server" + + def findIndexMeta(self,realPath=""): """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file @keyword path: default ist "", Pfad auf das Object @@ -62,140 +66,45 @@ class OSAS_storeOnlineServer(SimpleItem) """list dir""" return os.listdir(path) + def isdir(self,path=""): + """list dir""" + return os.path.isdir(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') + def isfile(self,path=""): + """list dir""" + return os.path.isfile(path) - 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. - """ + def getFile(self,path): + """getFile""" - indexMeta=self.findIndexMeta(path) # suche index.meta - - if not indexMeta: + if not os.path.exists(path): return None - realPath=os.path.split(indexMeta)[0] - path=os.path.normpath(path) + f=file(path,'r') + + ret=f.read() - 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="" + f.close() + + return ret - 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) + def getAllIndexMetasOfSubDirs(self,path): + """get all index Metas""" + ret={} + if os.path.exists(path+"/index.meta"): + ret["."]=file(path+"/index.meta","r").read() + for dir in os.listdir(path): + fileType=OSAS_helpers.checkOSASFileType(os.path.join(path,dir)) + if os.path.exists(os.path.join(path,dir,"index.meta")): + ret[dir]=('OSAS_dir',file(os.path.join(path,dir,"index.meta"),"r").read()) else: - name="" - - checkpath=os.path.normpath(os.path.join(realPath,pathX,name)) - if checkpath==path: - - return dir.toxml() + ret[dir]=(fileType,None) + return return bz2.compress(ret) + - return None - - def manage_addOSAS_storeOnlineServerForm(self): """interface for adding the OSAS_storeOnline""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)