#\controllers\customer.py import config, re, json from bottle import template, route, request, redirect from models import customerdb @route('/customer') def displayCustomer(): config.kargs['customers'] = json.dumps(customerdb.select()) return template('customer', data=config.kargs) @route('/custform') def getCustomerForm(): return template('custform', data=config.kargs) @route('/custform/edit/<id>') def editCustomerForm(id): config.kargs['rowedit'] = customerdb.edit(id) config.kargs['id'] = id return template('custform', data=config.kargs) @route("/customer/delete/<id>") def deleteCustomer(id): config.kargs['id'] = id customerdb.delete(id) redirect('/customer') @route('/customer', method="POST") def getFormData(): name = request.forms.get("fname") phone = request.forms.get("fphone") if not re.match(r"^(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$", phone): config.kargs['message'] = "You need to enter a right phone number." return template('custform', data=config.kargs) else: if 'rowedit' in config.kargs: customerdb.update(name, phone, config.kargs['id']) del config.kargs['rowedit'] redirect('/customer') else: customerdb.insert(name, phone) redirect('/customer')
#\models\customerdb.py import sqlite3 def insert(*customer): conn = sqlite3.connect('sqlite.db') cursor = conn.cursor() sql ='''CREATE TABLE IF NOT EXISTS CUSTOMER( NAME TEXT, PHONE TEXT ) ''' cursor.execute(sql) cursor.execute("INSERT INTO CUSTOMER VALUES (?, ?)", customer) conn.commit() conn.close() def select(): conn = sqlite3.connect('sqlite.db') cursor = conn.cursor() sql ='''CREATE TABLE IF NOT EXISTS CUSTOMER( NAME TEXT, PHONE TEXT ) ''' cursor.execute(sql) cursor.execute("SELECT ROWID, * from CUSTOMER") customers = cursor.fetchall() conn.commit() conn.close() return customers def edit(id): conn = sqlite3.connect('sqlite.db') cursor = conn.cursor() cursor.execute("SELECT ROWID, * from CUSTOMER WHERE ROWID = " + id) customer = cursor.fetchone() conn.commit() conn.close() return customer def update(*args): conn = sqlite3.connect('sqlite.db') cursor = conn.cursor() sql = "UPDATE CUSTOMER SET NAME=?, PHONE=? WHERE ROWID=?" cursor.execute(sql, args) conn.commit() conn.close() def delete(id): conn = sqlite3.connect('sqlite.db') cursor = conn.cursor() cursor.execute("DELETE FROM CUSTOMER WHERE ROWID=?", (id,)) conn.commit() conn.close()
<!--\views\custform.tpl--> %include("./partials/header.tpl") <style> #custform{ margin-top: 30px; width: 30%; display: grid; grid-template-columns: auto calc(85% - 5px); grid-gap: 5px; } #custform a{ text-align: right; } </style> <div class="main" id="main"> <div class="content" id="content"> <span>CUSTOMER ENTRY FORM</span> <form id="custform" method="POST" action="/customer" onsubmit="return bicycle.customerForm('custform')"> %if 'rowedit' in data: <a>Name:</a><input name="fname" value="{{data['rowedit'][1]}}" type="text" required /> <a>Phone:</a><input name="fphone" value="{{data['rowedit'][2]}}" type="text" required /> %else: <a>Name:</a><input name="fname" type="text" required /> <a>Phone:</a><input name="fphone" type="text" required /> %end <a></a><input type="submit" /> </form> <p>{{data['message']}}</p> %data['message'] = "" </div><!--content--> </div><!--main--> %include("./partials/footer")
GitHub: https://github.com/Sokhavuth/Rental-Bicycle-App
Heroku: https://khmerweb-rba.herokuapp.com/