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