That's nice to know. The auth stuff is very tricky. Is it a class?
The one challenge is that I have two controller, each presenting a very
different UI. One contains user() and the other contains mini_user().
Mini_user creates it's own custom form. Use() simply returns dict(form =
auth()). These have always both worked. Since, auth() is a global, no
problem.
The problem was for a view to find auth.bar, which I have solved simply by
using the action= argument in the call.
Thank you.
On Saturday, December 15, 2012 6:23:37 AM UTC-8, Massimo Di Pierro wrote:
>
> You are trying to solve the problem in the wrong way. You just need to
> tell auth where the user action is.
>
> auth assumes:
>
> auth = Auth(db, controller='default')
>
> you need to change this if you move "def user(): ..." in a different
> controller. Then {{=auth.navbar()}} will work.
>
> On Friday, 14 December 2012 18:28:51 UTC-6, Lewis wrote:
>>
>> It seemed a good idea to break up a large controller file into two. Now
>> I have default.py and full.py.
>> User() is in full.py. So, now my views are broken because auth won't
>> work to create the auth links in the navbar.
>>
>> The default views reference auth as: <div id="navbar">{{='auth' in
>> globals() and auth.navbar(separators=(' ',' | ',''))}}</div>
>>
>> I followed the suggestion to create my own auth.navbar as follows:
>>
>> def user():
>> return dict(form = auth())
>>
>>
>> def user_bar():
>> action = 'full/user'
>> if auth.user:
>> logout = A('logout', URL(action + '/logout'))
>> profile = A('profile', URL(action + '/profile'))
>> password = A('change password', URL(action + '/change_password'))
>> bar = SPAN(auth.user.email, ' | ', profile, ' | ', password, ' |
>> ', logout, _class = 'auth_navbar')
>> else:
>> login = A('login', URL(action + '/login'))
>> register = A('register', _href = action + '/register')
>> lost_password = A('lost password', URL(action +
>> '/request_reset_password'))
>> bar = SPAN(' ', login, ' | ', register, ' | ', lost_password,
>> _class = 'auth_navbar')
>> return bar
>>
>> So, in my views I need something like:
>>
>> <div id="navbar">{{=user_bar()}}</div>
>>
>> But, this produces the error:
>> <type 'exceptions.NameError'> name 'user_bar' is not defined
>>
>> I am really lost here, guys. I don't understand what I am supposed to do
>> if the action isnot in default.py (which I don't want to do for other
>> reasons....).
>>
>>
--