Permalink
Browse files

Committing current progress so I can ask for help more easily.

  • Loading branch information...
1 parent 11dccd0 commit 8b39f5ceb49bc1757dc47ce176437846f5c9cbec @pedersen pedersen committed May 5, 2010
Showing with 653 additions and 637 deletions.
  1. +1 −632 tgext.xmlrpc.wpr
  2. +626 −0 tgext.xmlrpc.wpu
  3. +25 −4 tgext/xmlrpc/controllers/__init__.py
  4. +1 −1 tgext/xmlrpc/test/test_controller.py
View
633 tgext.xmlrpc.wpr
@@ -10,637 +10,6 @@ proj.directory-list = [{'dirloc': loc('.'),
'include_hidden': False,
'recursive': True,
'watch_for_changes': True}]
-proj.file-type = 'normal'
-[user attributes]
-debug.breakpoints = {loc('tgext/xmlrpc/controllers/__init__.py'): {33: (0,
- None,
- 1,
- 0)}}
-debug.err-values = {loc('../../../../usr/lib/wingide3.2/src/testing/runners/run_nosetests_xml.py'): {}}
-debug.var-col-widths = [0.40988372093023256,
- 0.59011627906976749]
-edit.file-encoding = {loc('tgext/xmlrpc/test/root.py'): 'ISO-8859-1'}
-guimgr.overall-gui-state = {'windowing-policy': 'combined-window',
- 'windows': [{'name': 'V1nsKZThKBmevtyytlHtrJqtAZ'\
- '5cIgZH',
- 'size-state': 'maximized',
- 'type': 'dock',
- 'view': {'area': 'tall',
- 'constraint': None,
- 'current_pages': [0,
- 1],
- 'notebook_display': 'normal',
- 'notebook_percent': 0.25,
- 'override_title': None,
- 'pagelist': [('debug-stack',
- 'tall',
- 1,
- {}),
- ('project',
- 'tall',
- 0,
- {'tree-state': {'file-sort-method': 'by name',
- 'list-files-first': False,
- 'tree-states': {'deep': {'column-widths': [1.0],
- 'expanded-nodes': [(0,),
- (0,
- 0),
- (0,
- 0,
- 0)],
- 'selected-nodes': [(0,
- 0,
- 2)],
- 'top-node': (0,)}},
- 'tree-style': 'deep'}}),
- ('source-assistant',
- 'tall',
- 2,
- {'docstring-during-complete': False,
- 'wrap-lines': True}),
- ('browser',
- 'tall',
- 0,
- {}),
- ('templates',
- 'tall',
- 0,
- {})],
- 'primary_view_state': {'area': 'wide',
- 'constraint': None,
- 'current_pages': [5,
- 2],
- 'notebook_display': 'normal',
- 'notebook_percent': 0.31374606505771252,
- 'override_title': None,
- 'pagelist': [('bookmarks',
- 'wide',
- 1,
- {'tree-state': []}),
- ('debug-breakpoints',
- 'wide',
- 0,
- {}),
- ('debug-io',
- 'wide',
- 1,
- {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'history': {},
- 'sel-line': 4,
- 'sel-line-start': 523,
- 'selection_end': 523,
- 'selection_start': 523}),
- ('debug-probe',
- 'wide',
- 2,
- {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'history': {u'file:/home/marvin/src/6ave_logscan/scanlogs.py': [''\
- 'a\n',
- "ow['amount']\n",
- 'txn\n'],
- u'file:/home/marvin/venvs/bitvizier/bin/paster': [''\
- 'from tg import request\n',
- 'tg.request\n',
- 'request\n',
- 'request.env\n',
- 'request.environ\n',
- 'request.environ.keys()\n'],
- u'file:/usr/lib/wingide3.2/src/testing/runners/run_nosetests_xml.py': [""\
- "data['misc']\n",
- "data['misc']['i]\n",
- 'game.markers\n',
- 'i\n',
- "data['misc'][i]\n",
- 'g.citylimits\n',
- 'package_name\n',
- 'remainder\n',
- 'state\n',
- 'from tg import request\n',
- 'request.keys()\n',
- 'import xmlrpclib\n',
- 'xmlrpclib.loads(request.str_POST)\n',
- 'xmlrpclib.loads(request.str_POST[0])\n',
- 'request.str_POST.keys()\n',
- 'request.str_POST\n',
- 'request.POST[0]\n',
- 'str(request.POST)\n',
- 'dir(request)\n',
- 'request.POST\n',
- 'request.POST.keys()\n',
- 'request.body\n',
- 'import xml.sax.saxutils as saxutils\n',
- 'saxutils.unescape(request.body)\n',
- 'urllib\n',
- 'import urllib\n',
- 'urllib.unquote(request.body)\n',
- 'xmlrpclib.loads(urllib.unquote(request.body))\n',
- 'from cgi import escape\n',
- 'from urllib2 import unquote\n',
- 'unquote(request.body)\n',
- 'import cgi\n',
- 'urllib.unquote_plus(request.body)\n',
- 'xmlrpclib.loads(urllib.unquote_plus(request.body))\n',
- 'method\n',
- 'parms\n']},
- 'sel-line': 4,
- 'sel-line-start': 47,
- 'selection_end': 51,
- 'selection_start': 51}),
- ('debug-exceptions',
- 'wide',
- 0,
- {}),
- ('debug-modules',
- 'wide',
- 1,
- {}),
- ('python-shell',
- 'wide',
- 2,
- {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'history': {None: ["storage = FileStorage.FileStorage"\
- "('/home/marvin/webdb/Data.fs')\n",
- 'dir(conn)\n',
- "conn.get('/')\n",
- 'dbroot=conn.root()\n',
- 'dbroot\n',
- 'conn.close()\n',
- 'import wx\n',
- 'dir(ar3)\n',
- 'import ar3\n',
- 'ar3.__file__\n',
- 'import ar3.core\n',
- 'import ar3.core.const\n',
- "a='abc amount=\"'\n",
- "a.find('z')\n",
- 'dir(a)\n',
- 'help(a)\n',
- "a='20090910 162037 {1216} R002: getDesc: trans=\"Refund\" name="\
- "\"MC\" type=\"MC\" account=\"6935\" tender=\"Credit\" amount=\"0.01"\
- "\" invoice=\"42\" reference=\"42\"'\n",
- "a.find('\n",
- "a.find('amount=\"')\n",
- "a.find('amount=\"', 116)\n",
- "a.find('\"', 116)\n",
- 'a[116:120]\n',
- '(a,i) = enumerate([1,2,3])\n',
- 'help(enumerate)\n',
- 'a,i = enumerate([1,2,3])\n',
- 'enumerate(a)\n',
- 'for a,i in enumerate(a):\n',
- '\tprint a,1\n',
- '\tprint a,i\n',
- 'a=[1,2,3]\n',
- 'a.remove\n',
- "' a '.strip()\n",
- 'f=385.2\n',
- '"%.2f" % (f)\n',
- 'a=[1,1,1]\n',
- 'a.remove(1)\n',
- 'a.__delitem__(0)\n',
- 'del a[0]\n',
- "a={'a':1}\n",
- 'a\n',
- 'allmenu\n',
- 'import os\n']},
- 'sel-line': 6,
- 'sel-line-start': 231,
- 'selection_end': 235,
- 'selection_start': 235}),
- ('interactive-search',
- 'wide',
- 0,
- {'fScope': {'fFileSetName': u'All Source Files',
- 'fLocation': None,
- 'fRecursive': True,
- 'fType': 'project-files'},
- 'fSearchSpec': {'fEndPos': None,
- 'fIncludeLinenos': True,
- 'fInterpretBackslashes': False,
- 'fMatchCase': False,
- 'fOmitBinary': True,
- 'fRegexFlags': 46,
- 'fReplaceText': u'',
- 'fReverse': False,
- 'fSearchText': u'',
- 'fStartPos': 0,
- 'fStyle': 'text',
- 'fWholeWords': False,
- 'fWrap': True},
- 'fUIOptions': {'fAutoBackground': True,
- 'fFilePrefix': 'short-file',
- 'fFindAfterReplace': True,
- 'fInSelection': False,
- 'fIncremental': True,
- 'fReplaceOnDisk': False,
- 'fShowFirstMatch': False,
- 'fShowLineno': True,
- 'fShowReplaceWidgets': False},
- 'replace-entry-expanded': False,
- 'search-entry-expanded': False}),
- ('batch-search',
- 'wide',
- 0,
- {'fScope': {'fFileSetName': u'All Source Files',
- 'fLocation': None,
- 'fRecursive': True,
- 'fType': 'project-files'},
- 'fSearchSpec': {'fEndPos': None,
- 'fIncludeLinenos': True,
- 'fInterpretBackslashes': False,
- 'fMatchCase': False,
- 'fOmitBinary': True,
- 'fRegexFlags': 46,
- 'fReplaceText': '',
- 'fReverse': False,
- 'fSearchText': '',
- 'fStartPos': 0,
- 'fStyle': 'text',
- 'fWholeWords': False,
- 'fWrap': True},
- 'fUIOptions': {'fAutoBackground': True,
- 'fFilePrefix': 'short-file',
- 'fFindAfterReplace': True,
- 'fInSelection': False,
- 'fIncremental': True,
- 'fReplaceOnDisk': False,
- 'fShowFirstMatch': False,
- 'fShowLineno': True,
- 'fShowReplaceWidgets': False},
- 'replace-entry-expanded': False,
- 'search-entry-expanded': False}),
- ('debug-data',
- 'wide',
- 0,
- {}),
- ('testing',
- 'wide',
- 0,
- {'added-files': [loc('tgext/xmlrpc/test/test_controller.py')],
- 'filter': '',
- 'recent-filters': None}),
- ('debug-watch',
- 'wide',
- 1,
- {'node-states': [('eval',
- 'request')],
- 'tree-state': {'column-widths': [0.40988372093023256,
- 0.59011627906976749],
- 'expanded-nodes': [],
- 'selected-nodes': [],
- 'top-node': (0,)}})],
- 'primary_view_state': {'editor_states': {'bookmarks': ([(loc('tgext/xmlrpc/test/test_controller.py'),
- {'attrib-starts': [('TestXmlRpcController',
- 32),
- ('TestXmlRpcController.test_xmlrpc_too_many_args',
- 40)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 40,
- 'sel-line-start': 1527,
- 'selection_end': 1560,
- 'selection_start': 1560},
- 1273036621.1849539),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('InvalidXmlRpcType',
- 7)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 9,
- 'sel-line-start': 205,
- 'selection_end': 205,
- 'selection_start': 205},
- 1273036660.939913),
- (loc('tgext/xmlrpc/test/test_controller.py'),
- {'attrib-starts': [('TestXmlRpcController',
- 32),
- ('TestXmlRpcController.test_xmlrpc_correct_argco'\
- 'unt',
- 48)],
- 'first-line': 22,
- 'folded-linenos': [],
- 'sel-line': 50,
- 'sel-line-start': 1850,
- 'selection_end': 1859,
- 'selection_start': 1859},
- 1273036662.69765),
- (loc('tgext/xmlrpc/test/test_controller.py'),
- {'attrib-starts': [('TestXmlRpcController',
- 32),
- ('TestXmlRpcController.test_xmlrpc_correct_argco'\
- 'unt',
- 48)],
- 'first-line': 22,
- 'folded-linenos': [],
- 'sel-line': 50,
- 'sel-line-start': 1850,
- 'selection_end': 1858,
- 'selection_start': 1858},
- 1273036692.5584421),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('xmlrpc',
- 10),
- ('xmlrpc.__call__',
- 15)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 17,
- 'sel-line-start': 425,
- 'selection_end': 460,
- 'selection_start': 460},
- 1273036745.9052429),
- (loc('tgext/xmlrpc/test/test_controller.py'),
- {'attrib-starts': [('TestXmlRpcController',
- 34),
- ('TestXmlRpcController.test_xmlrpc_correct_argco'\
- 'unt',
- 50)],
- 'first-line': 26,
- 'folded-linenos': [],
- 'sel-line': 51,
- 'sel-line-start': 1829,
- 'selection_end': 1893,
- 'selection_start': 1893},
- 1273036861.2077589),
- (loc('tgext/xmlrpc/test/controllers/root.py'),
- {'attrib-starts': [('TestRpcController',
- 6)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 7,
- 'sel-line-start': 252,
- 'selection_end': 266,
- 'selection_start': 266},
- 1273036970.06973),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('xmlrpc',
- 10),
- ('xmlrpc.__call__',
- 15)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 17,
- 'sel-line-start': 425,
- 'selection_end': 460,
- 'selection_start': 460},
- 1273036970.2863021),
- (loc('tgext/xmlrpc/test/controllers/root.py'),
- {'attrib-starts': [('TestRpcController',
- 6)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 7,
- 'sel-line-start': 252,
- 'selection_end': 266,
- 'selection_start': 266},
- 1273036972.207077),
- (loc('tgext/xmlrpc/test/test_controller.py'),
- {'attrib-starts': [('TestXmlRpcController',
- 34),
- ('TestXmlRpcController.test_xmlrpc_correct_argco'\
- 'unt',
- 50)],
- 'first-line': 26,
- 'folded-linenos': [],
- 'sel-line': 51,
- 'sel-line-start': 1829,
- 'selection_end': 1911,
- 'selection_start': 1911},
- 1273036972.399771),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 19),
- ('XmlRpcController._dispatch',
- 22)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 26,
- 'sel-line-start': 698,
- 'selection_end': 710,
- 'selection_start': 710},
- 1273036993.9500699),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 19),
- ('XmlRpcController._dispatch',
- 22)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 26,
- 'sel-line-start': 698,
- 'selection_end': 698,
- 'selection_start': 698},
- 1273037003.8538971),
- (loc('../../../../usr/lib/python2.6/xmlrpclib.py'),
- {'attrib-starts': [('ExpatParser',
- 583),
- ('ExpatParser.feed',
- 599)],
- 'first-line': 575,
- 'folded-linenos': [],
- 'sel-line': 600,
- 'sel-line-start': 18999,
- 'selection_end': 18999,
- 'selection_start': 18999},
- 1273037068.8670299),
- (loc('../../../../usr/lib/python2.6/xmlrpclib.py'),
- {'attrib-starts': [('ExpatParser',
- 583),
- ('ExpatParser.feed',
- 599)],
- 'first-line': 575,
- 'folded-linenos': [],
- 'sel-line': 600,
- 'sel-line-start': 18999,
- 'selection_end': 18999,
- 'selection_start': 18999},
- 1273037484.199177),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 23),
- ('XmlRpcController._dispatch',
- 26)],
- 'first-line': 3,
- 'folded-linenos': [],
- 'sel-line': 30,
- 'sel-line-start': 774,
- 'selection_end': 848,
- 'selection_start': 848},
- 1273037720.6858511),
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 23),
- ('XmlRpcController._dispatch',
- 26)],
- 'first-line': 3,
- 'folded-linenos': [],
- 'sel-line': 31,
- 'sel-line-start': 849,
- 'selection_end': 849,
- 'selection_start': 849},
- 1273037843.874222),
- [loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/dispatcher.py'),
- {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 0,
- 'sel-line-start': 0,
- 'selection_end': 0,
- 'selection_start': 0},
- 1273037858.567919],
- (loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 23),
- ('XmlRpcController._dispatch',
- 26)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 31,
- 'sel-line-start': 849,
- 'selection_end': 849,
- 'selection_start': 849},
- 1273037865.7717309),
- [loc('tgext/xmlrpc/__init__.py'),
- {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 2,
- 'sel-line-start': 82,
- 'selection_end': 142,
- 'selection_start': 142},
- 1273037866.5224199],
- [loc('tgext/xmlrpc/controllers/__init__.py'),
- {'attrib-starts': [('XmlRpcController',
- 23),
- ('XmlRpcController._dispatch',
- 26)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 31,
- 'sel-line-start': 849,
- 'selection_end': 849,
- 'selection_start': 849},
- 1273037868.0425999]],
- 19),
- 'current-loc': loc('tgext/xmlrpc/controllers/__init__.py'),
- 'editor-states': {loc('tgext/xmlrpc/controllers/__init__.py'): {'att'\
- 'rib-starts': [('XmlRpcController',
- 23),
- ('XmlRpcController._dispatch',
- 26)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 31,
- 'sel-line-start': 836,
- 'selection_end': 914,
- 'selection_start': 914},
- loc('tgext/xmlrpc/test/controllers/root.py'): {'at'\
- 'trib-starts': [('TestRpcController',
- 6)],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 7,
- 'sel-line-start': 252,
- 'selection_end': 266,
- 'selection_start': 266},
- loc('tgext/xmlrpc/test/test_controller.py'): {'att'\
- 'rib-starts': [('TestXmlRpcController',
- 34),
- ('TestXmlRpcController.test_xmlrpc_correct_argcount',
- 50)],
- 'first-line': 26,
- 'folded-linenos': [],
- 'sel-line': 51,
- 'sel-line-start': 1829,
- 'selection_end': 1911,
- 'selection_start': 1911}},
- 'has-focus': False},
- 'open_files': [u'tgext/xmlrpc/test/controllers/root.py',
- u'tgext/xmlrpc/test/test_controller.py',
- u'tgext/xmlrpc/controllers/__init__.py']},
- 'split_percents': {0: 0.50210378681626933},
- 'splits': 2,
- 'tab_location': 'top',
- 'user_data': {}},
- 'split_percents': {0: 0.5},
- 'splits': 2,
- 'tab_location': 'left',
- 'user_data': {}},
- 'window-alloc': (1920,
- 193,
- 1918,
- 729)}]}
-guimgr.recent-documents = [loc('tgext/xmlrpc/controllers/__init__.py'),
- loc('tgext/xmlrpc/test/test_controller.py'),
- loc('tgext/xmlrpc/test/controllers/root.py')]
-guimgr.visual-state = {loc('tgext/xmlrpc/__init__.py'): {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 2,
- 'sel-line-start': 82,
- 'selection_end': 142,
- 'selection_start': 142},
- loc('tgext/xmlrpc/test/root.py'): {'attrib-starts': [],
- 'first-line': 0,
- 'folded-linenos': [],
- 'sel-line': 0,
- 'sel-line-start': 0,
- 'selection_end': 0,
- 'selection_start': 0},
- loc('../../venvs/tg21b2_26/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg/pylons/legacy.py'): {''\
- 'attrib-starts': [('load_h',
- 106)],
- 'first-line': 87,
- 'folded-linenos': [],
- 'sel-line': 112,
- 'sel-line-start': 3458,
- 'selection_end': 3458,
- 'selection_start': 3458},
- loc('../../venvs/tg21b2_26/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/configuration.py'): {''\
- 'attrib-starts': [('AppConfig',
- 97),
- ('AppConfig.setup_jinja_renderer',
- 417)],
- 'first-line': 393,
- 'folded-linenos': [],
- 'sel-line': 419,
- 'sel-line-start': 16201,
- 'selection_end': 16201,
- 'selection_start': 16201},
- loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/dispatcher.py'): {''\
- 'attrib-starts': [('Dispatcher',
- 82),
- ('Dispatcher._get_dispatchable',
- 171)],
- 'first-line': 176,
- 'folded-linenos': [],
- 'sel-line': 201,
- 'sel-line-start': 7120,
- 'selection_end': 7120,
- 'selection_start': 7120},
- loc('../../../../usr/lib/python2.6/xmlrpclib.py'): {''\
- 'attrib-starts': [('ExpatParser',
- 583),
- ('ExpatParser.feed',
- 599)],
- 'first-line': 575,
- 'folded-linenos': [],
- 'sel-line': 600,
- 'sel-line-start': 18999,
- 'selection_end': 18999,
- 'selection_start': 18999}}
-proj.env-vars = {None: ('default',
- [''])}
-proj.home-dir = loc('.')
-proj.initial-dir = {None: ('custom',
- '/home/marvin/src/tgext.xmlrpc')}
-proj.pyexec = {None: ('custom',
- '/home/marvin/venvs/tgext.xmlrpc/bin/python')}
+proj.file-type = 'shared'
testing.auto-test-file-specs = ('test_*',)
testing.test-framework = {None: 'nose'}
View
626 tgext.xmlrpc.wpu
@@ -0,0 +1,626 @@
+#!wing
+#!version=3.0
+##################################################################
+# Wing IDE project file : User-specific branch #
+##################################################################
+[user attributes]
+debug.breakpoints = {loc('tgext/xmlrpc/controllers/__init__.py'): {65: (0,
+ None,
+ 1,
+ 0)}}
+debug.err-values = {None: {},
+ loc('../../../../usr/lib/wingide3.2/src/testing/runners/run_nosetests_xml.py'): {}}
+debug.var-col-widths = [0.40975609756097559,
+ 0.59024390243902436]
+edit.file-encoding = {loc('tgext/xmlrpc/test/root.py'): 'ISO-8859-1'}
+guimgr.overall-gui-state = {'windowing-policy': 'combined-window',
+ 'windows': [{'name': 'V1nsKZThKBmevtyytlHtrJqtAZ'\
+ '5cIgZH',
+ 'size-state': '',
+ 'type': 'dock',
+ 'view': {'area': 'tall',
+ 'constraint': None,
+ 'current_pages': [0,
+ 1],
+ 'notebook_display': 'tabs only',
+ 'notebook_percent': 0.25,
+ 'override_title': None,
+ 'pagelist': [('debug-stack',
+ 'tall',
+ 1,
+ {}),
+ ('project',
+ 'tall',
+ 0,
+ {'tree-state': {'file-sort-method': 'by name',
+ 'list-files-first': False,
+ 'tree-states': {'deep': {'column-widths': None,
+ 'expanded-nodes': [],
+ 'selected-nodes': [],
+ 'top-node': (0,)}},
+ 'tree-style': 'deep'}}),
+ ('source-assistant',
+ 'tall',
+ 2,
+ {'docstring-during-complete': False,
+ 'wrap-lines': True}),
+ ('browser',
+ 'tall',
+ 0,
+ {}),
+ ('templates',
+ 'tall',
+ 0,
+ {})],
+ 'primary_view_state': {'area': 'wide',
+ 'constraint': None,
+ 'current_pages': [0],
+ 'notebook_display': 'hidden',
+ 'notebook_percent': 0.31374606505771252,
+ 'override_title': None,
+ 'pagelist': [],
+ 'primary_view_state': {'editor_states': {'bookmarks': ([(loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/dispatcher.py'),
+ {'attrib-starts': [('Dispatcher',
+ 82),
+ ('Dispatcher._perform_call',
+ 224)],
+ 'first-line': 216,
+ 'folded-linenos': [],
+ 'sel-line': 253,
+ 'sel-line-start': 9128,
+ 'selection_end': 9128,
+ 'selection_start': 9128},
+ 1273079029.1965921),
+ (loc('tgext/xmlrpc/test/test_controller.py'),
+ {'attrib-starts': [('TestXmlRpcController',
+ 34),
+ ('TestXmlRpcController.test_xmlrpc_correct_argco'\
+ 'unt',
+ 50)],
+ 'first-line': 15,
+ 'folded-linenos': [],
+ 'sel-line': 51,
+ 'sel-line-start': 1829,
+ 'selection_end': 1893,
+ 'selection_start': 1893},
+ 1273079040.2347009),
+ (loc('tgext/xmlrpc/test/controllers/root.py'),
+ {'attrib-starts': [('TestRpcController',
+ 6)],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'sel-line': 7,
+ 'sel-line-start': 252,
+ 'selection_end': 267,
+ 'selection_start': 267},
+ 1273079042.9675),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 95,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664},
+ 1273079067.7241671),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 97,
+ 'folded-linenos': [],
+ 'sel-line': 76,
+ 'sel-line-start': 2761,
+ 'selection_end': 2793,
+ 'selection_start': 2793},
+ 1273079067.8914709),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/dispatcher.py'),
+ {'attrib-starts': [('Dispatcher',
+ 82),
+ ('Dispatcher._perform_call',
+ 224)],
+ 'first-line': 216,
+ 'folded-linenos': [],
+ 'sel-line': 253,
+ 'sel-line-start': 9128,
+ 'selection_end': 9149,
+ 'selection_start': 9149},
+ 1273079083.7829411),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 71,
+ 'folded-linenos': [],
+ 'sel-line': 76,
+ 'sel-line-start': 2761,
+ 'selection_end': 2761,
+ 'selection_start': 2761},
+ 1273079094.317286),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 85,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664},
+ 1273079107.9806631),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._perform_call',
+ 63)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 63,
+ 'sel-line-start': 2227,
+ 'selection_end': 2243,
+ 'selection_start': 2243},
+ 1273079554.5684149),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 71,
+ 'folded-linenos': [],
+ 'sel-line': 76,
+ 'sel-line-start': 2761,
+ 'selection_end': 2761,
+ 'selection_start': 2761},
+ 1273079567.9736581),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 85,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664},
+ 1273079576.37041),
+ (loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ {'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 85,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664},
+ 1273079576.5131991),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 37,
+ 'sel-line-start': 1047,
+ 'selection_end': 1051,
+ 'selection_start': 1051},
+ 1273079616.281729),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 38,
+ 'sel-line-start': 1047,
+ 'selection_end': 1083,
+ 'selection_start': 1083},
+ 1273079656.9501231),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1903,
+ 'selection_start': 1903},
+ 1273079708.5916231),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1905,
+ 'selection_start': 1905},
+ 1273080558.5366011),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1913,
+ 'selection_start': 1913},
+ 1273080558.728199),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1914,
+ 'selection_start': 1914},
+ 1273080558.89642),
+ (loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1918,
+ 'selection_start': 1918},
+ 1273080559.064178),
+ [loc('tgext/xmlrpc/controllers/__init__.py'),
+ {'attrib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1918,
+ 'selection_start': 1918},
+ 1273080559.223218]],
+ 19),
+ 'current-loc': loc('tgext/xmlrpc/controllers/__init__.py'),
+ 'editor-states': {loc('tgext/xmlrpc/controllers/__init__.py'): {'att'\
+ 'rib-starts': [('XmlRpcController',
+ 30),
+ ('XmlRpcController._dispatch',
+ 35)],
+ 'first-line': 24,
+ 'folded-linenos': [],
+ 'sel-line': 56,
+ 'sel-line-start': 1885,
+ 'selection_end': 1930,
+ 'selection_start': 1930},
+ loc('tgext/xmlrpc/test/controllers/root.py'): {'at'\
+ 'trib-starts': [('TestRpcController',
+ 6)],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'sel-line': 7,
+ 'sel-line-start': 252,
+ 'selection_end': 267,
+ 'selection_start': 267},
+ loc('tgext/xmlrpc/test/test_controller.py'): {'att'\
+ 'rib-starts': [('TestXmlRpcController',
+ 34),
+ ('TestXmlRpcController.test_xmlrpc_correct_argcount',
+ 50)],
+ 'first-line': 15,
+ 'folded-linenos': [],
+ 'sel-line': 51,
+ 'sel-line-start': 1829,
+ 'selection_end': 1893,
+ 'selection_start': 1893},
+ loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'): {''\
+ 'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 85,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664}},
+ 'has-focus': True},
+ 'open_files': [u'tgext/xmlrpc/test/test_controller.py',
+ u'tgext/xmlrpc/test/controllers/root.py',
+ u'tgext/xmlrpc/controllers/__init__.py']},
+ 'split_percents': {0: 0.33735909822866345},
+ 'splits': 1,
+ 'tab_location': 'top',
+ 'user_data': {}},
+ 'split_percents': {0: 0.5},
+ 'splits': 2,
+ 'tab_location': 'left',
+ 'user_data': {}},
+ 'window-alloc': (0,
+ 38,
+ 1278,
+ 984)},
+ {'name': 'r61uSOxxIZqdKdtpvq8HyM8mq6EBN7NY',
+ 'size-state': '',
+ 'type': 'panel-wide',
+ 'view': {'area': 'window-wide',
+ 'constraint': None,
+ 'current_pages': [5,
+ 2],
+ 'override_title': None,
+ 'pagelist': [('bookmarks',
+ 'window-wide',
+ 1,
+ {'tree-state': []}),
+ ('debug-breakpoints',
+ 'window-wide',
+ 0,
+ {'tree-state': []}),
+ ('debug-io',
+ 'window-wide',
+ 1,
+ {'attrib-starts': [],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'history': {},
+ 'sel-line': 74,
+ 'sel-line-start': 22802,
+ 'selection_end': 22817,
+ 'selection_start': 22817}),
+ ('debug-probe',
+ 'window-wide',
+ 2,
+ {'attrib-starts': [],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'history': {u'file:/home/mpedersen/src/storageweb/storageweb/cmdline/datamonitor.py': [""\
+ "cfg.get('datamonitor.daemonize')\n",
+ 'from paste.deploy import converters\n',
+ 'converters.asbool\n',
+ 'help(converters.asbool)\n',
+ 'daemonize\n'],
+ u'file:/home/mpedersen/src/vbModBot/vbmodbot': ['page\n',
+ 'url\n',
+ "page.read().split('\\n')\n",
+ 'page.read()\n',
+ "f=open('/home/marvin/test.html', 'w')\n",
+ "f=open('/home/mpedersen/test.html', 'w')\n",
+ 'f.write(page.read())\n',
+ 'f.close()\n'],
+ u'file:/home/mpedersen/venvs/storageweb/bin/paster': ["filter(lambda"\
+ " x: 'value' in x, kw.keys()\n",
+ ')\n',
+ 'quota\n',
+ 'from tg import request\n',
+ 'request.identity\n',
+ 'request.identity is None\n',
+ "kw['sys_type']\n",
+ 'request.keys()\n',
+ "request['environ']\n",
+ 'request\n',
+ 'dir(request)\n',
+ 'request.environ\n'],
+ u'file:/usr/lib/wingide3.2/src/testing/runners/run_nosetests_xml.py': [''\
+ 'self.addit\n',
+ "getattr(self, 'addit')\n",
+ "type(getattr(self, 'addit'))\n",
+ 'self.decoration\n',
+ 'self.xmlrpc\n',
+ 'self\n']},
+ 'sel-line': 28,
+ 'sel-line-start': 1082,
+ 'selection_end': 1086,
+ 'selection_start': 1086}),
+ ('debug-exceptions',
+ 'window-wide',
+ 0,
+ {}),
+ ('debug-modules',
+ 'window-wide',
+ 1,
+ {}),
+ ('python-shell',
+ 'window-wide',
+ 2,
+ {'attrib-starts': [],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'history': {None: ['import time\n',
+ 'time.sleep(5)\n',
+ 'from storageweb import model\n',
+ 'from storageweb.controllers.quotas import QuotasController\n',
+ 'import datetime\n',
+ 'm=datetime.timedelta(mins=15)\n',
+ 'm=datetime.timedelta(minutess=15)\n',
+ 'm=datetime.timedelta(minutes=15)\n']},
+ 'sel-line': 3,
+ 'sel-line-start': 133,
+ 'selection_end': 137,
+ 'selection_start': 137}),
+ ('interactive-search',
+ 'window-wide',
+ 0,
+ {'fScope': {'fFileSetName': u'All Source Files',
+ 'fLocation': None,
+ 'fRecursive': True,
+ 'fType': 'project-files'},
+ 'fSearchSpec': {'fEndPos': None,
+ 'fIncludeLinenos': True,
+ 'fInterpretBackslashes': False,
+ 'fMatchCase': False,
+ 'fOmitBinary': True,
+ 'fRegexFlags': 46,
+ 'fReplaceText': '',
+ 'fReverse': False,
+ 'fSearchText': '',
+ 'fStartPos': 0,
+ 'fStyle': 'text',
+ 'fWholeWords': False,
+ 'fWrap': True},
+ 'fUIOptions': {'fAutoBackground': True,
+ 'fFilePrefix': 'short-file',
+ 'fFindAfterReplace': True,
+ 'fInSelection': False,
+ 'fIncremental': True,
+ 'fReplaceOnDisk': False,
+ 'fShowFirstMatch': False,
+ 'fShowLineno': True,
+ 'fShowReplaceWidgets': False},
+ 'replace-entry-expanded': False,
+ 'search-entry-expanded': False}),
+ ('batch-search',
+ 'window-wide',
+ 0,
+ {'fScope': {'fFileSetName': u'All Source Files',
+ 'fLocation': None,
+ 'fRecursive': True,
+ 'fType': 'project-files'},
+ 'fSearchSpec': {'fEndPos': None,
+ 'fIncludeLinenos': True,
+ 'fInterpretBackslashes': False,
+ 'fMatchCase': False,
+ 'fOmitBinary': True,
+ 'fRegexFlags': 46,
+ 'fReplaceText': '',
+ 'fReverse': False,
+ 'fSearchText': '',
+ 'fStartPos': 0,
+ 'fStyle': 'text',
+ 'fWholeWords': False,
+ 'fWrap': True},
+ 'fUIOptions': {'fAutoBackground': True,
+ 'fFilePrefix': 'short-file',
+ 'fFindAfterReplace': True,
+ 'fInSelection': False,
+ 'fIncremental': True,
+ 'fReplaceOnDisk': False,
+ 'fShowFirstMatch': False,
+ 'fShowLineno': True,
+ 'fShowReplaceWidgets': False},
+ 'replace-entry-expanded': False,
+ 'search-entry-expanded': False}),
+ ('debug-data',
+ 'window-wide',
+ 0,
+ {}),
+ ('testing',
+ 'window-wide',
+ 0,
+ {'added-files': [loc('tgext/xmlrpc/test/test_controller.py')],
+ 'filter': '',
+ 'recent-filters': None}),
+ ('debug-watch',
+ 'window-wide',
+ 1,
+ {'node-states': [('eval',
+ 'request'),
+ ('eval',
+ 'mvals'),
+ ('eval',
+ 'method')],
+ 'tree-state': {'column-widths': [0.40536277602523657,
+ 0.59463722397476337],
+ 'expanded-nodes': [],
+ 'selected-nodes': [],
+ 'top-node': (0,)}})],
+ 'split_percents': {0: 0.5},
+ 'splits': 2,
+ 'tab_location': 'top',
+ 'user_data': {'origin-window': 'V1nsKZThKBmevtyytlHtrJqtAZ'\
+ '5cIgZH'}},
+ 'window-alloc': (-1280,
+ -986,
+ 1278,
+ 984)}]}
+guimgr.recent-documents = [loc('tgext/xmlrpc/controllers/__init__.py'),
+ loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'),
+ loc('tgext/xmlrpc/test/controllers/root.py'),
+ loc('tgext/xmlrpc/test/test_controller.py')]
+guimgr.visual-state = {loc('tgext/xmlrpc/__init__.py'): {'attrib-starts': [],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'sel-line': 2,
+ 'sel-line-start': 82,
+ 'selection_end': 142,
+ 'selection_start': 142},
+ loc('tgext/xmlrpc/test/root.py'): {'attrib-starts': [],
+ 'first-line': 0,
+ 'folded-linenos': [],
+ 'sel-line': 0,
+ 'sel-line-start': 0,
+ 'selection_end': 0,
+ 'selection_start': 0},
+ loc('../../venvs/tg21b2_26/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg/pylons/legacy.py'): {''\
+ 'attrib-starts': [('load_h',
+ 106)],
+ 'first-line': 87,
+ 'folded-linenos': [],
+ 'sel-line': 112,
+ 'sel-line-start': 3458,
+ 'selection_end': 3458,
+ 'selection_start': 3458},
+ loc('../../venvs/tg21b2_26/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/configuration.py'): {''\
+ 'attrib-starts': [('AppConfig',
+ 97),
+ ('AppConfig.setup_jinja_renderer',
+ 417)],
+ 'first-line': 393,
+ 'folded-linenos': [],
+ 'sel-line': 419,
+ 'sel-line-start': 16201,
+ 'selection_end': 16201,
+ 'selection_start': 16201},
+ loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/decoratedcontroller.py'): {''\
+ 'attrib-starts': [('DecoratedController',
+ 34),
+ ('DecoratedController._call',
+ 53)],
+ 'first-line': 95,
+ 'folded-linenos': [],
+ 'sel-line': 122,
+ 'sel-line-start': 4664,
+ 'selection_end': 4664,
+ 'selection_start': 4664},
+ loc('../../venvs/tgext.xmlrpc/lib/python2.6/site-packages/TurboGears2-2.1b2-py2.6.egg/tg/controllers/dispatcher.py'): {''\
+ 'attrib-starts': [('Dispatcher',
+ 82),
+ ('Dispatcher._perform_call',
+ 224)],
+ 'first-line': 216,
+ 'folded-linenos': [],
+ 'sel-line': 253,
+ 'sel-line-start': 9128,
+ 'selection_end': 9149,
+ 'selection_start': 9149},
+ loc('../../../../usr/lib/python2.6/xmlrpclib.py'): {''\
+ 'attrib-starts': [('ExpatParser',
+ 583),
+ ('ExpatParser.feed',
+ 599)],
+ 'first-line': 575,
+ 'folded-linenos': [],
+ 'sel-line': 600,
+ 'sel-line-start': 18999,
+ 'selection_end': 18999,
+ 'selection_start': 18999}}
+proj.env-vars = {None: ('default',
+ [''])}
+proj.home-dir = loc('.')
+proj.initial-dir = {None: ('custom',
+ '/home/mpedersen/src/tgext.xmlrpc/')}
+proj.pyexec = {None: ('custom',
+ '/home/mpedersen/venvs/tgext.xmlrpc/bin/python')}
View
29 tgext/xmlrpc/controllers/__init__.py
@@ -6,7 +6,7 @@
import xmlrpclib
import urllib
-from tg import request
+from tg import request, response, expose
from tg.controllers import TGController
class InvalidXmlRpcType(Exception):
@@ -20,9 +20,19 @@ def __init__(self, signatures, helpstr=""):
def __call__(self, func):
func.signatures = self.signatures
func.helpstr = self.helpstr
+ self.func = func
+ return self.wrap
+
+ def wrap(self, *p, **kw):
+ response.content_type="text/xml"
+ return xmlrpclib.dumps(self.func(*p, **kw))
# TODO: wrap func such that the content-type will always be set properly, and the xml dump will always happen automatically
class XmlRpcController(TGController):
+ @expose()
+ def index(self):
+ return "hello world"
+
def _dispatch(self, state, remainder, parms=None, method=None):
if remainder:
return self._dispatch_first_found_default_or_lookup(state, remainder)
@@ -41,10 +51,21 @@ def _dispatch(self, state, remainder, parms=None, method=None):
mvals = method.split('.')
if len(mvals) > 1:
subcon = getattr(self, mvals[0], None)
- if subcon and isinstance(subcon, XmlRpcController):
- return subcon._dispatch(state, remainder, parms, "".join(method[1:]))
+ if subcon:
+ if isinstance(subcon, XmlRpcController):
+ return subcon._dispatch(state, remainder, parms, "".join(method[1:]))
+ else:
+ return subcon._dispatch_controller(mvals[0], state.controller, state, mvals[1:])
+ else:
+ return self._dispatch_first_found_default_or_lookup(state, remainder)
else:
- method = getattr(self, mvals[0], None)
+ method = getattr(state.controller, mvals[0], None)
+ if method:
+ state.add_method(method, [])
+ return state
# TODO: Finish here. Need to set state/remainder properly to handle the existing method, or 404 if it doesn't exist/isn't exposed
return "goodbye cruel world"
+ def _perform_call(self, controller, params, remainder=None):
+ remainder = remainder or []
+ return controller(*remainder, **dict(params))
View
2 tgext/xmlrpc/test/test_controller.py
@@ -49,7 +49,7 @@ def test_xmlrpc_too_many_args(self):
else:
raise
def test_xmlrpc_correct_argcount(self):
- resp = self.app.post('/xmlrpc', xmlrpclib.dumps((1,2), 'tg.xmlrpc.addit'))
+ resp = self.app.post('/xmlrpc', xmlrpclib.dumps((1,2), 'addit'))
assert 'goodbye' in resp, resp
# tests to write:

0 comments on commit 8b39f5c

Please sign in to comment.