*work in web2py*
def json_row_as_list():
if not request.env.request_method == 'GET': raise HTTP(403)
import json
table_name = request.args(0)
id = request.args(1)
if id.isdigit() and int(id) > 0:
query = (db[table_name]['id'] == id)
else:
query = (db[table_name]['id'] > 0)
rows = db(query).select()
json_list = json.dumps(rows.as_list(), default = str, sort_keys = True)
return dict(data = XML(json_list) )
*in web3py return an error when using XML() helper, but when not using
XML() helper it works fine in web3py*
*code*
from yatl.helpers import XML
@action('api/json_row_as_list/<table_name>/<id>', method = 'GET')
@action.uses(db)
def json_row_as_list(table_name, id):
import json
if id.isdigit() and int(id) > 0:
query = (db[table_name]['id'] == id)
else:
query = (db[table_name]['id'] > 0)
row = db(query).select()
json_list = json.dumps(row.as_list(), default = str, sort_keys = True)
return dict(data = XML(json_list) )
*result*
ERROR:root:Traceback (most recent call last):
File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 416, in
wrapper
ret = dumps(ret)
File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 157, in
dumps
return json.dumps(obj, default=objectify, sort_keys=sort_keys, indent=
indent)
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/__init__.py",
line 238, in dumps
**kw).encode(obj)
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py",
line 201, in encode
chunks = list(chunks)
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py",
line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py",
line 405, in _iterencode_dict
yield from chunks
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py",
line 438, in _iterencode
o = _default(o)
File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 146, in
objectify
return list(obj)
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py"
, line 226, in __len__
return len(str(self))
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py"
, line 226, in __len__
return len(str(self))
File
"/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py"
, line 226, in __len__
return len(str(self))
[Previous line repeated 482 more times]
RecursionError: maximum recursion depth exceeded while calling a Python
object
*code*
from yatl.helpers import XML
@action('api/json_row_as_list/<table_name>/<id>', method = 'GET')
@action.uses(db)
def json_row_as_list(table_name, id):
import json
if id.isdigit() and int(id) > 0:
query = (db[table_name]['id'] == id)
else:
query = (db[table_name]['id'] > 0)
row = db(query).select()
json_list = json.dumps(row.as_list(), default = str, sort_keys = True)
return XML(json_list)
*result*
<h1>Critical error while processing request:
/test/api/json_row_as_list/bank/1</h1>ERROR:tornado.access:500 GET
/test/api/json_row_as_list/bank/1 (127.0.0.1) 2.65ms
*execute in terminal*
curl -X GET -i http://localhost:8000/test/api/json_row_as_list/bank/1
best regards,
stifan
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/d7f52f3b-459f-4168-9017-1267086373c8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.