91 lines
3.2 KiB
Python
91 lines
3.2 KiB
Python
from gluon.fileutils import read_file
|
|
|
|
response.menu = [['Register Person', False, URL('register_person')],
|
|
['Register Dog', False, URL('register_dog')],
|
|
['Register Product', False, URL('register_product')],
|
|
['Buy product', False, URL('buy')]]
|
|
|
|
|
|
def register_person():
|
|
""" simple person registration form with validation and database.insert()
|
|
also lists all records currently in the table"""
|
|
|
|
# create an insert form from the table
|
|
form = SQLFORM(db.person)
|
|
|
|
# if form correct perform the insert
|
|
if form.process().accepted:
|
|
response.flash = 'new record inserted'
|
|
|
|
# and get a list of all persons
|
|
records = SQLTABLE(db().select(db.person.ALL),headers='fieldname:capitalize')
|
|
|
|
return dict(form=form, records=records)
|
|
|
|
|
|
def register_dog():
|
|
""" simple person registration form with validation and database.insert()
|
|
also lists all records currently in the table"""
|
|
|
|
form = SQLFORM(db.dog)
|
|
if form.process().accepted:
|
|
response.flash = 'new record inserted'
|
|
download = URL('download') # to see the picture
|
|
records = SQLTABLE(db().select(db.dog.ALL), upload=download,
|
|
headers='fieldname:capitalize')
|
|
return dict(form=form, records=records)
|
|
|
|
|
|
def register_product():
|
|
""" simple person registration form with validation and database.insert()
|
|
also lists all records currently in the table"""
|
|
|
|
form = SQLFORM(db.product)
|
|
if form.process().accepted:
|
|
response.flash = 'new record inserted'
|
|
records = SQLTABLE(db().select(db.product.ALL),
|
|
headers='fieldname:capitalize')
|
|
return dict(form=form, records=records)
|
|
|
|
|
|
def buy():
|
|
""" uses a form to query who is buying what. validates form and
|
|
updates existing record or inserts new record in purchases """
|
|
|
|
form = SQLFORM.factory(
|
|
Field('buyer_id',requires=IS_IN_DB(db,db.person.id,'%(name)s')),
|
|
Field('product_id',requires=IS_IN_DB(db,db.product.id,'%(name)s')),
|
|
Field('quantity','integer',requires=IS_INT_IN_RANGE(1,100)))
|
|
if form.process().accepted:
|
|
# get previous purchese
|
|
purchase = db((db.purchase.buyer_id == form.vars.buyer_id)&
|
|
(db.purchase.product_id==form.vars.product_id)).select().first()
|
|
|
|
if purchase:
|
|
# if list contains a record, update that record
|
|
purchase.update_record(
|
|
quantity = purchase.quantity+form.vars.quantity)
|
|
else:
|
|
# self insert a new record in table
|
|
db.purchase.insert(buyer_id=form.vars.buyer_id,
|
|
product_id=form.vars.product_id,
|
|
quantity=form.vars.quantity)
|
|
response.flash = 'product purchased!'
|
|
elif form.errors:
|
|
response.flash = 'invalid values in form!'
|
|
|
|
# now get a list of all purchases
|
|
records = SQLTABLE(db(purchased).select(),headers='fieldname:capitalize')
|
|
return dict(form=form, records=records)
|
|
|
|
|
|
def delete_purchased():
|
|
""" delete all records in purchases """
|
|
db(db.purchase.id > 0).delete()
|
|
redirect(URL('buy'))
|
|
|
|
def download():
|
|
""" used to download uploaded files """
|
|
return response.download(request,db)
|
|
|