← Back to team overview

openerp-community team mailing list archive

Re: Reclaiming context

 

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
>
>

Follow ups

References