from OFS.SimpleItem import SimpleItem
import xmlrpclib
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
import os.path
from Globals import package_home
class XMLRpcServerProxy(SimpleItem):
"""makes servery proxy available for zope"""
meta_type="XMLRpcServerProxy"
manage_options= (
{'label':'Main Config','action':'mainConfigHTML'},
)+ SimpleItem.manage_options
def __init__(self,id,serverUrl):
"""init server proxy"""
self.id=id
self.serverUrl=id
def ServerProxy(self,serverUrl=None):
"""get the proxy"""
if not serverUrl:
serverUrl=self.serverUrl
pr=xmlrpclib.ServerProxy(serverUrl)
return pr
def eval(self,method,argument):
"""do proxy request"""
#only letters are allowed
method=re.sub('[^A-z]','',method)
argument=re.sub('[^A-z]','',argument)
sr=self.ServerProxy()
mtstr="""sr.%s('%s')"""%(method,argument)
return eval(mtstr)
def mainConfigHTML(self):
"""main config form"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageXMLRpcServerProxy.zpt')).__of__(self)
return pt()
def mainConfig(self,serverUrl,RESPONSE=None):
"""main config"""
self.serverUrl=serverUrl
if RESPONSE:
RESPONSE.redirect("/manage_main")
def manage_addXMLRpcServerProxyForm(self):
"""add the CXMLRpcServerProxy"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addXMLRpcServerProxy.zpt')).__of__(self)
return pt()
def manage_addXMLRpcServerProxy(self,id,serverUrl,RESPONSE=None):
"""add the basket"""
ob=XMLRpcServerProxy(id,serverUrl)
self._setObject(id, ob)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>