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>