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:
19
main.py
19
main.py
@@ -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
|
||||
|
||||
@@ -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}}"> {{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}}"> {{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>
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
Reference in New Issue
Block a user