Thanks Anthony. Everything is working fine now!
On Thursday, May 10, 2012 3:37:53 PM UTC-5, Anthony wrote: > > @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. >>> >>>