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>