Annotation of OSA_system2/OSAS_server.py, revision 1.12
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.3 dwinter 11:
1.10 dwinter 12: def encodeRPC(string):
13: return base64.encodestring(bz2.compress(string))
1.4 dwinter 14:
1.1 dwinter 15:
16: class OSAS_storeOnlineServer(SimpleItem):
17: """Server for store Online system"""
1.2 dwinter 18:
1.4 dwinter 19:
1.2 dwinter 20: meta_type="OSAS_server"
21:
1.12 ! dwinter 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:
1.1 dwinter 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:
1.5 dwinter 103: def isdir(self,path=""):
104: """list dir"""
105: return os.path.isdir(path)
106:
107: def isfile(self,path=""):
108: """list dir"""
1.6 dwinter 109: return os.path.isfile(path)
1.5 dwinter 110:
111:
112:
1.3 dwinter 113: def getFile(self,path):
114: """getFile"""
1.4 dwinter 115:
116: if not os.path.exists(path):
1.11 dwinter 117: print "sorry"
1.4 dwinter 118: return None
119:
1.3 dwinter 120: f=file(path,'r')
1.4 dwinter 121:
1.3 dwinter 122: ret=f.read()
1.4 dwinter 123:
1.3 dwinter 124: f.close()
1.4 dwinter 125:
1.3 dwinter 126: return ret
1.6 dwinter 127:
128: def getAllIndexMetasOfSubDirs(self,path):
129: """get all index Metas"""
130: ret={}
131: if os.path.exists(path+"/index.meta"):
1.10 dwinter 132: compressed=encodeRPC(file(path+"/index.meta","r").read())
1.8 dwinter 133: ret["."]=('OSAS_dir',compressed)
1.6 dwinter 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")):
1.10 dwinter 137: compressed=encodeRPC(file(os.path.join(path,dir,"index.meta"),"r").read())
1.8 dwinter 138: ret[dir]=('OSAS_dir',compressed)
1.6 dwinter 139: else:
140: ret[dir]=(fileType,None)
1.8 dwinter 141: return ret
1.6 dwinter 142:
1.11 dwinter 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:
1.6 dwinter 153:
1.1 dwinter 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>