File:  [Repository] / XMLRpcTools / XMLRpcTools.py
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Tue Nov 14 21:15:44 2006 UTC (17 years, 7 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
minor import re added

    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>