should be

def is_in_conference(f):
     '''
     INFO: Special decorator to validate that they are attending a
conference.
     '''
     def g(f=f):
         if not session.current_conference:
             redirect(URL('default', 'index'))
     return g


On Apr 6, 12:18 pm, Jason Brower <[email protected]> wrote:
> I think the session is lost in the decorator....
> Here is my controller called "conference.py"
>
> def enter_conference():
>      '''
>      INFO:This page is for changing your session to match a particular
> conference
>      that a user may be attending or managing.
>      '''
>      print "enter_conference"
>      if not request.args(0):
>          redirect(URL('default', 'index'))
>      conference = (db((db.conference_attenders.conference ==
> request.args(0)) &\
>                      (db.conference_attenders.attender ==
> auth.user_id))).select() or \
>                   (db((db.conference.creator == auth.user_id))).select()
>      if conference:
>          print "The conference exists and I will now put the user in the
> conference."
>          session.current_conference = request.args(0)
>          redirect(URL('conference','index'))
>      else:
>          redirect(URL('default', 'index'))
>
> def exit():
>      """
>      INFO: This page simple remove them from visiting the conference.  
> Though they are still attending.
>      """
>      session.current_conference = None
>      redirect(URL('default', 'index'))
>
> def is_in_conference(f):
>      '''
>      INFO: Special decorator to validate that they are attending a
> conference.
>      '''
>      if not session.current_conference:
>          redirect(URL('default', 'index'))
>      return (f)
>
> @auth.requires_login()
> @is_in_conference
> def index():
>      """
>      INFO: This page takes all the various things of the conference on
> to one page.
>      """
>      return dict()
>
> --------------------------------------------------------------------------- 
> -----------------
> if I put enter_conference/5 for the the link it doesn't work.
> If I put print session.current_conference it print's None
> If I take out the decorator it works.
>
> So what are my options at this point?  Do I really need to put that if
> statement in each method.  The decorator is so much more clean.
> Best Regards,
> Jason

Reply via email to