Annotation of OSA_system2/OSAS_server.py, revision 1.1

1.1     ! dwinter     1: import os
        !             2: import os.path
        !             3: import stat
        !             4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
        !             5: from Globals import InitializeClass,package_home
        !             6: from OFS.SimpleItem import SimpleItem
        !             7: import xml.dom.minidom
        !             8: import OSAS_helpers
        !             9: from OSAS_helpers import *
        !            10: 
        !            11: class OSAS_storeOnlineServer(SimpleItem):
        !            12:     """Server for store Online system"""
        !            13: 
        !            14:     meta_type="OSAS_server"
        !            15:     
        !            16:     def findIndexMeta(self,realPath=""):
        !            17:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
        !            18:         @keyword path: default ist "", Pfad auf das Object
        !            19:         @return: None falls kein index.meta existiert sonst Pfad auf das index.meta
        !            20:         """
        !            21:         
        !            22:         #suche index.meta
        !            23:         while (not os.path.exists(os.path.join(realPath,'index.meta'))) and (not ((realPath=="") or (realPath=="/"))):
        !            24:             realPath=os.path.split(realPath)[0]
        !            25:             
        !            26:         if realPath=='' or realPath=='/':
        !            27:             if os.path.exists(os.path.join(realPath,'index.meta')):
        !            28:                 return (os.path.join(realPath,'index.meta'))
        !            29:             else:
        !            30:                 return None
        !            31:         else:
        !            32:             return os.path.join(realPath,'index.meta')
        !            33: 
        !            34:     def findIndexMetaWithStats(self,path=""):
        !            35:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
        !            36:         @keyword path: default ist "", Pfad auf das Object
        !            37:         @return: None falls kein index.meta existiert sonst Tupel (Pfad auf das index.meta,stats(indexMeta)
        !            38:         """
        !            39: 
        !            40:         indexMeta=self.findIndexMeta(path)
        !            41:         if indexMeta:
        !            42:             return (indexMeta,self.getStat(indexMeta))
        !            43:         else:
        !            44:             return (None,[])
        !            45: 
        !            46: 
        !            47:     def getStat(self,path=""):
        !            48:         """Gibt stat von path aus
        !            49:         @keyword path: default ist "", Pfad
        !            50:         @return: stat[path]"""
        !            51: 
        !            52:         if not os.path.exists(path):
        !            53:             #return None,"(ERROR) path %s does not exist."%path
        !            54:             return None
        !            55:         else:
        !            56:             return [x for x in os.stat(path)]
        !            57:             
        !            58:             
        !            59:             
        !            60: 
        !            61:     def listdir(self,path=""):
        !            62:         """list dir"""
        !            63:         return os.listdir(path)
        !            64: 
        !            65: 
        !            66:     def getMetaFile(self,path):
        !            67:         """get index.meta and translate it to HTML"""
        !            68:         html=[]
        !            69:         
        !            70:         if not os.path.exists(path+"/index.meta"):
        !            71:               
        !            72:               return self.getMetaInfoFromIndexMeta(path)
        !            73:               #return "NO_METADATA"
        !            74:         else:
        !            75:            
        !            76:            f = os.popen("cat "+path+"/index.meta","r")
        !            77:            lines = f.read()
        !            78:            
        !            79:            dom = xml.dom.minidom.parseString(lines)
        !            80:            try:
        !            81:                name=getText(dom.getElementsByTagName("name")[0].childNodes)
        !            82:            except:
        !            83:                name="NOT_DEFINED!!!"
        !            84:            try:
        !            85:                creator=getText(dom.getElementsByTagName("creator")[0].childNodes)
        !            86:            except:
        !            87:                creator="NOT_DEFINED!!!"
        !            88: 
        !            89:            try:
        !            90:                creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes)
        !            91:            except:
        !            92:                creation_date="NOT_DEFINED!!!"
        !            93: 
        !            94:            try:
        !            95:                description=getText(dom.getElementsByTagName("description")[0].childNodes)
        !            96:            except:
        !            97:                description="NOT_DEFINED!!!"
        !            98: 
        !            99:            try:
        !           100:             type=getText(dom.getElementsByTagName("content-type")[0].childNodes) 
        !           101:            except:
        !           102:             type=""
        !           103:            if type=="scanned document":
        !           104:                     html="<h3>Document: "+name+"</h3>"
        !           105:            elif type=="folder":
        !           106:                     html="<h3>Folder: "+name+"</h3>"
        !           107:            else:
        !           108:                     html="<h3>Document: "+name+"</h3>"
        !           109: 
        !           110:            html=html+"<p><i>created by: "+creator+" at: "+creation_date+"</i></p>" 
        !           111:            html=html+"<h4>Description</h4><p>"+description+"</p>"
        !           112:            try:
        !           113:             bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0]
        !           114:             if bib.attributes.has_key('type'):
        !           115:               html=html+"<h4>Info ("+bib.attributes['type'].value+")</h4>"
        !           116:             else:
        !           117:               html=html+"<h4>Info</h4>"
        !           118:             html=html+getBib(bib.childNodes)
        !           119: 
        !           120:            except:
        !           121:             """none"""
        !           122: 
        !           123:     #        html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace')
        !           124: 
        !           125:            return html
        !           126: 
        !           127: 
        !           128:     def getMetaInfoFromIndexMeta(self,path):
        !           129:         """metadaten zu path als html aus dem index.meta file zu path (meta tag im file bzw. dir container)
        !           130:         @param path: Pfad auf das Object relativ zum rootFolderName
        !           131:         @return: metadata als html
        !           132:         """
        !           133:         xmlInfos=self.findEntryInIndexMeta(path)
        !           134:         if xmlInfos:
        !           135:             return OSAS_helpers.getMetaInfoFromXML(path,xmlInfos)
        !           136:         else:
        !           137:             return ""
        !           138:    
        !           139:     def findEntryInIndexMeta(self,path):
        !           140:         """Finde im naechstgelegenden index.meta relativ zu path den entprechenden Eintrag fuer diesen Pfad.
        !           141:         @param path: Pfad auf das Object relativ zum rootFolderName
        !           142:         @return: den Teil von Index.meta der Informationen zu path enthaelt, None wenn error.
        !           143:         """
        !           144: 
        !           145:         indexMeta=self.findIndexMeta(path) # suche index.meta
        !           146:         
        !           147:         if not indexMeta:
        !           148:             return None
        !           149: 
        !           150:         realPath=os.path.split(indexMeta)[0]
        !           151:         path=os.path.normpath(path)
        !           152: 
        !           153:         try:
        !           154:             dom=xml.dom.minidom.parse(indexMeta)
        !           155:         except:
        !           156:             zLOG.LOG("OSAS_browser (findEntryInIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta)
        !           157:         #ist path ein directory? 
        !           158:         dirs=dom.getElementsByTagName('dir')
        !           159:         for dir in dirs:
        !           160:             pathes=dir.getElementsByTagName('path')
        !           161:             if pathes:
        !           162:                 pathX=OSAS_helpers.getText(pathes[0].childNodes)
        !           163:             else:
        !           164:                 pathX=""
        !           165:             names=dir.getElementsByTagName('name')
        !           166:             if names:
        !           167:                 name=OSAS_helpers.getText(names[0].childNodes)
        !           168:             else:
        !           169:                 name=""
        !           170: 
        !           171:             checkpath=os.path.normpath(os.path.join(realPath,pathX,name))
        !           172:             if checkpath==path:
        !           173:                 
        !           174:                 return dir.toxml()
        !           175: 
        !           176:         #ist path ein file?
        !           177:         files=dom.getElementsByTagName('file')
        !           178:         for dir in dirs:
        !           179:             pathes=dir.getElementsByTagName('path')
        !           180:             if pathes:
        !           181:                 pathX=OSAS_helpers.getText(pathes[0].childNodes)
        !           182:             else:
        !           183:                 pathX=""
        !           184:             names=dir.getElementsByTagName('name')
        !           185:             if names:
        !           186:                 name=OSAS_helpers.getText(names[0].childNodes)
        !           187:             else:
        !           188:                 name=""
        !           189: 
        !           190:             checkpath=os.path.normpath(os.path.join(realPath,pathX,name))
        !           191:             if checkpath==path:
        !           192:                 
        !           193:                 return dir.toxml()
        !           194: 
        !           195:         
        !           196:         return None
        !           197: 
        !           198: 
        !           199: def manage_addOSAS_storeOnlineServerForm(self):
        !           200:     """interface for adding the OSAS_storeOnline"""
        !           201:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)
        !           202:     return pt()
        !           203: 
        !           204: def manage_addOSAS_storeOnlineServer(self,id,RESPONSE=None):
        !           205:     """add the OSAS_storeOnline
        !           206:     @param id: id
        !           207:     """
        !           208:     newObj=OSAS_storeOnlineServer(id)
        !           209:     self._setObject(id,newObj)
        !           210:     if RESPONSE is not None:
        !           211:         RESPONSE.redirect('manage_main')
        !           212: 

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