← Back to team overview

openerp-dev-web team mailing list archive

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

 

You have been assigned a bug task for a public bug by DBR (OpenERP) (dbr-openerp):

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)

** Affects: openobject-client-web
     Importance: Low
     Assignee: OpenERP SA's Web Client R&D (openerp-dev-web)
         Status: Confirmed

-- 
[trunk] controllers form, bad contidion on save
https://bugs.launchpad.net/bugs/668465
You received this bug notification because you are a member of OpenERP SA's Web Client R&D, which is a bug assignee.