If you want to do it with a decorator, you can use @lazy_cache (see 
http://web2py.com/books/default/chapter/29/04/the-core#Accessing-the-API-from-Python-modules).
 
Otherwise, you can just use current.cache to store the return value of the 
function.

Anthony

On Sunday, January 5, 2014 8:13:59 AM UTC-5, Alex wrote:
>
> I've quite a lot model files (~40), so far the performance is still very 
> good. Since it is not very optimal and also not good in the long run I'm 
> now thinking of rewriting the code into modules.
>
> I'm struggling a little bit to rewrite the functions. E.g. consider 
> following function in a model:
> @cache('room.count', 3600, cache.ram)
> def getRoomCount():
>   return db(db.room.id > 0).count()
>
>
> how do I write this in a module so I can access cache?
>
> thanks,
> Alex
>
> Am Mittwoch, 1. Januar 2014 03:01:18 UTC+1 schrieb Wei Li:
>>
>> Thank you all for the replies! 
>>
>>
>> On Tue, Dec 31, 2013 at 1:10 PM, Phil Hughes <nic...@gmail.com> wrote:
>>
>>> Add an argument to the function: foo(bar):  Only functions with no 
>>> arguments can be called from the outside world.
>>>
>>>
>>> On Tuesday, December 31, 2013 3:57:56 AM UTC-6, Wei Li wrote:
>>>>
>>>> Hi,
>>>>
>>>> This could be a silly question:) . I am going to build up some 
>>>> application logic. So I will create a few class and functions. Looks like 
>>>> it's not very good to put these code under controllers. Although from the 
>>>> manual, it says controller folder is for application logic and workflow. 
>>>> See if I have a function
>>>>
>>>> def foo():
>>>>      return <SOME_SENSITIVE_INFORMATION>
>>>>
>>>>
>>>> I don't want to put this function in controllers/default.py because 
>>>> people can see the return value of foo() through 
>>>> http://myapp/default/foo which is not expected. I just want foo() to 
>>>> be a normal function instead of a controller function.
>>>>
>>>> So my question is where is the best place to put my own application 
>>>> logical codes indeed? There are three places that I can put python codes 
>>>> into:
>>>>
>>>>
>>>>    - *models* describe a representation of the data as database tables 
>>>>    and relations between tables.
>>>>    - *controllers* describe the application logic and workflow.
>>>>    - *modules *are other optional Python modules.
>>>>    
>>>>
>>>> Looks like to me *modules *is the best place. But the new problem is 
>>>> the global objects and classes are not visible to files in modules unlike 
>>>> files in models/controllers. I am not sure which packages need to be 
>>>> imported. It will be convenient if *modules *folder can be treated 
>>>> same as models/controllers?
>>>>
>>>> Any suggestion is appreciated.
>>>>
>>>> Thanks,
>>>> Wei
>>>>
>>> -- 
>>> 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 a topic in the 
>>> Google Groups "web2py-users" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/web2py/EqplHGT6SHI/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> web2py+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to