Diff for /OSA_system2/OSAS_browser.py between versions 1.14 and 1.15

version 1.14, 2005/02/12 11:41:56 version 1.15, 2005/03/03 20:41:00
Line 9  from OFS.Folder import Folder Line 9  from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 from Globals import InitializeClass,package_home  from Globals import InitializeClass,package_home
 import zLOG  import zLOG
   import base64
 import bz2  import bz2
 import os  import os
 import os.path  import os.path
Line 18  from types import * Line 19  from types import *
 import xmlrpclib  import xmlrpclib
 from OSAS_helpers import *  from OSAS_helpers import *
   
   def decodeRPC(string):
       return bz2.decompress(base64.decodestring(string))
   
   
 class OSAS_storeOnline(SimpleItem):  class OSAS_storeOnline(SimpleItem):
     """Webfrontend für das Storagesystem      """Webfrontend für das Storagesystem
Line 29  class OSAS_storeOnline(SimpleItem): Line 33  class OSAS_storeOnline(SimpleItem):
   
     _v_fileSystem={} #chache fuer filesystem      _v_fileSystem={} #chache fuer filesystem
     _v_metaFiles={} #chache fuer indexMeta      _v_metaFiles={} #chache fuer indexMeta
   
       def getParentType(self,path):
           """getFileType des parentordners"""
   
           realPath=os.path.split(path)[0]
   
           objects=self.readObjectsFromPath(realPath)
   
           return objects[os.path.join(realPath,".")][0]
       
     def getMetaFile(self,path):      def getMetaFile(self,path):
         """get index.meta and translate it to HTML"""          """get index.meta and translate it to HTML"""
         """Lies Metafile ein          """Lies Metafile ein
Line 102  class OSAS_storeOnline(SimpleItem): Line 116  class OSAS_storeOnline(SimpleItem):
         @param path: Pfad auf das Object relativ zum rootFolderName          @param path: Pfad auf das Object relativ zum rootFolderName
         @return: metadata als html          @return: metadata als html
         """          """
           print "search for ",path
         xmlInfos=self.findEntryInIndexMeta(path)          xmlInfos=self.findEntryInIndexMeta(path)
           print "RRRRRRRRRRRR",xmlInfos
         if xmlInfos:          if xmlInfos:
             return OSAS_helpers.getMetaInfoFromXML(path,xmlInfos)              return OSAS_helpers.getMetaInfoFromXML(path,xmlInfos)
         else:          else:
Line 116  class OSAS_storeOnline(SimpleItem): Line 132  class OSAS_storeOnline(SimpleItem):
                   
         server=xmlrpclib.Server(self.serverUrl)          server=xmlrpclib.Server(self.serverUrl)
         indexMeta=server.findIndexMeta(path) # suche index.meta          indexMeta=server.findIndexMeta(path) # suche index.meta
                   print "found indexMeta",indexMeta
         if not indexMeta:          if not indexMeta:
             return None              return None
   
