[entity,views/json] backout 353bbd17a8b6 (reopens #2559931)
Calling .complete() unconditionnally from the json encoder is unsafe
since on entity creation validation:
* an eid may have been drawn (hence even .has_eid() would not help)
while processing form data in the edit controller
* a ValidationError may have been raised and the entity-creating
transaction rollbacked
This leads to a crash on the return path from the validation to the
browser, where the json_dumps((status, args, entity)) call will
stumble upon the .complete() call which will fail because the entity
does not (any more) exist in the database.
from cubicweb.devtools.qunit import QUnitTestCase, unittest_main
from os import path as osp
class JScript(QUnitTestCase):
all_js_tests = (
("jstests/test_utils.js", (
"../../web/data/cubicweb.js",
"../../web/data/cubicweb.compat.js",
"../../web/data/cubicweb.python.js",
"jstests/utils.js",
),
),
("jstests/test_htmlhelpers.js", (
"../../web/data/cubicweb.js",
"../../web/data/cubicweb.compat.js",
"../../web/data/cubicweb.python.js",
"../../web/data/cubicweb.htmlhelpers.js",
),
),
("jstests/test_ajax.js", (
"../../web/data/cubicweb.python.js",
"../../web/data/cubicweb.js",
"../../web/data/cubicweb.compat.js",
"../../web/data/cubicweb.htmlhelpers.js",
"../../web/data/cubicweb.ajax.js",
), (
"jstests/ajax_url0.html",
"jstests/ajax_url1.html",
"jstests/ajax_url2.html",
"jstests/ajaxresult.json",
),
),
)
if __name__ == '__main__':
unittest_main()