I didn't see rapidly other problem in the code... The only thing I could suspect is if you use directly (I mean call the module trashit function from the URL) trashit...
Since it is a parameted function if won't be allowed to execute it from the URL. We don't see your controller... Also, maybe try without sub-func "crumbs.do_crumbs(session, request, db)" first and then add it... Richard On Thu, Mar 8, 2012 at 11:45 AM, Cliff <[email protected]> wrote: > Richard, > > Thanks for the hints. > > You can pass the response object to a module directly, without using > current. I have other modules that work this way; the only problem is > the long parms list. > > I know the html imports are working correctly because the form > renders. > I suspect the http imports are working because no exception gets > raised and the the traceback points to gluon/http.py. So it must be > imported. > > On Mar 8, 11:21 am, Richard Vézina <[email protected]> > wrote: > > You may check if those import are working properly : > > > > from html import FORM, H2, P, BR, INPUT, URL > > from http import HTTP, redirect > > > > Could it be possible that it should be import like this : > > > > from gluon.html import FORM?? > > > > Richard > > > > On Thu, Mar 8, 2012 at 11:09 AM, Richard Vézina < > [email protected] > > > > > > > > > > > > > > > > > wrote: > > > I think you will need to read a bit about current, current.response, > > > current.request, etc. > > > > > Richard > > > > > On Thu, Mar 8, 2012 at 11:04 AM, Cliff <[email protected]> wrote: > > > > >> What am I doing wrong? > > > > >> This code works fine in a controller. When moved to a module it fails > > >> with a 303 error. > > >> Here is the code: > > > > >> ### Controller: > > >> def trash(): > > >> import trash_it > > >> return trash_it.trashit(request, session,response, db) > > > > >> ## module trash_it.py > > >> from html import FORM, H2, P, BR, INPUT, URL > > >> from http import HTTP, redirect > > > > >> def trashit(request, session, response, db): > > >> import crumbs > > >> crumb_trail = crumbs.do_crumbs(session, request, db) > > >> form = FORM( > > >> H2('Are you sure?'), > > >> P('Do you really want to move the item to the trash?'), > > >> BR(), > > >> INPUT(_type='submit', _name='yes', _value='Yes, trash it', > > >> _style='margin-right:1em' > > >> ), > > >> INPUT(_type='submit', _name='no', _value='No'), > > >> ) > > >> response.view = 'are_you_sure.html' > > > > >> if form.accepts(request, session): > > >> if 'yes' in request.post_vars: > > >> db[request.controller][request.args(0)] = > > >> dict(is_active=False) > > >> session.flash = 'Item moved to trash.' > > >> redirect(URL(request.application, request.controller, > > >> 'index')) > > >> elif 'no' in request.post_vars: > > >> session.flash = 'Trash cancelled.' > > >> redirect(URL(request.application, request.controller, > > >> 'index')) > > >> else: > > >> response.flash = 'Just checking.' > > > > >> return dict( form=form, crumb_trail=crumb_trail) > > > > >> # The traceback > > > > >> Traceback (most recent call last): > > >> File "/media/Myfiles/3-o/gluon/main.py", line 493, in wsgibase > > >> serve_controller(request, response, session) > > >> File "/media/Myfiles/3-o/gluon/main.py", line 202, in > > >> serve_controller > > >> page = run_controller_in(request.controller, request.function, > > >> environment) > > >> File "/media/Myfiles/3-o/gluon/compileapp.py", line 537, in > > >> run_controller_in > > >> restricted(code, environment, filename) > > >> File "/media/Myfiles/3-o/gluon/restricted.py", line 204, in > > >> restricted > > >> exec ccode in environment > > >> File "/media/Myfiles/3-o/applications/operations/controllers/ > > >> buckslips.py", line 344, in <module> > > >> File "/media/Myfiles/3-o/gluon/globals.py", line 172, in <lambda> > > >> self._caller = lambda f: f() > > >> File "/media/Myfiles/3-o/applications/operations/controllers/ > > >> buckslips.py", line 341, in trash > > >> return trash_it.trashit(request, session,response, db) > > >> File "applications/operations/modules/trash_it.py", line 22, in > > >> trashit > > >> redirect(URL(request.application, request.controller, 'index'), > > >> File "/media/Myfiles/3-o/gluon/http.py", line 128, in redirect > > >> Location=location) > > >> HTTP: 303 SEE OTHER >

