Thanks for the info. Have tried option 2 (which I also like the most) but
problem I am having is as soon as I try to include a view i.e generic.html in
the action the info is not being added to the output.
So
from py4web.core import Fixture
class InfoInjector(Fixture):
def transform(self, output):
if isinstance(output, dict) and 'info' not in output:
output['info'] = get_info(auth)
return output
@action('index')
@action.uses(auth, InfoInjector())
def index():
message=’Hello there’
return dict(message=message ) # info is automatically injected I see
the injected info + message
Output:-
{
"info": {
"info": {
"email": "[email protected]",
"first_name": "John",
"id": 1,
"last_name": "Bannister",
"username": "jab"
}
},
"message": "Hello there"
}
@action('index')
@action.uses(auth, InfoInjector())
@action.uses(‘generic.html’)
def index():
messate=”Hello there”
return dict(message=message) # info is automatically injected
InfoInjector() is not called !!!!! and no info injected
From: [email protected] [mailto:[email protected]] On Behalf Of
Massimo Di Pierro
Sent: 01 October 2019 05:43
To: web2py-users
Subject: Re: [web2py] Re: py4web Auth
I understand what you are asking. Something like the ability of web2py to
define stuff in a models file and it would be available to the views. Problem
with that design is the overhead. With py4web we are trying to be more
efficient.
There are many ways to do this:
1) create a function that returns the info you need and pass this function to
the layout. For example:
def get_info(auth):
return {... whatever you need ...}
@action('index')
@action.uses(auth)
def index():
return dict(info=get_info(auth))
2) create a new fixture that injects data in the template
from py4web.core import Fixture
class InfoInjector(Fixture)
def transform(self, output):
if isinstance(output, dict) and 'info' not in output:
output['info'] = get_info(auth)
return output
@action('index')
@action.uses(auth, InfoInjector())
def index():
return dict() # info is automatically injected
3) add logic directly to the template as in:
[[from app.thisapp.common import get_info, auth]][[info = get_info(auth)]]
... [[=info]]
I like solution 2 best
On Monday, 30 September 2019 09:50:07 UTC-7, John Bannister wrote:
Hi Massimo,
Not quite what I am after. Scenario which I have is that I have a number of
different models each has a number of different atctions. I have a menu defined
in layout.html which is included in each view. I would like to display the
logged in user name in the menu (so something like Welcome John) if the user is
logged in or LOGIN if they are not.
I understand that I can use auth.get_user in the action to access any auth user
info I need but the question is do I need to pass back the user information to
each and every view for layout.html to have access to the information or is
there some way to set a global/application wide variable so that can be access
by all views(templates). Ideally I would like to be able to access
auth.get_user() from layout.html
BR
John
From: [email protected] [mailto:[email protected]] On Behalf Of
Massimo Di Pierro
Sent: 30 September 2019 17:12
To: web2py-users
Subject: Re: [web2py] Re: py4web Auth
In any action decorated with @action.uses(auth.user) you can do
first_name = auth.get_user()['first_name']
Is this what you are asking?
On Monday, 30 September 2019 01:07:23 UTC-7, John Bannister wrote:
Hi Massimo,
Thanks very much. Will test and give you some feedback hopefully today.
Is there some sort of way to access user info from layout.html for example
across multiple modules without having to pass the user from each eaction in
each module? I want to be able to display the user name as part of the menu
something like Welcome John (if the user is logged in) irrespective of module
or action??
Best Regards
John
From: [email protected] [mailto:[email protected]] On Behalf Of
Massimo Di Pierro
Sent: 30 September 2019 06:39
To: web2py-users
Subject: [web2py] Re: py4web Auth
I added a page to the documentation:
http://py4web.com/_documentation/static/index.html#chapter-11
I am sure it if full of spelling errors and I am making a fool of myself (my
keyboard is acting up and my mother language is not english)
Also the examples could use an independent tester as I typed them without
running them.
Anyway I thought this was better than nothing. :-)
Massimo
--
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/e525e23a-199b-4b9b-83f6-ced97e1efaff%40googlegroups.com
<https://groups.google.com/d/msgid/web2py/e525e23a-199b-4b9b-83f6-ced97e1efaff%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/44a408dc-40cc-4bf7-b599-05b3f2b66289%40googlegroups.com
<https://groups.google.com/d/msgid/web2py/44a408dc-40cc-4bf7-b599-05b3f2b66289%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/5ba7b3b0-4b32-42c3-a4f7-9ad46607b4c9%40googlegroups.com
<https://groups.google.com/d/msgid/web2py/5ba7b3b0-4b32-42c3-a4f7-9ad46607b4c9%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/04ed01d57845%24c7861f30%2456925d90%24%40gmail.com.