-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
99 lines (81 loc) · 3.14 KB
/
app.py
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from flask import Flask,render_template,request,redirect,url_for,flash,jsonify
from flask_paginate import Pagination
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from flask_page_database import Base,Book,dbpath
app=Flask(__name__)
app.secret_key = 'super secret key'
engine=create_engine(dbpath)
DBSession = sessionmaker(bind=engine)
session = DBSession()
@app.route('/')
def users(limit=5):
search_title = request.args.get('search')
if search_title:
search = True
data = session.query(Book).filter(Book.title.like('%'+search_title+'%')).all()
page = int(request.args.get("page", 1))
start = (page - 1) * limit
end = page * limit if len(data) > page * limit else len(data)
paginate = Pagination(page=page, total=len(data), per_page=limit, search=search,found=len(data))
ret = session.query(Book).filter(Book.title.like('%'+search_title+'%')).slice(start, end)
return render_template(
'users.html',
data=ret, paginate=paginate
)
else:
data=session.query(Book).all()
page=int(request.args.get("page",1))
start=(page-1)*limit
end=page*limit if len(data) >page*limit else len(data)
search = False
paginate=Pagination(page=page,total=len(data),per_page=limit,search=search)
ret=session.query(Book).slice(start,end)
return render_template(
'users.html',
data=ret,paginate=paginate
)
@app.route("/add_book",methods = ['POST'])
def add_book():
if request.method == "POST":
print(request.form['title'])
book = Book(title=request.form['title'],author=request.form['author'],genre=request.form['genre'] )
session.add(book)
session.commit()
flash("Book added successfuly!", "success")
return redirect("/")
@app.route('/delete_book',methods = ['POST', 'GET'])
def delete_book():
if request.method == "POST":
id=request.form['id']
try:
book = session.query(Book).filter_by(id=id).first()
session.delete(book)
session.commit()
flash('Book was deleted successfully', 'success')
except Exception as e:
print(e)
flash('Book was deleted successfully', 'danger')
return redirect("/")
@app.route('/get_book',methods=['POST'])
def get_book():
if request.method=='POST':
id = request.form['id']
book=session.query(Book).filter_by(id=id).all()
return jsonify([i.serialize for i in book])
@app.route('/edit_book',methods=['POST'])
def edit_book():
if request.method=='POST':
id=request.form['id']
title=request.form['title']
author=request.form['author']
genre=request.form['genre']
session.query(Book).filter_by(id=id).update({
'title':title, 'author': author,'genre':genre
}, synchronize_session=False)
session.commit()
flash("Book edited successfully!", "success")
return redirect("/")
if __name__=='__main__':
app.debug=True
app.run()