misc/migration/3.14.4_Any.py
author Aurelien Campeas <aurelien.campeas@logilab.fr>
Fri, 18 Jan 2013 17:37:35 +0100
branchstable
changeset 8657 5ab6ec83d5ba
parent 8375 7d8979176bc0
child 9450 af4b93bc38a5
permissions -rw-r--r--
[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 yams import schema2sql as y2sql

dbhelper = repo.system_source.dbhelper
rdefdef = schema['CWSource'].rdef('name')
attrtype = y2sql.type_from_constraints(dbhelper, rdefdef.object, rdefdef.constraints).split()[0]

cursor = session.cnxset['system']
sql('UPDATE entities SET asource = source WHERE asource is NULL')
dbhelper.change_col_type(cursor, 'entities', 'asource', attrtype, False)
dbhelper.change_col_type(cursor, 'entities', 'source', attrtype, False)
dbhelper.change_col_type(cursor, 'deleted_entities', 'source', attrtype, False)