Now all page controllers with the decorator return None on the screen.
---
Jason

On 04/06/2011 09:34 PM, Massimo Di Pierro wrote:
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<encomp...@gmail.com>  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