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....).
>
>
--