← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 668465] Re: [trunk] controllers form, bad contidion on save

 

i see the change, that look good, i will test it today and give you a
feedback after

-- 
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:
  Fix Released

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