Annotation of OSA_system2/OSAS_server.py, revision 1.18

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

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