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