Ah, well.  It seems a bit beyond me.  I think it's failing because I'm 
caching a bound instance method (i.e. has "self").  I get "wrapped+_f takes 
no arguments, 1 given)".

def lazy_cache_action(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=time_expire, cache_model=cache_model, 
prefix=prefix, 
            session=session, vars=vars, lang=lang, user_agent=user_agent, 
public=public, 
            valid_statuses=valid_statuses, quick=quick):
        def g(*c, **d):
            from gluon import current
            return current.cache.action(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 Wednesday, August 1, 2018 at 12:50:12 AM UTC-7, Joe Barnhart wrote:
>
> Oops, I meant of course;
>
> current.cache.action
>
> instead of
>
> current.cache
>
>
>
>
> On Wednesday, August 1, 2018 at 12:48:00 AM UTC-7, Joe Barnhart wrote:
>>
>> 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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to