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