c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #08453
[Bug 668465] Re: [trunk] controllers form, bad contidion on save
Doh !!!
After this morning test i get a bug with this patch. If we are in
EDITABLE mode we NEED a save (for wizard).
How to see the problem:
Create a wizard with 1 fields(field1), create 1 buttons.
write 'first press' in field, click button (print in debug
self.datas[ids[0]]['field1'])
result, print 'first press'
write 'second press' in field, click button (print in debug
self.datas[ids[0]]['field1'])
result, print 'first press'
Like you see, data not saved when we do second click, because now data have a id
(if (not(params.button) and params.editable) or not params.id:)
not True and True or not True
So never save after the first use
So,
if (not(params.button) and params.editable) or not params.id:
Change by
if params.editable
(always save in editable mode)
** Changed in: openobject-client-web
Status: Fix Released => New
--
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/668465
Title:
[trunk] controllers form, bad contidion on save
Status in OpenObject Web Client:
New
Bug description:
If you have a button, link with a action type url, when you press on button in NOT edit mode, original code launch a write,
Comment in code say "bypass save, for button action in non-editable view" but the condition is bad, and 2 else do same thing.
addons/openerp/controllers/form.py Class Form, Function save
Original code
# bypass save, for button action in non-editable view
if not (params.button and params.editable and params.id):
proxy = rpc.RPCProxy(params.model)
if not params.id:
ctx = dict((params.context or {}), **rpc.session.context)
id = proxy.create(data, ctx)
params.ids = (params.ids or []) + [int(id)]
params.id = int(id)
params.count += 1
else:
ctx = utils.context_with_concurrency_info(params.context, params.concurrency_info)
id = proxy.write([params.id], data, ctx)
elif params.button and params.editable and params.id:
proxy = rpc.RPCProxy(params.model)
ctx = utils.context_with_concurrency_info(params.context, params.concurrency_info)
id = proxy.write([params.id], data, ctx)
Fix: The fix do create if button, editable and no id in param, else do a write if button, editable and id in param
if params.button and params.editable and not params.id:
proxy = rpc.RPCProxy(params.model)
ctx = dict((params.context or {}), **rpc.session.context)
id = proxy.create(data, ctx)
params.ids = (params.ids or []) + [int(id)]
params.id = int(id)
params.count += 1
elif params.button and params.editable and params.id:
proxy = rpc.RPCProxy(params.model)
ctx = utils.context_with_concurrency_info(params.context, params.concurrency_info)
id = proxy.write([params.id], data, ctx)
References