Annotation of OSA_system2/OSAS_server.py, revision 1.21

1.1       dwinter     1: import os
                      2: import os.path
                      3: import stat
1.6       dwinter     4: import OSAS_helpers
1.8       dwinter     5: import xmlrpclib
1.7       dwinter     6: import bz2
1.9       dwinter     7: import base64
1.1       dwinter     8: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      9: from Globals import InitializeClass,package_home
                     10: from OFS.SimpleItem import SimpleItem
1.21    ! dwinter    11: import logging
1.18      dwinter    12: import sys
1.3       dwinter    13: 
1.21    ! dwinter    14: #ersetzt logging
        !            15: def logger(txt,method,txt2):
        !            16:     """logging"""
        !            17:     logging.info(txt+ txt2)
        !            18: 
        !            19: 
        !            20: 
1.10      dwinter    21: def encodeRPC(string):
                     22:     return base64.encodestring(bz2.compress(string))
1.20      dwinter    23: def decodeRPC(string):
                     24:     return bz2.decompress(base64.decodestring(string))
1.4       dwinter    25: 
1.1       dwinter    26: 
                     27: class OSAS_storeOnlineServer(SimpleItem):
                     28:     """Server for store Online system"""
1.2       dwinter    29:     
1.4       dwinter    30:     
1.2       dwinter    31:     meta_type="OSAS_server"
                     32: 
1.15      dwinter    33:     def __init__(self,id):
                     34:         """initalize osas_server"""
                     35:         self.id = id
                     36:         
1.13      dwinter    37:     def getImages(self,path):
1.12      dwinter    38:         """hack"""
                     39:         imageEnding=['.gif','.jpg','.jpeg','.png','.tiff','.tif']
1.13      dwinter    40: 
1.12      dwinter    41:         dirs=os.listdir(path)
                     42:         ret=[]
1.13      dwinter    43: 
1.12      dwinter    44:         for dir in dirs:
1.13      dwinter    45: 
                     46:             if os.path.isdir(os.path.join(path,dir)):
                     47:                 
1.12      dwinter    48:                 for subdir in os.listdir(os.path.join(path,dir)):
                     49:                     if os.path.splitext(subdir)[1].lower() in imageEnding:
                     50:                         ret.append(os.path.join(dir,subdir))
                     51:             else:
                     52:                 if os.path.splitext(dir)[1] in imageEnding:
                     53:                         ret.append(os.path.join(dir))
                     54:         return ret
                     55:     
                     56: 
1.13      dwinter    57:     def getMovies(self,path):
1.12      dwinter    58:         """hack"""
                     59:         movieEnding=['.dv','.mov','.mp4']
                     60:         dirs=os.listdir(path)
                     61:         ret=[]
                     62:         for dir in dirs:
1.13      dwinter    63:             if os.path.isdir(os.path.join(path,dir)):
1.12      dwinter    64:                 for subdir in os.listdir(os.path.join(path,dir)):
                     65:                     if os.path.splitext(subdir)[1].lower() in movieEnding:
                     66:                         ret.append(os.path.join(dir,subdir))
                     67:             else:
1.13      dwinter    68:                 if os.path.splitext(dir)[1] in movieEnding:
1.12      dwinter    69:                         ret.append(os.path.join(dir))
                     70:         return ret
                     71:     
                     72:        