Line 128  class OSAS_storeOnline(SimpleItem): Line 144  class OSAS_storeOnline(SimpleItem):
             dom=xml.dom.minidom.parseString(server.getFile(indexMeta))              dom=xml.dom.minidom.parseString(server.getFile(indexMeta))
         except:          except:
             zLOG.LOG("OSAS_browser (findEntryInIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta)              zLOG.LOG("OSAS_browser (findEntryInIndexMeta)",zLOG.ERROR,"Cannot parse: %s"%indexMeta)
         #ist path ein directory?               return None
         dirs=dom.getElementsByTagName('dir')         
         for dir in dirs:          path=path.replace(realPath,'')
             pathes=dir.getElementsByTagName('path')          (searchPath,name)=os.path.split(path)
             if pathes:          if (len(searchPath)>0) and (searchPath[0]=="/"):
                 pathX=OSAS_helpers.getText(pathes[0].childNodes)              if len(searchPath)<=1:
             else:                  searchPath=""
                 pathX=""  
             names=dir.getElementsByTagName('name')  
             if names:  
                 name=OSAS_helpers.getText(names[0].childNodes)  
             else:              else:
                 name=""                  searchPath=searchPath[1:]
           #ist path ein directory? 
           xpath="/resource/dir[name='%s' and path='%s']"%(name,searchPath)
   
             checkpath=os.path.normpath(os.path.join(realPath,pathX,name))          dirs=xml.xpath.Evaluate(xpath,dom)
             if checkpath==path:  
                                   
                 return dir.toxml()          if len(dirs)>0:
               return dirs[0].toxml
   
         #ist path ein file?          #ist path ein file?
         files=dom.getElementsByTagName('file')          xpath="/resource/file[name='%s' and path='%s']"%(name,searchPath)
         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()          dirs=xml.xpath.Evaluate(xpath,dom)
   
           if len(dirs)>0:
               return dirs[0].toxml()
                   
         return None          return None
   
Line 180  class OSAS_storeOnline(SimpleItem): Line 182  class OSAS_storeOnline(SimpleItem):
         ret={}          ret={}
         server=xmlrpclib.Server(self.serverUrl)          server=xmlrpclib.Server(self.serverUrl)
         indexMeta,stats=server.findIndexMetaWithStats(path)#findex index.meta zu path.          indexMeta,stats=server.findIndexMetaWithStats(path)#findex index.meta zu path.
           print "checking",path,indexMeta
         if not indexMeta:          if not indexMeta:
             return ret              return ret
   
Line 262  class OSAS_storeOnline(SimpleItem): Line 264  class OSAS_storeOnline(SimpleItem):
                   
   
       
   
      
   
     def readObjectsFromPath(self,path="",metaDataId=None):      def readObjectsFromPath(self,path="",metaDataId=None):
         """Liest files aus dem path und speichert im cache _v_filesystem.          """Liest files aus dem path und speichert im cache _v_filesystem.
   
Line 301  class OSAS_storeOnline(SimpleItem): Line 300  class OSAS_storeOnline(SimpleItem):
             return None              return None
                   
         #teste ob schon im cache          #teste ob schon im cache
         if self._v_fileSystem.has_key(realPath) and (self._v_fileSystem[realPath][0]==stats[stat.ST_MTIME]):          #if self._v_fileSystem.has_key(realPath) and (self._v_fileSystem[realPath][0]==stats[stat.ST_MTIME]):
                       #    
             return self._v_fileSystem[realPath][1]          #   return self._v_fileSystem[realPath][1]
   
         indexMetas=bz2.decompress(server.getAllIndexMetasOfSubDirs(realPath))          indexMetas=server.getAllIndexMetasOfSubDirs(realPath)
         dir=indexMetas.keys()          dir=indexMetas.keys()
                   
         ret={}          ret={}
         for filename in dir:          for filename in dir:
               print "doing",filename,indexMetas
             object=os.path.join(realPath,filename)              object=os.path.join(realPath,filename)
             fileType=indexMetas[filename][0]              fileType=indexMetas[filename][0]
   
             if fileType:              if fileType:
                 if (fileType=='OSAS_dir') and indexMetas.has_key("."):                  if (fileType=='OSAS_dir') and indexMetas.has_key(".") and indexMetas["."][1]:
                     if(OSAS_helpers.isImageFolder(object,indexMetas["."][1])):                      print "TEEEEEEEEEE"
                       if(OSAS_helpers.isImageFolder(object,decodeRPC(indexMetas["."][1]))):
                         fileType='OSAS_imageFolder'                          fileType='OSAS_imageFolder'
                       elif(OSAS_helpers.isVideoFolder(object,decodeRPC(indexMetas["."][1]))):
                           fileType='OSAS_videoFolder'
                   if metaData and indexMetas[filename][1]:
                       print "do",filename
                       ret[object]=(fileType,metaData.getDisplayFieldsAsStr(decodeRPC(indexMetas[filename][1])))
                   else:
                       metaDataStr=self.findEntryInIndexMeta(object)
                       print "MMMMMDDDDD",metaDataStr
                       if metaDataStr:
                           display=metaData.getDisplayFieldsAsStr(metaDataStr)
                           dom=xml.dom.minidom.parseString(metaDataStr)
                                                   
                 if metaData:                          if len(xml.xpath.Evaluate("/file/meta/video-file",dom))>0:
                               fileType='OSAS_videoFile'
                                     
                     ret[object]=(fileType,metaData.getDisplayFieldsAsStr(indexMetas[filename][1]))  
                 else:                  else:
                     ret[object]=(fileType,'')                          display=""
                       print object,fileType,display
                       
                       ret[object]=(fileType,display)
                           
         self._v_fileSystem[realPath]=(stats[stat.ST_MTIME],ret) # speicher im chache          self._v_fileSystem[realPath]=(stats[stat.ST_MTIME],ret) # speicher im chache
                   
Line 337  class OSAS_storeOnline(SimpleItem): Line 352  class OSAS_storeOnline(SimpleItem):
         ret=[]          ret=[]
                   
         for handler in self.ZopeFind(self.aq_parent,obj_metatypes=['OSAS_HandlerObject__neu'],search_sub=1):          for handler in self.ZopeFind(self.aq_parent,obj_metatypes=['OSAS_HandlerObject__neu'],search_sub=1):
               
             if type in handler[1].objectTypes:              if type in handler[1].objectTypes:
         try:          try:
                  path=path.replace(getattr(handler[1],'ignorePath',''),'')                   path=path.replace(getattr(handler[1],'ignorePath',''),'')
Line 379  class OSAS_storeOnline(SimpleItem): Line 395  class OSAS_storeOnline(SimpleItem):
         objectSorted=objects.keys()          objectSorted=objects.keys()
         objectSorted.sort(sortLow)          objectSorted.sort(sortLow)
         for object in objectSorted:          for object in objectSorted:
               
             handler=self.giveHandlers(object,objects[object][0])              handler=self.giveHandlers(object,objects[object][0])
               print "format",objects[object][0]
             if objects[object][0]=="OSAS_dir":              if objects[object][0]=="OSAS_dir":
                                   
                 string="""<a href="?path=%s">%s</a>"""%(object,os.path.split(object)[1])                  string="""<a href="?path=%s">%s</a>"""%(object,os.path.split(object)[1])

Removed from v.1.14  
changed lines
  Added in v.1.15


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