Annotation of OSA_system2/OSAS_server.py, revision 1.11
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:
22:
1.1 dwinter 23: def findIndexMeta(self,realPath=""):
24: """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
25: @keyword path: default ist "", Pfad auf das Object
26: @return: None falls kein index.meta existiert sonst Pfad auf das index.meta
27: """
28:
29: #suche index.meta
30: while (not os.path.exists(os.path.join(realPath,'index.meta'))) and (not ((realPath=="") or (realPath=="/"))):
31: realPath=os.path.split(realPath)[0]
32:
33: if realPath=='' or realPath=='/':
34: if os.path.exists(os.path.join(realPath,'index.meta')):
35: return (os.path.join(realPath,'index.meta'))
36: else:
37: return None
38: else:
39: return os.path.join(realPath,'index.meta')
40:
41: def findIndexMetaWithStats(self,path=""):
42: """finde Rueckwaerts im Baum von Pfad ausgehend, dass erste index.meta file
43: @keyword path: default ist "", Pfad auf das Object
44: @return: None falls kein index.meta existiert sonst Tupel (Pfad auf das index.meta,stats(indexMeta)
45: """
46:
47: indexMeta=self.findIndexMeta(path)
48: if indexMeta:
49: return (indexMeta,self.getStat(indexMeta))
50: else:
51: return (None,[])
52:
53:
54: def getStat(self,path=""):
55: """Gibt stat von path aus
56: @keyword path: default ist "", Pfad
57: @return: stat[path]"""
58:
59: if not os.path.exists(path):
60: #return None,"(ERROR) path %s does not exist."%path
61: return None
62: else:
63: return [x for x in os.stat(path)]
64:
65:
66:
67:
68: def listdir(self,path=""):
69: """list dir"""
70: return os.listdir(path)
71:
1.5 dwinter 72: def isdir(self,path=""):
73: """list dir"""
74: return os.path.isdir(path)
75:
76: def isfile(self,path=""):
77: """list dir"""
1.6 dwinter 78: return os.path.isfile(path)
1.5 dwinter 79:
80:
81:
1.3 dwinter 82: def getFile(self,path):
83: """getFile"""
1.4 dwinter 84:
85: if not os.path.exists(path):
1.11 ! dwinter 86: print "sorry"
1.4 dwinter 87: return None
88:
1.3 dwinter 89: f=file(path,'r')
1.4 dwinter 90:
1.3 dwinter 91: ret=f.read()
1.4 dwinter 92:
1.3 dwinter 93: f.close()
1.4 dwinter 94:
1.3 dwinter 95: return ret
1.6 dwinter 96:
97: def getAllIndexMetasOfSubDirs(self,path):
98: """get all index Metas"""
99: ret={}
100: if os.path.exists(path+"/index.meta"):
1.10 dwinter 101: compressed=encodeRPC(file(path+"/index.meta","r").read())
1.8 dwinter 102: ret["."]=('OSAS_dir',compressed)
1.6 dwinter 103: for dir in os.listdir(path):
104: fileType=OSAS_helpers.checkOSASFileType(os.path.join(path,dir))
105: if os.path.exists(os.path.join(path,dir,"index.meta")):
1.10 dwinter 106: compressed=encodeRPC(file(os.path.join(path,dir,"index.meta"),"r").read())
1.8 dwinter 107: ret[dir]=('OSAS_dir',compressed)
1.6 dwinter 108: else:
109: ret[dir]=(fileType,None)
1.8 dwinter 110: return ret
1.6 dwinter 111:
1.11 ! dwinter 112: def writeMetaDataFile(self,path,metadata):
! 113: """writefiletoserver"""
! 114: try:
! 115: fh=file(path,"w")
! 116: fh.write(metadata)
! 117: fh.close
! 118: return True
! 119: except:
! 120: return False
! 121:
1.6 dwinter 122:
1.1 dwinter 123: def manage_addOSAS_storeOnlineServerForm(self):
124: """interface for adding the OSAS_storeOnline"""
125: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addStoreOnlineServer.zpt')).__of__(self)
126: return pt()
127:
128: def manage_addOSAS_storeOnlineServer(self,id,RESPONSE=None):
129: """add the OSAS_storeOnline
130: @param id: id
131: """
132: newObj=OSAS_storeOnlineServer(id)
133: self._setObject(id,newObj)
134: if RESPONSE is not None:
135: RESPONSE.redirect('manage_main')
136:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>