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.