1:
2: from OFS.SimpleItem import SimpleItem
3: import xmlrpclib
4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
5: import os.path
6: from Globals import package_home
7: import re
8:
9: class XMLRpcServerProxy(SimpleItem):
10: """makes servery proxy available for zope"""
11:
12: meta_type="XMLRpcServerProxy"
13:
14: manage_options= (
15: {'label':'Main Config','action':'mainConfigHTML'},
16: )+ SimpleItem.manage_options
17:
18: def __init__(self,id,serverUrl):
19: """init server proxy"""
20: self.id=id
21: self.serverUrl=id
22:
23: def ServerProxy(self,serverUrl=None):
24: """get the proxy"""
25: if not serverUrl:
26: serverUrl=self.serverUrl
27:
28: pr=xmlrpclib.ServerProxy(serverUrl)
29:
30: return pr
31:
32: def eval(self,method,argument):
33: """do proxy request"""
34: #only letters are allowed
35: method=re.sub('[^A-z]','',method)
36: argument=re.sub('[^A-z]','',argument)
37:
38: sr=self.ServerProxy()
39: mtstr="""sr.%s('%s')"""%(method,argument)
40:
41:
42: return eval(mtstr)
43:
44: def mainConfigHTML(self):
45: """main config form"""
46: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self)
47: return pt()
48:
49: def mainConfig(self,serverUrl,RESPONSE=None):
50: """main config"""
51:
52: self.serverUrl=serverUrl
53:
54:
55: if RESPONSE:
56: RESPONSE.redirect("/manage_main")
57:
58:
59: def manage_addXMLRpcServerProxyForm(self):
60: """add the CXMLRpcServerProxy"""
61: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self)
62: return pt()
63:
64: def manage_addXMLRpcServerProxy(self,id,serverUrl,RESPONSE=None):
65: """add the basket"""
66: ob=XMLRpcServerProxy(id,serverUrl)
67:
68: self._setObject(id, ob)
69:
70: if RESPONSE is not None:
71: RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>