1.1       dwinter    73:     def findIndexMeta(self,realPath=""):
                     74:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
                     75:         @keyword path: default ist "", Pfad auf das Object
                     76:         @return: None falls kein index.meta existiert sonst Pfad auf das index.meta
                     77:         """
                     78:         
                     79:         #suche index.meta
                     80:         while (not os.path.exists(os.path.join(realPath,'index.meta'))) and (not ((realPath=="") or (realPath=="/"))):
                     81:             realPath=os.path.split(realPath)[0]
                     82:             
                     83:         if realPath=='' or realPath=='/':
                     84:             if os.path.exists(os.path.join(realPath,'index.meta')):
                     85:                 return (os.path.join(realPath,'index.meta'))
                     86:             else:
                     87:                 return None
                     88:         else:
                     89:             return os.path.join(realPath,'index.meta')
                     90: 
                     91:     def findIndexMetaWithStats(self,path=""):
                     92:         """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
                     93:         @keyword path: default ist "", Pfad auf das Object
                     94:         @return: None falls kein index.meta existiert sonst Tupel (Pfad auf das index.meta,stats(indexMeta)
                     95:         """
                     96: 
                     97:         indexMeta=self.findIndexMeta(path)
                     98:         if indexMeta:
                     99:             return (indexMeta,self.getStat(indexMeta))
                    100:         else:
                    101:             return (None,[])
                    102: 
                    103: 
                    104:     def getStat(self,path=""):
                    105:         """Gibt stat von path aus
                    106:         @keyword path: default ist "", Pfad
                    107:         @return: stat[path]"""
                    108: 
                    109:         if not os.path.exists(path):
                    110:             #return None,"(ERROR) path %s does not exist."%path
                    111:             return None
                    112:         else:
                    113:             return [x for x in os.stat(path)]
                    114:             
                    115:             
                    116:             
                    117: 
                    118:     def listdir(self,path=""):
                    119:         """list dir"""
                    120:         return os.listdir(path)
                    121: 
1.5       dwinter   122:     def isdir(self,path=""):
                    123:         """list dir"""
                    124:         return os.path.isdir(path)
                    125: 
                    126:     def isfile(self,path=""):
                    127:         """list dir"""
1.6       dwinter   128:         return os.path.isfile(path)
1.5       dwinter   129: 
                    130: 
                    131: 
1.3       dwinter   132:     def getFile(self,path):
                    133:         """getFile"""
1.4       dwinter   134: 
                    135:         if not os.path.exists(path):
                    136:             return None
                    137: 
1.3       dwinter   138:         f=file(path,'r')
1.4       dwinter   139:         
1.3       dwinter   140:         ret=f.read()
1.4       dwinter   141: 
1.3       dwinter   142:         f.close()
1.4       dwinter   143:         
1.3       dwinter   144:         return ret
1.6       dwinter   145: 
                    146:     def getAllIndexMetasOfSubDirs(self,path):
                    147:         """get all index Metas"""
                    148:         ret={}
                    149:         if os.path.exists(path+"/index.meta"):
1.10      dwinter   150:             compressed=encodeRPC(file(path+"/index.meta","r").read())
1.8       dwinter   151:             ret["."]=('OSAS_dir',compressed)
1.6       dwinter   152:         for dir in os.listdir(path):
1.17      casties   153:        zLOG.LOG("SERVER",zLOG.INFO,"get all index meta in %s"%dir) 
1.6       dwinter   154:             fileType=OSAS_helpers.checkOSASFileType(os.path.join(path,dir))
                    155:             if os.path.exists(os.path.join(path,dir,"index.meta")):
1.10      dwinter   156:                 compressed=encodeRPC(file(os.path.join(path,dir,"index.meta"),"r").read())
1.8       dwinter   157:                 ret[dir]=('OSAS_dir',compressed)
1.6       dwinter   158:             else:
                    159:                 ret[dir]=(fileType,None)
1.8       dwinter   160:         return ret
1.6       dwinter   161: 
1.20      dwinter   162:     def writeMetaDataFile(self,path,metadata,compressed=None):
1.11      dwinter   163:         """writefiletoserver"""
1.20      dwinter   164:         if compressed:
                    165:             metadata=decodeRPC(metadata)
                    166:             
1.11      dwinter   167:         try:
                    168:             fh=file(path,"w")
                    169:             fh.write(metadata)
                    170:             fh.close
                    171:             return True
                    172:         except:
1.19      casties   173:             zLOG.LOG("SERVER (writeMetadataFile)",zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])                        
1.11      dwinter   174:             return False
1.14      dwinter   175: 
                    176:     def generateMovieThumb(self,input,output):
1.16      dwinter   177:         """generate Movie"""
1.21    ! dwinter   178:         logger("SERVER",logging.INFO,"/usr/local/bin/thumbbite.pl %s %s"%(input,output)) 
1.16      dwinter   179:         ret=os.popen("/usr/local/bin/thumbbite.pl %s %s"%(input,output))
1.21    ! dwinter   180:         logger("SERVER",logging.INFO,ret)                        
1.14      dwinter   181:         return "ok"
                    182: 
1.1       dwinter   183: def manage_addOSAS_storeOnlineServerForm(self):
                    184:     """interface for adding the OSAS_storeOnline"""
                    185:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)
                    186:     return pt()
                    187: 
                    188: def manage_addOSAS_storeOnlineServer(self,id,RESPONSE=None):
                    189:     """add the OSAS_storeOnline
                    190:     @param id: id
                    191:     """
                    192:     newObj=OSAS_storeOnlineServer(id)
                    193:     self._setObject(id,newObj)
                    194:     if RESPONSE is not None:
                    195:         RESPONSE.redirect('manage_main')
                    196: 

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