By the looks of it... It seems that those decorators are run even when the method is not called. There by redirecting me before I can get to the enter conference method. I will be in the IRC tonight for a while if you have time to hop on and help out. BR, Jason Brower
On Thu, Apr 7, 2011 at 8:09 PM, Jason (spot) Brower <[email protected]>wrote: > When I put print f right at the beginngin of is_in_conference function I > get the following: > > <function index at 0x31e3938> > <function page at 0x31e3aa0> > <function create_page at 0x31e3c08> > <function administration at 0x31e3d70> > > representation each method I have decorated. > BR, > Jason > > > On Thu, Apr 7, 2011 at 8:05 PM, Jason (spot) Brower > <[email protected]>wrote: > >> That still returns none.... Sadly... >> >> >> On Wed, Apr 6, 2011 at 11:46 PM, Anthony <[email protected]> wrote: >> >>> Try >>> >>> 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')) >>> f() >>> return g >>> >>> On Wednesday, April 6, 2011 3:45:57 PM UTC-4, encompass wrote: >>> >>>> 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<[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 >>>> >>>> >> >

