Merge branch 'master' of git.xpub.nl:/var/www/git.xpub.nl/repos/xpub-lib

This commit is contained in:
Alex 2018-06-01 20:26:48 +02:00
commit 6fa69012b7
8 changed files with 74 additions and 52 deletions

View File

@ -3,7 +3,7 @@ from wtforms import StringField, FileField, validators
from wtforms.validators import InputRequired, DataRequired
from wtforms import FieldList
from wtforms import Form as NoCsrfForm
from wtforms.fields import StringField, FormField, SubmitField
from wtforms.fields import StringField, FormField, SubmitField, SelectField
from app.models import Book, BookSchema, Author
# - - - Forms - - -
@ -26,4 +26,7 @@ class EditForm(FlaskForm):
category = StringField('category', validators=[InputRequired()])
class SearchForm(FlaskForm):
choices = [('Title', 'Title'),
('Category', 'Category')]
select = SelectField('', choices=choices)
search = StringField('', validators=[InputRequired()])

View File

@ -74,13 +74,14 @@ font-size: 16px;
.search input{
margin: 0;
float: left;
width: 400px;
width: 320px;
height: 36px;
font-size: 20px;
font-weight: regular;
padding: 2px;
background:rgba(50, 50, 50, 0.2);
border:0px;
box-shadow: inset 0 0 5px rgba(000,000,000, 0.2);
}
.button {

View File

@ -11,9 +11,9 @@
{{ form.csrf_token }}
<div class="form-group"><h1 class="header">{{ form.title.label }} {{ form.title(size=20, class="form-control") }}</h1></div>
<object class="no_cover" data="../../static/img/default_cover.png" type="image/png" width="150">
<img src="../../uploads/cover/{{ book.cover }}" width="200">
</object>
<img class="no_cover" id="{{ book.title }}" src="/uploads/cover/{{ book.cover }}" width="150" onerror="if (this.src != '/uploads/cover/{{ book.cover }}') this.src = '/static/img/default_cover.png';">
<br> <br>
<div data-toggle="fieldset" id="phone-fieldset">
{{ form.author.label }} <button type="button" data-toggle="fieldset-add-row"

View File

@ -2,8 +2,8 @@
<ul>
<li><a href="{{ url_for('home') }}">Home</a></li>
<li><a href="{{ url_for('show_books') }}">Show Books</a></li>
<li><a href="{{ url_for('add_book') }}">Add Book</a></li>
<li><a href="{{ url_for('show_stacks') }}">Show Stacks</a></li>
<li><a href="{{ url_for('add_book') }}">Add Book</a></li>
<li><a href="{{ url_for('about') }}">About</a></li>
</ul>
<div class="clearfix"></div>

View File

@ -5,13 +5,12 @@
<div class="container">
{% from "_formhelpers.html" import render_field %}
<form method="POST">
<div>{{ form.select(style="width: 100px; margin: 10px; float: left; font-size: 20px") }}</div>
<div class="search">
{{ render_field(form.search) }} </div>
<button type="submit" class="button">Search</button>
</form>
</div>
<div class="container">
<h1 class="page-header">Search Results for: {{ query }}</h1>
{% with messages = get_flashed_messages() %}
@ -26,17 +25,18 @@
{% endif %}
{% endwith %}
<table style="width:100%">
<tr>
<table class="library_table" id="table" style="width:100%">
<tr id="header">
<th>Cover</th>
<th>Title</th>
<th>Author</th>
<th>Filetype</th>
<th>Tag</th>
<th>Category</th>
<th>Stack</th>
</tr>
{% for book in books %}
<tr>
<td><img class="no_cover" id="{{ book.title }}" src="../../uploads/cover/{{ book.cover }}" width="80" onerror="if (this.src != '../../static/img/default_cover.png') this.src = '../../static/img/default_cover.png';"></td>
<td><img class="no_cover" id="{{ book.title }}" src="/uploads/cover/{{ book.cover }}" width="80" onerror="if (this.src != '/static/img/default_cover.png') this.src = '/static/img/default_cover.png';"></td>
<td><a href="{{url_for('show_book_by_id', id=book.id)}}">{{ book.title }}</a></td>
<td> {% for author in book.authors %}
@ -45,8 +45,12 @@
{% endfor %}</td>
<td>{{ book.fileformat }}</td>
<td>{{ book.tag}}</td>
</tr>
<td>{{ book.category}}</td>
<td> {% for stack in book.stacks %}
<li><a href="{{url_for('show_stack_by_id', id=stack.id)}}">{{ stack.stack_name }}</a> </li>
{% endfor %}
</td>
{% endfor %}
</table>
@ -56,28 +60,32 @@
<hr>
<h2> Other books </h2>
<table style="width:100%; ">
<tr>
<table class="library_table" id="table" style="width:100%">
<tr id="header">
<th>Cover</th>
<th>Title</th>
<th>Author</th>
<th>Filetype</th>
<th>Tag</th>
<th>Category</th>
<th>Stack</th>
</tr>
{% for book in books_all %}
<tr>
<td><img class="no_cover" id="{{ book.title }}" src="../../uploads/cover/{{ book.cover }}" width="40" onerror="if (this.src != '../../static/img/default_cover.png') this.src = '../../static/img/default_cover.png';"></td>
<td><img class="no_cover" id="{{ book.title }}" src="/uploads/cover/{{ book.cover }}" width="80" onerror="if (this.src != '/static/img/default_cover.png') this.src = '/static/img/default_cover.png';"></td>
<td><a href="{{url_for('show_book_by_id', id=book.id)}}">{{ book.title }}</a></td>
<td> {% for author in book.authors %}
<li><a href="{{url_for('show_author_by_id', id=author.id)}}">{{ author.author_name }}</a> </li>
{% endfor %}</td>
<td>{{ book.fileformat }}</td>
<td>{{ book.tag}}</td>
</tr>
<td>{{ book.category}}</td>
<td> {% for stack in book.stacks %}
<li><a href="{{url_for('show_stack_by_id', id=stack.id)}}">{{ stack.stack_name }}</a> </li>
{% endfor %}
</td>
{% endfor %}
</table>
<p>

View File

@ -4,15 +4,15 @@
<div class="container">
<h1 class="header">{{ book.title }}</h1>
<img class="no_cover" id="{{ book.title }}" src="../uploads/cover/{{ book.cover }}" width="150" onerror="if (this.src != '../static/img/default_cover.png') this.src = '../static/img/default_cover.png';">
<img class="no_cover" id="{{ book.title }}" src="../uploads/cover/{{ book.cover }}" width="150" onerror="if (this.src != '../static/img/{{ book.cover }}') this.src = '../static/img/default_cover.png';">
<p>Author(s): <ul>{% for author in book.authors %}
<li><a href="{{url_for('show_author_by_id', id=author.id)}}">{{ author.author_name }}</a> </li>
{% endfor %}</ul></p>
<p>{{ book.category }}</p>
<p>{{ book.year_published }}</p>
<p>Category: {{ book.category }}</p>
<p>Year published: {{ book.year_published }}</p>
<p>Stack(s): <ul>{% for stack in book.stacks %}
<li><a href="{{url_for('show_stack_by_id', id=stack.id)}}">{{ stack.stack_name }}</a>

View File

@ -2,9 +2,9 @@
{% block main %}
<div class="container">
{% from "_formhelpers.html" import render_field %}
<form method="POST">
<div>{{ form.select(style="width: 100px; margin: 10px; float: left; font-size: 20px") }}</div>
<div class="search">
{{ render_field(form.search) }} </div>
<button type="submit" class="button">Search</button>
@ -36,8 +36,7 @@
<tr>
<td>
<img class="no_cover" id="{{ book.title }}" src="../uploads/cover/{{ book.cover }}" width="40" onerror="if (this.src != '../static/img/default_cover.png') this.src = '../static/img/default_cover.png';">
<img class="no_cover" id="{{ book.title }}" src="/uploads/cover/{{ book.cover }}" width="40" onerror="if (this.src != '/static/img/default_cover.png') this.src = '/static/img/default_cover.png';">
<!-- <object class="no_cover" data="../static/img/default_cover.png" type="image/png" width="65">
<p hidden="True"></p>

View File

@ -62,7 +62,11 @@ def show_books():
books = db.session.query(Book).all()
search = SearchForm(request.form)
if request.method == 'POST':
if search.select.data == 'Title':
return redirect((url_for('search_results', query=search.search.data)))
if search.select.data == 'Category':
return redirect((url_for('search_cat', query=search.search.data)))
return render_template('show_books.html', books=books, form=search)
@app.route('/scape', methods=['POST', 'GET'])
@ -144,6 +148,10 @@ def add_book():
upload_form = UploadForm()
if request.method == 'POST':
title = upload_form.title.data
authors = upload_form.author.data
category = upload_form.category.data
year_published = upload_form.year_published.data
if upload_form.validate_on_submit():
if upload_form.upload.data:
@ -166,13 +174,6 @@ def add_book():
name, file_extension = os.path.splitext(new_filename)
file.save(fullpath)
cover = get_cover(fullpath, name)
title = upload_form.title.data # You could also have used request.form['name']
authors = upload_form.author.data # You could also have used
category = upload_form.category.data
year_published = upload_form.year_published.data
#print(author)
#print(len(author))
book = Book(title, filename, cover, file_extension, category, year_published)
db.session.add(book)
for author in authors:
@ -186,7 +187,6 @@ def add_book():
db.session.commit()
# save user to database
flash("%s added to the library" % (title))
return redirect(url_for('show_books'))
else:
@ -196,15 +196,7 @@ def add_book():
file = open('app/uploads/potential.pdf')
filename = 'potential.pdf'
file_extension = '.pdf'
cover = get_cover('app/uploads/potential.pdf', 'default')
title = upload_form.title.data # You could also have used request.form['name']
authors = upload_form.author.data # You could also have used
category = upload_form.category.data
year_published = upload_form.year_published.data
#print(author)
#print(len(author))
cover = ''
book = Book(title, filename, cover, file_extension, category,year_published)
db.session.add(book)
for author in authors:
@ -220,7 +212,6 @@ def add_book():
flash("%s added to the library" % (title))
return redirect(url_for('show_books'))
flash_errors(upload_form)
return render_template('add_book.html', form=upload_form)
@ -266,10 +257,9 @@ def show_stack_by_id(id):
## search
@app.route('/search/<query>/', methods=['POST', 'GET'])
@app.route('/search/titles/<query>/', methods=['POST', 'GET'])
def search_results(query):
search = SearchForm(request.form)
books_all=Book.query.all()
random_order=Book.query.order_by(func.random()).limit(10)
results=Book.query.filter(Book.title.contains(query)).all()
@ -280,11 +270,32 @@ def search_results(query):
if request.method == 'POST':
query = search.search.data
results = []
results=Book.query.filter(Book.title.contains(query)).all()
if search.select.data == 'Title':
return redirect((url_for('search_results', query=search.search.data)))
if search.select.data == 'Category':
return redirect((url_for('search_cat', query=search.search.data)))
return render_template('results.html', form=search, books=results, books_all=random_order, query=query)
@app.route('/search/cat/<query>/', methods=['POST', 'GET'])
def search_cat(query):
search = SearchForm(request.form)
random_order=Book.query.order_by(func.random()).limit(10)
results=Book.query.filter(Book.category.contains(query)).all()
if not results:
upload_form = UploadForm(category=query)
return render_template('red_link.html', form=upload_form, category=query)
if request.method == 'POST':
query = search.search.data
results = []
if search.select.data == 'Title':
return redirect((url_for('search_results', query=search.search.data)))
if search.select.data == 'Category':
return redirect((url_for('search_cat', query=search.search.data)))
return render_template('results.html', form=search, books=results, books_all=random_order, query=query)
###
# The API