Sort Data Functionality
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#\controllers\register.py
import config, re, json, datetime
from bottle import template, route, request, redirect
from models import customerdb, bicycledb, registerdb
 
config.kargs['sortIndex'] = 0
 
@route('/register')
def displayRegister():
  config.kargs['registers'] = json.dumps(registerdb.select())
  return template('register', data=config.kargs)
 
@route('/registerForm')
def getRegisterForm():
  config.kargs['bicycles'] = json.dumps(bicycledb.select())
  config.kargs['customers'] = json.dumps(customerdb.select())
  return template('registerform', data=config.kargs)
 
@route('/register', method="POST")
def insertToRegister():
  brand = json.loads(request.forms.get("fbikelist"))
  customer = json.loads(request.forms.get("fcustomerlist"))
  bicycledb.amountMinus(brand[0])
  registerdb.insert(brand[0], customer[1], brand[1], (datetime.date.today()).strftime('%Y-%m-%d'), '1990-07-30')
  redirect('/register')
 
@route('/register/returndate/<id>/<bikeid>')
def editReturnDate(id, bikeid):
  registerdb.setReturnDate((datetime.date.today()).strftime('%Y-%m-%d'), id)
  bicycledb.amountPlus(bikeid)
  redirect('/register')
 
@route('/register/delete/<id>')
def deleteRegister(id):
  registerdb.delete(id)
  redirect('/register')
 
@route("/register/<key>/<index>")
def sortCustomer(key, index):
  config.kargs['registers'] = json.dumps(registerdb.sort(key))
  config.kargs['sortIndex'] = index
  return template('register', data=config.kargs)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#\models\registerdb.py
import sqlite3
 
def insert(*register):
  conn = sqlite3.connect('sqlite.db')
  cursor = conn.cursor()
 
  sql ='''CREATE TABLE IF NOT EXISTS REGISTER(
    ID INT,
    CUSTOMER TEXT,
    BRAND TEXT,
    RENTDATE DATE,
    RETURNDATE DATE
  )
  '''
 
  cursor.execute(sql)
 
  cursor.execute("INSERT INTO REGISTER VALUES (?, ?, ?, ?, ?)", register)
   
  conn.commit()
  conn.close()
 
 
def select():
  conn = sqlite3.connect('sqlite.db')
  cursor = conn.cursor()
 
  sql ='''CREATE TABLE IF NOT EXISTS REGISTER(
    ID INT,
    CUSTOMER TEXT,
    BRAND TEXT,
    RENTDATE DATE,
    RETURNDATE DATE
  )
  '''
 
  cursor.execute(sql)
 
  cursor.execute("SELECT ROWID, * from REGISTER")
 
  registers = cursor.fetchall()
   
  conn.commit()
  conn.close()
 
  return registers
 
def setReturnDate(*args):
  conn = sqlite3.connect('sqlite.db')
  cursor = conn.cursor()
 
  sql = "UPDATE REGISTER SET RETURNDATE=? 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 REGISTER WHERE ROWID=?", (id,))
 
  conn.commit()
  conn.close()
 
def sort(key):
  conn = sqlite3.connect('sqlite.db')
  cursor = conn.cursor()
   
  cursor.execute("SELECT ROWID, * from REGISTER ORDER BY " + key)
  registers = cursor.fetchall()
 
  conn.commit()
  conn.close()
 
  return registers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!--\views\register.tpl-->
 
%include("./partials/header.tpl")
 
<div class="main" id="main">
  <div class="content" id="content">
    <div class="top-widget">
    <span>REGISTERS</span><input onclick="location.href='/registerForm'" type="button" value="Add Register" />
    </div>
    <div class="bottom-widget">
      <span>
        <select id="regiskey">
          <option value="Customer" >Customer</option>
          <option value="Brand" >Bicycle</option>
          <option value="RentDate" >Rental Date</option>
          <option value="ReturnDate" >Return Date</option>
        </select>
        <input onclick="bicycle.sortRegister()" type="button" value="Sort" />
      </span>
    </div>
    <div id="table"></div>
     
    <script>
      $( document ).ready(function() {
        bicycle.showRegister({{!data['registers']}}, {{!data['sortIndex']}});
      });
     
    </script>
     
  </div><!--content-->
 
</div><!--main-->
 
%include("./partials/footer")
1
2
3
4
5
6
7
sortRegister(){
    var element = document.getElementById("regiskey");
    var sortIndex = element.selectedIndex;
    var key = element.options[sortIndex].value;
 
    window.location.href = "/register/" + key + "/" + sortIndex;
  }

GitHub: https://github.com/Sokhavuth/Rental-Bicycle-App
Heroku: https://khmerweb-rba.herokuapp.com/