|
|
@ -384,9 +384,12 @@ app.jinja_env.globals['url_for_other_page'] = url_for_other_page
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def login_required_if_no_ano(func):
|
|
|
|
def login_required_if_no_ano(func):
|
|
|
|
if config.config_anonbrowse == 1:
|
|
|
|
@wraps(func)
|
|
|
|
return func
|
|
|
|
def decorated_view(*args, **kwargs):
|
|
|
|
return login_required(func)
|
|
|
|
if config.config_anonbrowse == 1:
|
|
|
|
|
|
|
|
return func(*args, **kwargs)
|
|
|
|
|
|
|
|
return login_required(func)(*args, **kwargs)
|
|
|
|
|
|
|
|
return decorated_view
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remote_login_required(f):
|
|
|
|
def remote_login_required(f):
|
|
|
@ -866,7 +869,7 @@ def get_opds_download_link(book_id, book_format):
|
|
|
|
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
|
|
|
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
|
|
|
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper()).first()
|
|
|
|
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper()).first()
|
|
|
|
app.logger.info(data.name)
|
|
|
|
app.logger.info(data.name)
|
|
|
|
if current_user.is_authenticated():
|
|
|
|
if current_user.is_authenticated:
|
|
|
|
helper.update_download(book_id, int(current_user.id))
|
|
|
|
helper.update_download(book_id, int(current_user.id))
|
|
|
|
file_name = book.title
|
|
|
|
file_name = book.title
|
|
|
|
if len(book.authors) > 0:
|
|
|
|
if len(book.authors) > 0:
|
|
|
@ -1309,7 +1312,7 @@ def show_book(book_id):
|
|
|
|
for entry in shelfs:
|
|
|
|
for entry in shelfs:
|
|
|
|
book_in_shelfs.append(entry.shelf)
|
|
|
|
book_in_shelfs.append(entry.shelf)
|
|
|
|
|
|
|
|
|
|
|
|
if not current_user.is_anonymous():
|
|
|
|
if not current_user.is_anonymous:
|
|
|
|
matching_have_read_book = ub.session.query(ub.ReadBook).filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
|
|
|
|
matching_have_read_book = ub.session.query(ub.ReadBook).filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
|
|
|
|
ub.ReadBook.book_id == book_id)).all()
|
|
|
|
ub.ReadBook.book_id == book_id)).all()
|
|
|
|
have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].is_read
|
|
|
|
have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].is_read
|
|
|
@ -1717,7 +1720,7 @@ def feed_get_cover(book_id):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def render_read_books(page, are_read, as_xml=False):
|
|
|
|
def render_read_books(page, are_read, as_xml=False):
|
|
|
|
if not current_user.is_anonymous():
|
|
|
|
if not current_user.is_anonymous:
|
|
|
|
readBooks = ub.session.query(ub.ReadBook).filter(ub.ReadBook.user_id == int(current_user.id)).filter(ub.ReadBook.is_read == True).all()
|
|
|
|
readBooks = ub.session.query(ub.ReadBook).filter(ub.ReadBook.user_id == int(current_user.id)).filter(ub.ReadBook.is_read == True).all()
|
|
|
|
readBookIds = [x.book_id for x in readBooks]
|
|
|
|
readBookIds = [x.book_id for x in readBooks]
|
|
|
|
if are_read:
|
|
|
|
if are_read:
|
|
|
@ -1791,7 +1794,7 @@ def read_book(book_id, book_format):
|
|
|
|
if not os.path.exists(book_dir):
|
|
|
|
if not os.path.exists(book_dir):
|
|
|
|
os.mkdir(book_dir)
|
|
|
|
os.mkdir(book_dir)
|
|
|
|
bookmark = None
|
|
|
|
bookmark = None
|
|
|
|
if current_user.is_authenticated():
|
|
|
|
if current_user.is_authenticated:
|
|
|
|
bookmark = ub.session.query(ub.Bookmark).filter(ub.and_(ub.Bookmark.user_id == int(current_user.id),
|
|
|
|
bookmark = ub.session.query(ub.Bookmark).filter(ub.and_(ub.Bookmark.user_id == int(current_user.id),
|
|
|
|
ub.Bookmark.book_id == book_id,
|
|
|
|
ub.Bookmark.book_id == book_id,
|
|
|
|
ub.Bookmark.format == book_format.upper())).first()
|
|
|
|
ub.Bookmark.format == book_format.upper())).first()
|
|
|
@ -1842,7 +1845,7 @@ def get_download_link(book_id, book_format):
|
|
|
|
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper()).first()
|
|
|
|
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper()).first()
|
|
|
|
if data:
|
|
|
|
if data:
|
|
|
|
# collect downloaded books only for registered user and not for anonymous user
|
|
|
|
# collect downloaded books only for registered user and not for anonymous user
|
|
|
|
if current_user.is_authenticated():
|
|
|
|
if current_user.is_authenticated:
|
|
|
|
helper.update_download(book_id, int(current_user.id))
|
|
|
|
helper.update_download(book_id, int(current_user.id))
|
|
|
|
file_name = book.title
|
|
|
|
file_name = book.title
|
|
|
|
if len(book.authors) > 0:
|
|
|
|
if len(book.authors) > 0:
|
|
|
@ -1876,7 +1879,7 @@ def get_download_link_ext(book_id, book_format, anyname):
|
|
|
|
def register():
|
|
|
|
def register():
|
|
|
|
if not config.config_public_reg:
|
|
|
|
if not config.config_public_reg:
|
|
|
|
abort(404)
|
|
|
|
abort(404)
|
|
|
|
if current_user is not None and current_user.is_authenticated():
|
|
|
|
if current_user is not None and current_user.is_authenticated:
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
|
|
|
|
|
|
|
|
if request.method == "POST":
|
|
|
|
if request.method == "POST":
|
|
|
@ -1913,7 +1916,7 @@ def register():
|
|
|
|
def login():
|
|
|
|
def login():
|
|
|
|
if not config.db_configured:
|
|
|
|
if not config.db_configured:
|
|
|
|
return redirect(url_for('basic_configuration'))
|
|
|
|
return redirect(url_for('basic_configuration'))
|
|
|
|
if current_user is not None and current_user.is_authenticated():
|
|
|
|
if current_user is not None and current_user.is_authenticated:
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
if request.method == "POST":
|
|
|
|
if request.method == "POST":
|
|
|
|
form = request.form.to_dict()
|
|
|
|
form = request.form.to_dict()
|
|
|
@ -1940,7 +1943,7 @@ def login():
|
|
|
|
@app.route('/logout')
|
|
|
|
@app.route('/logout')
|
|
|
|
@login_required
|
|
|
|
@login_required
|
|
|
|
def logout():
|
|
|
|
def logout():
|
|
|
|
if current_user is not None and current_user.is_authenticated():
|
|
|
|
if current_user is not None and current_user.is_authenticated:
|
|
|
|
logout_user()
|
|
|
|
logout_user()
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
|
|
|
|
|
|
|
@ -2206,7 +2209,7 @@ def delete_shelf(shelf_id):
|
|
|
|
@app.route("/shelf/<int:shelf_id>")
|
|
|
|
@app.route("/shelf/<int:shelf_id>")
|
|
|
|
@login_required_if_no_ano
|
|
|
|
@login_required_if_no_ano
|
|
|
|
def show_shelf(shelf_id):
|
|
|
|
def show_shelf(shelf_id):
|
|
|
|
if current_user.is_anonymous():
|
|
|
|
if current_user.is_anonymous:
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.or_(ub.and_(ub.Shelf.user_id == int(current_user.id),
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.or_(ub.and_(ub.Shelf.user_id == int(current_user.id),
|
|
|
@ -2241,7 +2244,7 @@ def order_shelf(shelf_id):
|
|
|
|
setattr(book, 'order', to_save[str(book.book_id)])
|
|
|
|
setattr(book, 'order', to_save[str(book.book_id)])
|
|
|
|
counter += 1
|
|
|
|
counter += 1
|
|
|
|
ub.session.commit()
|
|
|
|
ub.session.commit()
|
|
|
|
if current_user.is_anonymous():
|
|
|
|
if current_user.is_anonymous:
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.or_(ub.and_(ub.Shelf.user_id == int(current_user.id),
|
|
|
|
shelf = ub.session.query(ub.Shelf).filter(ub.or_(ub.and_(ub.Shelf.user_id == int(current_user.id),
|
|
|
|