simple book page
This commit is contained in:
parent
4176572fef
commit
018499d722
@ -153,3 +153,20 @@ CONSTRAINT `fk_user_stat_user` FOREIGN KEY (`user_id`) REFERENCES user(`user_id`
|
||||
CONSTRAINT `ck_usedspace` CHECK (user_usedspace <= user_limit)
|
||||
);
|
||||
-- insert into user_stat values (1,1,1,1,1,1);
|
||||
|
||||
drop view if exists `v_book_to_types`;
|
||||
create view `v_book_to_types` as
|
||||
select book_id, typetable.type_id as type_id, type_name from book_type natural join typetable;
|
||||
|
||||
drop view if exists `v_type_to_book`;
|
||||
create view `v_type_to_book` as
|
||||
select book_id,
|
||||
book_name,
|
||||
book_isbn,
|
||||
book_publisher,
|
||||
book_lang,
|
||||
book_author,
|
||||
user_id,
|
||||
type_id,
|
||||
type_name
|
||||
from book natural join book_type natural join typetable;
|
||||
59
src/templates/user/book.html
Normal file
59
src/templates/user/book.html
Normal file
@ -0,0 +1,59 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block header %}
|
||||
<style>
|
||||
.maindiv {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
top: 20;
|
||||
left: 0;
|
||||
overflow-x: hidden;
|
||||
padding-left: 1.2rem;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
.sidenav {
|
||||
height: 100%;
|
||||
max-width: 160px;
|
||||
z-index: 1;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container maindiv">
|
||||
<div class="columns">
|
||||
<div class="column col-3">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a href="/home">主页</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/search">搜索</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/addbook">增加</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/tags">分类</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="column col-9 panel">
|
||||
<div class="panel-header">
|
||||
<div class="panel-title h4">{{book['book_name']}}</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% for atype in booktype %}
|
||||
<span class="chip"> {{atype['type_name']}}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
Rendered @ {{cur_time}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
12
src/user.py
12
src/user.py
@ -172,7 +172,7 @@ def search():
|
||||
querystring = "select * from book where user_id=%d" % (g.user['user_id'])
|
||||
queryval = ""
|
||||
elif bookattr == "分类":
|
||||
querystring = "SELECT * from book WHERE user_id=%d AND book_id IN (select book_id from book_type, typetable where type_name LIKE \'%%%s%%\')" % (g.user['user_id'], queryval)
|
||||
querystring = "SELECT * from v_type_to_book WHERE user_id=%d AND type_name LIKE \'%%%s%%\'" % (g.user['user_id'], queryval)
|
||||
else:
|
||||
querystring = "select * from book where user_id=%d and %s like \'%%%s%%\'" % (g.user['user_id'], queryattr, queryval)
|
||||
querystring += " limit %d offset %d" % (page_lim, page_off)
|
||||
@ -188,3 +188,13 @@ def search():
|
||||
cur_time=datetime.datetime.now(), error=error, queryresult=queryresult,
|
||||
next_page_link=next_page_link, prev_page_link=prev_page_link,
|
||||
page_last=page_last, page_first=(page==1), queryval=queryval, queryattr=attr_dict)
|
||||
|
||||
@bp.route("/book/<int:id>/", methods=("GET", "POST"))
|
||||
@login_required
|
||||
def book(id):
|
||||
db = get_db()
|
||||
book = db.execute("select * from book where book_id=?", (id,)).fetchone()
|
||||
booktype = db.execute("select * from v_book_to_types where book_id=?", (book['book_id'], )).fetchall()
|
||||
return render_template("/user/book.html",
|
||||
book=book, booktype=booktype,
|
||||
cur_time=datetime.datetime.now())
|
||||
Loading…
Reference in New Issue
Block a user