@auth.requires_login() def user(): Don't require login to get to the user() function -- if you're not logged in, it redirects to the user() function, which will result in an infinite redirect loop.
Anthony On Thursday, May 10, 2012 11:33:34 AM UTC-4, man24 wrote: > > Here is the model file - > db2.py > > # coding: utf8 > db.define_table('page', > Field('title', requires=IS_NOT_IN_DB(db, 'page.title')), > Field('body', 'text', requires=IS_NOT_EMPTY()), > Field('created_on', 'datetime', default=request.now, > readable=False, writable=False), > Field('created_by', db.auth_user, default=auth.user_id, > readable=False, writable=False), > format='%(title)s') > > db.define_table('comment', > Field('page_id', db.page, readable=False, writable=False), > Field('body', 'text', requires=IS_NOT_EMPTY()), > Field('created_on', 'datetime', default=request.now, > readable=False, writable=False), > Field('created_by', db.auth_user, > default=auth.user_id,readable=False, writable=False)) > > db.define_table('document', > Field('page_id', db.page, readable=False, writable=False), > Field('name', requires=IS_NOT_IN_DB(db, 'document.name')), > Field('file', 'upload'), > Field('created_on', 'datetime', default=request.now, > readable=False, writable=False), > Field('created_by', db.auth_user, default=auth.user_id, > readable=False, writable=False), > format='%(name)s') > > Here is the controller: > > def index(): > pages = db().select(db.page.id, db.page.title, orderby=db.page.title) > return dict(pages=pages) > > @auth.requires_login() > def create(): > form=crud.create(db.page, next=URL('index')) > return dict(form=form) > > def show(): > this_page = db.page(request.args(0)) or redirect(URL('index')) > db.comment.page_id.default = this_page.id > form = crud.create(db.comment) if auth.user else None > pagecomments = db(db.comment.page_id==this_page.id).select() > return dict(page=this_page, comments=pagecomments, form=form) > > @auth.requires_login() > def edit(): > this_page = db.page(request.args(0)) or redirect(URL('index')) > form = crud.update(db.page, this_page, next=URL('show', > args=request.args)) > return dict(form=form) > > @auth.requires_login() > def documents(): > page = db.page(request.args(0)) or redirect(URL('index')) > db.document.page_id.default = page.id > db.document.page_id.writable = False > grid = SQLFORM.grid(db.document.page_id==page.id, args=[page.id]) > return dict(page=page, grid=grid) > > @auth.requires_login() > def user(): > """ > exposes: > http://..../[app]/default/user/login > http://..../[app]/default/user/logout > http://..../[app]/default/user/register > http://..../[app]/default/user/profile > http://..../[app]/default/user/retrieve_password > http://..../[app]/default/user/change_password > use @auth.requires_login() > @auth.requires_membership('group name') > @auth.requires_permission('read','table name',record_id) > to decorate functions that need access control > """ > return dict(form=auth()) > > Here are the views: > Index: > {{left_sidebar_enabled,right_sidebar_enabled=False,True}} > {{extend 'layout.html'}} > <h1>Available Wiki Pages</h1> > [ {{=A('search', _href=URL('search'))}} ]<br /> > <ul>{{for page in pages:}} > {{=LI(A(page.title, _href=URL('show', args=page.id)))}} > {{pass}}</ul> > [ {{=A('create page', _href=URL('create'))}}] > > Create: > {{extend 'layout.html'}} > <h1>Create new wiki page</h1> > {{=form}} > > Show: > {{extend 'layout.html'}} > <h1>{{=page.title}}</h1> > [ {{=A('edit', _href=URL('edit', args=request.args))}} ] > [ {{=A('documents', _href=URL('documents', args=request.args))}} ]<br /> > {{=MARKMIN(page.body)}} > <h2>Comments</h2> > {{for comment in comments:}} > <p>{{=db.auth_user[comment.created_by].first_name}} on > {{=comment.created_on}} says <i>{{=comment.body}}</i></p> > {{pass}} > <h2>Post a comment</h2> > {{=form}} > > Edit: > {{extend 'layout.html'}} > <h1>Edit wiki page</h1> > [ {{=A('show', _href=URL('show', args=request.args))}} ] <br /> > {{=form}} > > documents: > {{extend 'layout.html'}} > <h1>Documents for page: {{=page.title}}</h1> > [ {{=A('show', _href=URL('show', args=request.args))}} ]<br /> > <h2>Doucments</h2> > {{=grid}} > > Thanks > > > On Thursday, May 10, 2012 6:09:09 AM UTC-5, Anthony wrote: >> >> Can you post your exact code (models, controllers, views)? >> >> On Thursday, May 10, 2012 1:22:14 AM UTC-4, man24 wrote: >>> >>> Sorry for reposting the question. I am following the 'wiki' example >>> given in the web2py book. After first implementation, it worked fine, >>> however, now when I click on any action that requires login or even >>> clicking the 'login' from the top menu, I get this response from my web >>> browser: 'too many redirects occurred when trying to open'. Any idea what >>> could be wrong. The 'wiki' app was working fine yesterday and I haven't >>> made any changes and now today it's giving this problem. BTW, I am running >>> web2py on a mac. Thanks for your help. >> >>