redirect() works by raising an HTTP exception, so I think the redirect in
your try is triggering your except, so it ends up flashing the response body
of the redirect. Why are you catching HTTP exceptions -- is anything in your
try likely to trigger an HTTP?
Anthony
On Monday, October 10, 2011 8:11:04 AM UTC-4, Ross Peoples wrote:
>
> Sorry it took so long to get back. Been a crazy couple of days:
>
> This is my controller:
>
> @auth.requires_login()
> def index():
> form = SQLFORM.factory(
> Field('partnumber', length=30, requires=IS_NOT_EMPTY()),
> Field('quantity', 'double', default=1,
> requires=IS_FLOAT_IN_RANGE(0.1, 1000000, error_message='Quantity must be
> greater than 0')),
> Field('required_date', 'date', requires=IS_NOT_EMPTY()),
> Field('drawing', 'upload', uploadfolder=drawing_folder),
> table_name = 'rfq_item'
> )
>
> if form.accepts(request):
> try:
> add_partnumber(form.vars.partnumber, form.vars.quantity,
> form.vars.required_date, form.vars.drawing)
> form.vars = Storage()
> session.flash = 'Part added'
> redirect(URL('index'))
> except HTTP as e:
> response.flash = e.body
> elif form.errors:
> output = ''
> for k, v in form.errors.items():
> output += '%s: %s\n' % (k, v)
>
> response.flash = output
>
> query = db.batch.auth_user==auth.user.id
> toolbar = '<a href="#" class="button suppliers">Suppliers</a><a
> href="#" class="button create_rfq">Create RFQ</a>'
> table = plugin_datatable(query, selectable=True, deletable=True,
> updatable=True, toolbar=toolbar)
>
> response.title = 'New RFQ'
>
> return dict(form=form, table=table)
>
>
> Basically, I have a view with a data table, and a form to add another item
> to the table. When the form is submitted, it adds the item, then has to do a
> redirect to itself to avoid the "confirm form resubmission" message when the
> page is refreshed after submitting the form.
>