cleaned up tabs on comments in main.py, allowed series edit page to stretch full page, shrank font for books in series table, added move up/down buttons (non-functional as yet), and visualised books being in more than one series

This commit is contained in:
2020-11-24 18:12:28 +11:00
parent a579e7db93
commit 725c362663
3 changed files with 47 additions and 32 deletions

19
main.py
View File

@@ -147,8 +147,8 @@ books_schema = BookSchema(many=True)
def books():
books = Book.query.all()
# ignore ORM, its too slow. Just select sub_book data and hand add it to
# the books object, and use it in jinja2 to indent/order the books/sub books
# ignore ORM, its too slow. Just select sub_book data and hand add it to
# the books object, and use it in jinja2 to indent/order the books/sub books
subs = db.engine.execute ( "select * from book_sub_book_link" )
for row in subs:
index = next((i for i, item in enumerate(books) if item.id == row.sub_book_id), -1)
@@ -165,18 +165,19 @@ def books_for_loan(id):
@app.route("/books_for_series/<id>", methods=["GET"])
def books_for_series(id):
books = Book.query.join(Book_Series_Link).filter(Book_Series_Link.series_id==id).order_by(Book.id).all()
return render_template("books_for_series.html", books=books, series_id=id)
series = Series.query.get(id)
return render_template("books_for_series.html", books=books, series=series)
@app.route("/book/<id>", methods=["GET"])
def book(id):
book = Book.query.get(id)
book_s = book_schema.dump(book)
######
###
### okay, this manual hacking of sub_book is currently going to be needed, because in the jinja2 I want to list the book, and more than just the id number of the sub_book, I want the details... (sub_book_schema needs a book relationship BUT, dependencies mean I can't define a book schema inside sub_book schema, and I am definitely not sure how to join it anyway... for another time.
###
#####
######
###
### okay, this manual hacking of sub_book is currently going to be needed, because in the jinja2 I want to list the book, and more than just the id number of the sub_book, I want the details... (sub_book_schema needs a book relationship BUT, dependencies mean I can't define a book schema inside sub_book schema, and I am definitely not sure how to join it anyway... for another time.
###
#####
# force sub books for jinja2 to be able to use
subs = db.engine.execute ( "select bsb.book_id, bsb.sub_book_id, bsb.sub_book_num, book.title, book.rating, book.year_published, book.notes, bal.author_id as author_id, author.surname||', '||author.firstnames as author from book_sub_book_link bsb, book, book_author_link bal, author where bsb.book_id = {} and book.id = bsb.sub_book_id and book.id = bal.book_id and bal.author_id = author.id".format( id ) )
sub_book=[]
@@ -192,7 +193,7 @@ def book(id):
book_s['sub_book'] = sub_book
book_form=BookForm(request.form)
# set defaults for drop-down's based on this book
# set defaults for drop-down's based on this book
book_form.condition.default = book.condition
book_form.covertype.default = book.covertype
book_form.owned.default = book.owned

View File

@@ -1,21 +1,33 @@
<h3>Books in Series</h1>
<table id="book_table" class="table table-striped table-sm" data-toolbar="#toolbar" data-search="true">
<thead>
<tr class="thead-light"><th>Title</th><th>Book Number</th></tr>
</thead>
<tbody>
{% for book in books %}
<tr>
{% if book.sub_book_num is defined %}
<td><a href="/book/{{book.id}}">&nbsp;&nbsp;&nbsp;&nbsp;{{book.title}}</a></td>
{% else %}
<td><a href="/book/{{book.id}}">{{book.title}}</a></td>
{% endif %}
<td data-sort="{{series_id, SeriesBookNum( series_id, book.id )}}">{{ SeriesBookNum( series_id, book.id ) }}
</a></td>
<table id="book_table" class="table table-striped table-sm small" data-toolbar="#toolbar" data-search="true">
<thead>
<tr class="thead-light"><th>Title</th><th>Book Number</th></tr>
</thead>
<tbody>
{% for book in books %}
<tr>
<td>
{% if SeriesBookNum( series.id, book.id ) == 1 %}
{% set ds="disabled" %}
{% endif %}
<a class="btn btn-outline-primary btn-small {{ds}}" href="#"><i class="fas fa-angle-double-up"></i></a>
{% if SeriesBookNum( series.id, book.id ) == series.num_books %}
{% set de="disabled" %}
{% endif %}
<a class="btn btn-outline-primary btn-small {{de}}" href="#"><i class="fas fa-angle-double-down"></i></a>
{% if book.sub_book_num is defined %}
<a href="/book/{{book.id}}">&nbsp;&nbsp;&nbsp;&nbsp;{{book.title}}</a>
{% else %}
<a href="/book/{{book.id}}">{{book.title}}</a>
{% endif %}
</td>
<td data-sort="{{series.id}}.{{"%02d".format( SeriesBookNum( series.id, book.id ))}}">
{% for s in book.series %}
{{ SeriesBookNum( s.id, book.id ) }} of <a href="/series/{{s.id}}">{{s.title}}</a><br>
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
{% endfor %}
</tbody>
</table>
<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.22/js/dataTables.bootstrap4.min.js"></script>

View File

@@ -1,14 +1,16 @@
{% extends "base.html" %}
{% block main_content %}
<div class="container">
<h3 class="col-lg-12"><center>Series</center></h3>
<div class="container-fluid">
<div class="row">
<h3 class="col-lg-6"><center>Series</center></h3><h3 class="col-lg-6"><center>Books in Series</center></h3>
</div class="row">
{% if message|length %}
<div class="row alert alert-{{alert}}">
{{message}}
</div>
{% endif %}
<div class="row">
<div class="col-lg-8">
<div class="col-lg-6">
<form class="form form-inline col-lg-12" action="" method="POST">
{{ series_form.csrf_token }}
{{ series_form.id }}
@@ -36,11 +38,11 @@
{{ series_form.submit( class="btn btn-primary col-lg-2" )}}
</div class="form-row">
</form>
</div class="col-lg-8">
<div class="col-lg-4">
</div class="col-lg-6">
<div class="col-lg-6">
<div id="books_for_series_bit">
</div id="books_for_series_bit">
</div class="col-lg-4">
</div class="col-lg-6">
</div class="row">
</div class="container">
{% endblock main_content %}