Lazy is good. You can turn it to your advantage with this:

import functools
def my_awesome_decorator(path=None, method=['GET','POST'], 
requires_login=False):
    def wrapper(func, path=path, method=method, 
requires_login=requires_login):
        path = path or func.__name__
    template = func.__name__+'.html'
        fixtures = [template, db, session, auth]
        if requires_login: fixtures.append(auth.user)
        @action(path, method=method)
        @action.uses(*fixtures)
        @functools.wraps(func)
        def tmp(*a, **b):
            d = func(*a, **b)
            if isinstance(d, dict):
                 d['session'] = dict(session.local.data)
                 if requires_login: d['user'] = auth.get_user()
            return d
        return tmp
    return wrapper

@my_awesome_decorator('test')
def index():
    return {}



On Tuesday, 21 January 2020 05:39:51 UTC-8, Jim S wrote:
>
> Thanks Massimo.  I was hoping to avoid having to pass something to the 
> view every time.  I'm lazy, right?  I'm assuming that this is the same if I 
> used response instead of session.  In web2py you didn't have to pass 
> response to the view, it was automatically available.
>
> -Jim
>
> On Tue, Jan 21, 2020 at 1:00 AM Massimo Di Pierro <
> [email protected]> wrote:
>
>> I would recommend you do something like this
>>
>> @action('index')
>> @action.uses('index.html', session)
>> def index():
>>     ...
>>     return dict(session=dict(session))
>>
>> This will pass a shallow copy of the session to the view. You will be 
>> free to read from the session in index.html but you should not write it.
>>
>>
>>
>> On Friday, 17 January 2020 12:34:43 UTC-8, Jim S wrote:
>>>
>>> I should re-state my problem.  With web2py I wasn't using session, but 
>>> response.  I added a couple of attributes that always got added to the 
>>> response object.  Not sure how to mimic that in py4web, or would I even 
>>> want to?
>>>
>>> -Jim
>>>
>>> On Fri, Jan 17, 2020 at 11:16 AM Jim S <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> I'm trying to pass a session variable to layout.html but it tells me 
>>>> that session is not available:
>>>>
>>>> NameError: name 'session' is not defined
>>>>
>>>> I use this technique in web2py to send a page title to layout.html 
>>>> without having to pass it in the returned dict from the controller.
>>>>
>>>> Obviously I'm being lazy using this technique.  Will this work with 
>>>> py4web or is it best for me to pass in explicitly in each controller?
>>>>
>>>> -Jim
>>>>
>>>> -- 
>>>> 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/cgg6M7B_wkI/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/web2py/8848279b-e889-4b9b-90a6-664813a47b89%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/web2py/8848279b-e889-4b9b-90a6-664813a47b89%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> 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/cgg6M7B_wkI/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/web2py/06f7bcfe-4a9f-42a0-a5ec-a686edf6513e%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/web2py/06f7bcfe-4a9f-42a0-a5ec-a686edf6513e%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/db45f1c5-81de-44ce-b75e-fea9116920b9%40googlegroups.com.

Reply via email to