Thanks Anthony,

I saw your web2py con talk at depaul and really appreciated your 
understanding of the inner workings.

Would best practice be to just import current then define db = current.db?

That works correctly as long as it is not a top level variable correct?

-Mark

On Monday, December 15, 2014 9:23:42 AM UTC-6, Anthony wrote:
>
> You can also just import current in the module and then refer to it 
> directly within your function (i.e., no need to pass current as an argument 
> to the function).
>
> Anthony
>
> On Sunday, December 14, 2014 11:07:48 PM UTC-5, Mark Graves wrote:
>>
>> Right,  I knew it looked too easy.
>>
>> Thanks, Anthony!
>>
>> Would it be viable to say in models (or controllers):
>>
>> from gluon import current
>> current.db = db
>>
>> Then in modules:
>>
>> def my_function(current):
>>      db = current.db
>>      session = current.session
>>      request = current.request
>>      response = current.response
>>
>> Then perhaps futher mimic locals with a decorator by returning them to 
>> the function and/or changing the signature? (Or would that run into the 
>> same threading problem?
>>
>> Trying to avoid repeating myself...
>>
>>
>>
>>
>>
>> On Sunday, December 14, 2014 8:32:55 PM UTC-6, Anthony wrote:
>>>
>>> No, the book warns to avoid that approach: 
>>> http://www.web2py.com/books/default/chapter/29/04/the-core#Accessing-the-API-from-Python-modules
>>>
>>> You cannot assign the thread local object to a top-level variable in the 
>>> module, as it will only be assigned once upon first import.
>>>
>>> Anthony
>>>
>>> On Sunday, December 14, 2014 7:32:29 PM UTC-5, Mark Graves wrote:
>>>>
>>>> Hey everyone,
>>>>
>>>> I could use a sanity check here from the community.
>>>>
>>>> In a controller I get a record, then, I want to pass do some database 
>>>> calls from a module.
>>>>
>>>> It seems that the least code I could write would be in models:
>>>>
>>>> from gluon import current
>>>> current.db = db
>>>>
>>>> Then in the module at the top
>>>>
>>>> from gluon import current
>>>> db = current.db
>>>>
>>>> The method I was using was passing the objects in directly to the 
>>>> function defined in the module, but that was overly repetitive.  No 
>>>> classes, just functions.
>>>>
>>>> Can anyone see where I would run into problems? Is this thread safe?
>>>>
>>>> Would it be better to instantiate a class with the handler similar to 
>>>> what I've seen elsewhere regarding model-less apps?
>>>>
>>>> Thanks in advance!
>>>>
>>>> -Mark
>>>>
>>>>
>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to