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