Annotation of XMLRpcTools/XMLRpcTools.py, revision 1.4

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
1.2       dwinter     7: import re
1.1       dwinter     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
1.3       dwinter    35:         method=re.sub('[^A-z0-9]','',method)
                     36:         argument=re.sub('[^A-z0-9]','',argument)
1.1       dwinter    37:         
                     38:         sr=self.ServerProxy()
                     39:         mtstr="""sr.%s('%s')"""%(method,argument)
                     40:         
1.4     ! dwinter    41:        
1.1       dwinter    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>