You can store request specific objects inside the request itself or
inside the tmpl_context object.
Writing controller instance properties can lead to race conditions.

Keep in mind that you already have the user_id always accessible
anyway, request.identity['user'].user_id should retrieve it inside
controllers.

On Mon, Sep 3, 2012 at 10:46 AM, ozwyzard <[email protected]> wrote:
> I am using TG 2.0.4.  Till now I used to save the user_id in the __before__
> method of a controller and use it later in an exposed method of the same
> controller.  During testing, I came across a scenario (race condition) where
> the self.user_id is not what I expected inside foo().  It seems that
> self.user_id is overwritten by request2 when I am processing request1 in
> parallel.  All along I thought that the values stored in the controller self
> variable are request specific.  I figure my understanding is wrong.   Can
> someone confirm!
>
> If I want to store request specific information to be used later in the
> processing, should I store it in the request object itself?  Or maybe create
> a req_context object and store all the needed information, and add the
> req_context object to the request.
>
> Any other suggestions welcome.
>
>
> Thanks
>
>    def __before__(self, *args, **kw):
>         tmpl_context.menu_items = self.menu_items
>         tmpl_context.title = title
>         identity = request.environ.get('repoze.who.identity')
>         self.user_id = identity['user'].user_id
>         self.user_name = identity['user'].user_name
>
> @expose()
> def foo(self):
>      # use self.user_id for some operation
>
> http://turbogears.org/2.0/docs/modules/tgcontroller.html
> __before__(*args, **kw)Override this method to define any action you would
> like taken before the controller code is executed. This is particularly
> useful for defining a Controller-wide specification (all methods) for things
> like: setting up variables/objects in the template context, restricting
> access, or other tasks which should be executed before the controller method
> is called.
>
> --
> You received this message because you are subscribed to the Google Groups
> "TurboGears" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/turbogears/-/5M8HCqCL0cEJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/turbogears?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to