c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #02959
[Bug 525808] Re: Default values should be immutable
** Changed in: openobject-addons/extra-trunk
Importance: Undecided => Low
** Changed in: openobject-client
Importance: Undecided => Low
** Changed in: openobject-server/trunk
Importance: Undecided => Low
** Changed in: openobject-addons/trunk
Importance: Undecided => Low
** Changed in: openobject-addons/trunk
Assignee: (unassigned) => OpenERP R&D Addons Team 2 (openerp-dev-addons2)
** Changed in: openobject-client
Assignee: (unassigned) => OpenERP sa GTK client R&D (openerp-dev-gtk)
** Changed in: openobject-server/trunk
Assignee: (unassigned) => Olivier Dony (OpenERP) (odo)
--
Default values should be immutable
https://bugs.launchpad.net/bugs/525808
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
Status in OpenObject Addons Modules: Confirmed
Status in OpenObject Addons extra-trunk series: New
Status in OpenObject Addons trunk series: Confirmed
Status in OpenObject GTK Client: Confirmed
Status in OpenObject Server: Confirmed
Status in OpenObject Server trunk series: Confirmed
Bug description:
Often in the code base we have:
def foo(...., context={},....):
....
As explained in comment #1, this should be changed to
def foo(...., context=None,....):
# you should add this test only if the context is actually used
if context is None:
context={}
....
(This bug originally proposed the other way round hence the "nope" in comment #1.)
(xmo) Complements of information:
* The test should be `context is None` rather than `not context`: the caller could provide an empty dict argument {} and expect to have data in it after the call, if a test is done using `not context` an empty dict will match and the function will be creating a brand new context.
* The test should *only ever* performed when the current function fetches data from the context. If you don't do anything with the context but forward it to other functions and methods (e.g. read() or create()), no need to test for anything.