File:  [Repository] / OSA_system2 / OSAS_server.py
Revision 1.12: download - view: text, annotated - select for diffs - revision graph
Fri Mar 4 14:53:40 2005 UTC (19 years, 3 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
getmovies and getimages in server added

    1: import os
    2: import os.path
    3: import stat
    4: import OSAS_helpers
    5: import xmlrpclib
    6: import bz2
    7: import base64
    8: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
    9: from Globals import InitializeClass,package_home
   10: from OFS.SimpleItem import SimpleItem
   11: 
   12: def encodeRPC(string):
   13:     return base64.encodestring(bz2.compress(string))
   14: 
   15: 
   16: class OSAS_storeOnlineServer(SimpleItem):
   17:     """Server for store Online system"""
   18:     
   19:     
   20:     meta_type="OSAS_server"
   21: 
   22:     def getImages(path):
   23:         """hack"""
   24:         imageEnding=['.gif','.jpg','.jpeg','.png','.tiff','.tif']
   25:         dirs=os.listdir(path)
   26:         ret=[]
   27:         for dir in dirs:
   28:             if os.path.isdir(dir):
   29:                 for subdir in os.listdir(os.path.join(path,dir)):
   30:                     if os.path.splitext(subdir)[1].lower() in imageEnding:
   31:                         ret.append(os.path.join(dir,subdir))
   32:             else:
   33:                 if os.path.splitext(dir)[1] in imageEnding:
   34:                         ret.append(os.path.join(dir))
   35:         return ret
   36:     
   37: 
   38:     def getMovies(path):
   39:         """hack"""
   40:         movieEnding=['.dv','.mov','.mp4']
   41:         dirs=os.listdir(path)
   42:         ret=[]
   43:         for dir in dirs:
   44:             if os.path.isdir(dir):
   45:                 for subdir in os.listdir(os.path.join(path,dir)):
   46:                     if os.path.splitext(subdir)[1].lower() in movieEnding:
   47:                         ret.append(os.path.join(dir,subdir))
   48:             else:
   49:                 if os.path.splitext(dir)[1] in imageEnding:
   50:                         ret.append(os.path.join(dir))
   51:         return ret
   52:     
   53:        
   54:     def findIndexMeta(self,realPath=""):
   55:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
   56:         @keyword path: default ist "", Pfad auf das Object
   57:         @return: None falls kein index.meta existiert sonst Pfad auf das index.meta
   58:         """
   59:         
   60:         #suche index.meta
   61:         while (not os.path.exists(os.path.join(realPath,'index.meta'))) and (not ((realPath=="") or (realPath=="/"))):
   62:             realPath=os.path.split(realPath)[0]
   63:             
   64:         if realPath=='' or realPath=='/':
   65:             if os.path.exists(os.path.join(realPath,'index.meta')):
   66:                 return (os.path.join(realPath,'index.meta'))
   67:             else:
   68:                 return None
   69:         else:
   70:             return os.path.join(realPath,'index.meta')
   71: 
   72:     def findIndexMetaWithStats(self,path=""):
   73:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
   74:         @keyword path: default ist "", Pfad auf das Object
   75:         @return: None falls kein index.meta existiert sonst Tupel (Pfad auf das index.meta,stats(indexMeta)
   76:         """
   77: 
   78:         indexMeta=self.findIndexMeta(path)
   79:         if indexMeta:
   80:             return (indexMeta,self.getStat(indexMeta))
   81:         else:
   82:             return (None,[])
   83: 
   84: 
   85:     def getStat(self,path=""):
   86:         """Gibt stat von path aus
   87:         @keyword path: default ist "", Pfad
   88:         @return: stat[path]"""
   89: 
   90:         if not os.path.exists(path):
   91:             #return None,"(ERROR) path %s does not exist."%path
   92:             return None
   93:         else:
   94:             return [x for x in os.stat(path)]
   95:             
   96:             
   97:             
   98: 
   99:     def listdir(self,path=""):
  100:         """list dir"""
  101:         return os.listdir(path)
  102: 
  103:     def isdir(self,path=""):
  104:         """list dir"""
  105:         return os.path.isdir(path)
  106: 
  107:     def isfile(self,path=""):
  108:         """list dir"""
  109:         return os.path.isfile(path)
  110: 
  111: 
  112: 
  113:     def getFile(self,path):
  114:         """getFile"""
  115: 
  116:         if not os.path.exists(path):
  117:             print "sorry"
  118:             return None
  119: 
  120:         f=file(path,'r')
  121:         
  122:         ret=f.read()
  123: 
  124:         f.close()
  125:         
  126:         return ret
  127: 
  128:     def getAllIndexMetasOfSubDirs(self,path):
  129:         """get all index Metas"""
  130:         ret={}
  131:         if os.path.exists(path+"/index.meta"):
  132:             compressed=encodeRPC(file(path+"/index.meta","r").read())
  133:             ret["."]=('OSAS_dir',compressed)
  134:         for dir in os.listdir(path):
  135:             fileType=OSAS_helpers.checkOSASFileType(os.path.join(path,dir))
  136:             if os.path.exists(os.path.join(path,dir,"index.meta")):
  137:                 compressed=encodeRPC(file(os.path.join(path,dir,"index.meta"),"r").read())
  138:                 ret[dir]=('OSAS_dir',compressed)
  139:             else:
  140:                 ret[dir]=(fileType,None)
  141:         return ret
  142: 
  143:     def writeMetaDataFile(self,path,metadata):
  144:         """writefiletoserver"""
  145:         try:
  146:             fh=file(path,"w")
  147:             fh.write(metadata)
  148:             fh.close
  149:             return True
  150:         except:
  151:             return False
  152:     
  153:         
  154: def manage_addOSAS_storeOnlineServerForm(self):
  155:     """interface for adding the OSAS_storeOnline"""
  156:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)
  157:     return pt()
  158: 
  159: def manage_addOSAS_storeOnlineServer(self,id,RESPONSE=None):
  160:     """add the OSAS_storeOnline
  161:     @param id: id
  162:     """
  163:     newObj=OSAS_storeOnlineServer(id)
  164:     self._setObject(id,newObj)
  165:     if RESPONSE is not None:
  166:         RESPONSE.redirect('manage_main')
  167: 

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