@ -9,6 +9,7 @@ from app import app, db, socketio, DOMAIN
from flask import Flask , Response , render_template , request , redirect , url_for , flash , send_from_directory , jsonify , abort
from flask import Flask , Response , render_template , request , redirect , url_for , flash , send_from_directory , jsonify , abort
import json
import json
from sqlalchemy . sql . expression import func , select
from sqlalchemy . sql . expression import func , select
from sqlalchemy . sql import except_
from app . forms import UploadForm , EditForm , SearchForm , ChatForm , StackForm , AddtoStackForm , EditStackForm
from app . forms import UploadForm , EditForm , SearchForm , ChatForm , StackForm , AddtoStackForm , EditStackForm
from app . models import Book , BookSchema , Author , AuthorSchema , Stack , StackSchema , UserIns , Chat , ChatSchema , Potential
from app . models import Book , BookSchema , Author , AuthorSchema , Stack , StackSchema , UserIns , Chat , ChatSchema , Potential
from app . cover import get_cover
from app . cover import get_cover
@ -105,6 +106,15 @@ def show_books_grid():
@app.route ( ' /books/<int:id> ' )
@app.route ( ' /books/<int:id> ' )
def show_book_by_id ( id ) :
def show_book_by_id ( id ) :
book = Book . query . get ( id )
book = Book . query . get ( id )
previousbook = Book . query . filter_by ( id = id - 1 ) . first ( )
nextbook = Book . query . filter_by ( id = id + 1 ) . first ( )
allbooks = db . session . query ( Book ) . all ( )
edge = len ( allbooks )
if id == 1 :
previousbook = None
if id == edge :
nextbook = None
userin = UserIns . query . filter_by ( title = " lastViewed " ) . first ( )
userin = UserIns . query . filter_by ( title = " lastViewed " ) . first ( )
if userin != None :
if userin != None :
userin . info = book . title
userin . info = book . title
@ -116,7 +126,7 @@ def show_book_by_id(id):
if not book :
if not book :
return render_template ( ' red_link.html ' , id = id )
return render_template ( ' red_link.html ' , id = id )
else :
else :
return render_template ( ' show_book_detail.html ' , book = book )
return render_template ( ' show_book_detail.html ' , book = book , previousbook = previousbook , nextbook = nextbook )
@app.route ( ' /books/<int:id>/delete ' , methods = [ ' POST ' , ' GET ' ] )
@app.route ( ' /books/<int:id>/delete ' , methods = [ ' POST ' , ' GET ' ] )
@ -399,8 +409,8 @@ def show_books():
@app.route ( ' /search/<searchtype>/<viewby>/<query> ' , methods = [ ' POST ' , ' GET ' ] )
@app.route ( ' /search/<searchtype>/<viewby>/<query> ' , methods = [ ' POST ' , ' GET ' ] )
def search_results ( searchtype , query , viewby ) :
def search_results ( searchtype , query , viewby ) :
search = SearchForm ( request . form , search = query )
search = SearchForm ( request . form , search = query )
random_order = Book . query . all ( )
results = Book . query . filter ( Book . title . contains ( query ) ) . order_by ( Book . title )
results = Book . query . filter ( Book . title . contains ( query ) ) . order_by ( Book . title )
allbooks = set ( Book . query . all ( ) )
viewby = view [ - 1 ]
viewby = view [ - 1 ]
if searchtype == ' Title ' :
if searchtype == ' Title ' :
@ -432,14 +442,16 @@ def search_results(searchtype, query, viewby):
count = results . count ( )
count = results . count ( )
whole = Book . query . count ( )
whole = Book . query . count ( )
percentage = float ( count / whole * 100 )
percentage = float ( count / whole * 100 )
fbooks = set ( results )
books_all = allbooks - fbooks
if search . listview . data :
if search . listview . data :
view . append ( ' 1 ' )
view . append ( ' 1 ' )
return render_template ( ' results.html ' , books = results , form = search , query = query , books_all = random_order , searchtype = search . select . data , count = count , whole = whole , percentage = percentage )
return render_template ( ' results.html ' , books = results , form = search , query = query , books_all = books_all , searchtype = search . select . data , count = count , whole = whole , percentage = percentage )
if search . grid . data :
if search . grid . data :
view . append ( ' 2 ' )
view . append ( ' 2 ' )
return render_template ( ' results_grid.html ' , books = results , form = search , query = query , books_all = random_order , searchtype = search . select . data , count = count , whole = whole , percentage = percentage )
return render_template ( ' results_grid.html ' , books = results , form = search , query = query , books_all = books_all , searchtype = search . select . data , count = count , whole = whole , percentage = percentage )
if request . method == ' POST ' :
if request . method == ' POST ' :
newmsg = ' searched for: ' + search . search . data
newmsg = ' searched for: ' + search . search . data
@ -464,10 +476,10 @@ def search_results(searchtype, query, viewby):
return redirect ( ( url_for ( ' search_results ' , searchtype = search . select . data , query = search . search . data , viewby = viewby ) ) )
return redirect ( ( url_for ( ' search_results ' , searchtype = search . select . data , query = search . search . data , viewby = viewby ) ) )
if viewby == ' 2 ' :
if viewby == ' 2 ' :
return render_template ( ' results_grid.html ' , form = search , books = results , books_all = random_order , searchtype = search . select . data , query = query , count = count , whole = whole , percentage = percentage )
return render_template ( ' results_grid.html ' , form = search , books = results , books_all = books_all , searchtype = search . select . data , query = query , count = count , whole = whole , percentage = percentage )
else :
else :
return render_template ( ' results.html ' , form = search , books = results , books_all = random_order , searchtype = search . select . data , query = query , count = count , whole = whole , percentage = percentage )
return render_template ( ' results.html ' , form = search , books = results , books_all = books_all , searchtype = search . select . data , query = query , count = count , whole = whole , percentage = percentage )
# ## Search - autocomplete
# ## Search - autocomplete