← Back to team overview

openerp-community team mailing list archive

Re: Reclaiming context

 

Hello,

+1 for Pedro proposition

As the function is decorated with "@tools.ormcache(skiparg=2)" it should
not have a too big negative impact on performance.
We may initialise an empty context if it really causes performance issues.

context_get may also be optimized to use a read instead of a browse.


Regards

Nicolas



2014-08-28 18:45 GMT+02:00 Pedro Manuel Baeza Romero <pedro.baeza@xxxxxxxxx>
:

> It looks good to me also, but one detail, put:
>
>
> *if context is None:    context = self.pool['res.users'].context_get(cr,
> uid)*
>
> To not make the query when context dictionary is already {} (maybe you can
> be interested in not propagating user context and you pass explicitly
> context={} in your call to the function).
>
> Regards.
>
>
> 2014-08-28 18:35 GMT+02:00 Raphael Valyi <rvalyi@xxxxxxxxx>:
>
> Hello Sandy,
>>
>> I think this is a great idea.
>>
>> It has been debated a few times if it was a bug that the workflow engine
>> doesn't propagate the context. Well in my opinion that's valid to say the
>> context is a compound object made by the user settings, overridden
>> eventually by the parameters of the HTTP request scope. These last
>> parameters stand for user interface details like from which menu you are
>> trying to act on a record or what are the currently selected records. It's
>> normal that the impact of these parameters is limited and it's normal that
>> you can also imagine load the persisted data right from the database
>> instead and still get the right business logic.
>> So in a word, even in the workflow which is supposed to be able to act
>> right on persisted data, it's okay to loose the track of the HTTP request
>> params but as you mentioned this is not a reason to loose the context
>> related to the user settings (language, timezone...)
>>
>> I personally like your proposal for v7. As for v8 the similar logic
>> should happen in the @api decorator providing the context on self and I am
>> not sure, but may be it's already implemented like that.
>>
>> Thanks for the proposition!
>>
>> --
>> Raphaël Valyi
>> Founder and consultant
>> http://twitter.com/rvalyi <http://twitter.com/#!/rvalyi>
>> +55 21 3942-2434
>> www.akretion.com
>>
>>
>>
>> On Thu, Aug 28, 2014 at 1:04 PM, Sandy Carter <
>> sandy.carter@xxxxxxxxxxxxxxxxxxxx> wrote:
>>
>>> Hello community,
>>>
>>>
>>> While debugging yet another translation error in Odoo 7.0, I came up
>>> with a simple way to reclaim lost contexts in functions.
>>>
>>> The bug I was fighting is one where workflow actions do not pass any
>>> contexts. This bug manifests as chattr messages in english when using
>>> the workflows.
>>>
>>> As I don't have the time to fix it in the server, nor am I ready to jump
>>> through the hoops to get that fix integreated in the Odoo, I found a way
>>> to fix this bug in my module.
>>>
>>> The way I countered the bug in my module is in the write function where
>>> I would usually start with
>>>
>>>     if context is None:
>>>         context = {}
>>>
>>> or
>>>
>>>     context = context or {}
>>>
>>> In this case it was None since the workflow mechanism would not have a
>>> context. I saw that since I have the user id, I can still get the
>>> context for this user.
>>>
>>> I replaced the familiar context check with:
>>>
>>>     context = context or self.pool['res.users'].context_get(cr, uid)
>>>
>>> I find this simple enough. The line is under 80 characters and it can
>>> replace the usual context check.
>>>
>>> Furthermore it assures that everything done within this function and its
>>> parent functions have at least the language in the context, something I
>>> have been struggling with a lot lately.
>>>
>>>
>>> What does the community think of this as a possible standard for
>>> modules, replacing the usual if context is None lines.
>>>
>>> Are there possible drawbacks to using this line?
>>>
>>> Thank you for you input!
>>>
>>> --
>>> Sandy Carter
>>> Consultant en logiciel libre
>>> Développeur OpenERP
>>> Savoir-faire Linux Inc.
>>> 514-276-5468 poste 142
>>> http://www.savoirfairelinux.com
>>> sandy.carter@xxxxxxxxxxxxxxxxxxxx
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openerp-community
>>> Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openerp-community
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openerp-community
>> Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openerp-community
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~openerp-community
> Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openerp-community
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Nicolas Bessi
Senior ERP consultant
Business Solution technical manager

Camptocamp SA
PSE A
CH-1015 Lausanne

http://openerp.camptocamp.com

Direct:   +41 21 619 10 26
Office:   +41 21 619 10 10

References