Diff for /OSA_system2/OSAS_server.py between versions 1.2 and 1.3

version 1.2, 2005/02/10 20:23:24 version 1.3, 2005/02/11 12:03:31
Line 4  import stat Line 4  import stat
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Globals import InitializeClass,package_home  from Globals import InitializeClass,package_home
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 import xml.dom.minidom  
 import OSAS_helpers  import OSAS_helpers
 from OSAS_helpers import *  from OSAS_helpers import *
   
Line 13  class OSAS_storeOnlineServer(SimpleItem) Line 13  class OSAS_storeOnlineServer(SimpleItem)
           
     _v_metaFiles={} #chache fuer indexMeta      _v_metaFiles={} #chache fuer indexMeta
     meta_type="OSAS_server"      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=""):      def findIndexMeta(self,realPath=""):
Line 125  class OSAS_storeOnlineServer(SimpleItem) Line 64  class OSAS_storeOnlineServer(SimpleItem)
         """list dir"""          """list dir"""
         return os.listdir(path)          return os.listdir(path)
   
       def getFile(self,path):
     def getMetaFile(self,path):          """getFile"""
         """get index.meta and translate it to HTML"""          f=file(path,'r')
         html=[]          ret=f.read()
                   f.close()
         if not os.path.exists(path+"/index.meta"):          return ret
                 
               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="<h3>Document: "+name+"</h3>"  
            elif type=="folder":  
                     html="<h3>Folder: "+name+"</h3>"  
            else:  
                     html="<h3>Document: "+name+"</h3>"  
   
            html=html+"<p><i>created by: "+creator+" at: "+creation_date+"</i></p>"   
            html=html+"<h4>Description</h4><p>"+description+"</p>"  
            try:  
             bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0]  
             if bib.attributes.has_key('type'):  
               html=html+"<h4>Info ("+bib.attributes['type'].value+")</h4>"  
             else:  
               html=html+"<h4>Info</h4>"  
             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 manage_addOSAS_storeOnlineServerForm(self):  def manage_addOSAS_storeOnlineServerForm(self):
     """interface for adding the OSAS_storeOnline"""      """interface for adding the OSAS_storeOnline"""

Removed from v.1.2  
changed lines
  Added in v.1.3


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