You're a fountain of ideas! I missed that one in the book.
I wonder if this would work. Off to go try it...
def lazy_cache_action(self, time_expire=DEFAULT_TIME_EXPIRE,
cache_model=None,
prefix=None, session=False, vars=True, lang=True,
user_agent=False, public=True, valid_statuses=None,
quick=None):
def decorator(f, time_expire, cache_model, prefix, session, vars, lang,
user_agent, public, valid_statuses, quick):
def g(*c, **d):
from gluon import current
return current.cache(f, time_expire, cache_model, prefix,
session, vars,
lang, user_agent, public, valid_statuses, quick)(f)(*c, **d)
g.__name__ = f.__name__
return g
return decorator
On Tuesday, July 31, 2018 at 11:25:10 AM UTC-7, Anthony wrote:
>
> On Tuesday, July 31, 2018 at 1:57:46 AM UTC-4, Joe Barnhart wrote:
>>
>> I was wondering about this. I tried to search the group but didn't find
>> anything relevant. Took a look at the source code and it seemed like I
>> could use in a module which is called to produce a string of Javascript on
>> demand of an Ajax routine.
>>
>> Beforehand, I save the global "cache" var in my "current" object. Then I
>> rename my method "content" to "__content__", and last I do this:
>>
>> def content(self):
>> c = current.cache
>> return c.action(cache_model=c.disk,
>> quick="VP")(self.__content__)()
>>
>> Seems to work. Am I asking for trouble? Is there anything I should
>> watch for?
>>
>
> Seems reasonable. You could also create a custom decorator, similar to
> lazy_cache
> <https://github.com/web2py/web2py/blob/master/gluon/cache.py#L728-L746>
> (see the end of this section:
> http://web2py.com/books/default/chapter/29/04/the-core#Warning--Do-not-use-the-current-object-in-global-scope-in-a-module
> ).
>
> Anthony
>
--
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.