mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-26 01:50:31 +00:00
Requests from #454
This commit is contained in:
parent
6f36eef51d
commit
8896b3c5d2
@ -17,7 +17,7 @@
|
|||||||
{% if g.user.role_download() %}
|
{% if g.user.role_download() %}
|
||||||
{% if entry.data|length %}
|
{% if entry.data|length %}
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group" role="group">
|
||||||
{% if entry.data|length < 3 %}
|
{% if entry.data|length < 2 %}
|
||||||
<button type="button" class="btn btn-primary">
|
<button type="button" class="btn btn-primary">
|
||||||
{{_('Download')}} :
|
{{_('Download')}} :
|
||||||
</button>
|
</button>
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
<p class="title">{{entry.title|shortentitle}}</p>
|
<p class="title">{{entry.title|truncate(60)}}</p>
|
||||||
<p class="author">
|
<p class="author">
|
||||||
{% for author in entry.authors %}
|
{% for author in entry.authors %}
|
||||||
<a href="{{url_for('author', book_id=author.id) }}">{{author.name.replace('|',',')}}</a>
|
<a href="{{url_for('author', book_id=author.id) }}">{{author.name.replace('|',',')}}</a>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
{% block header %}{% endblock %}
|
{% block header %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body class="{{ page }}">
|
||||||
<!-- Static navbar -->
|
<!-- Static navbar -->
|
||||||
<div class="navbar navbar-default navbar-static-top" role="navigation">
|
<div class="navbar navbar-default navbar-static-top" role="navigation">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
@ -116,7 +116,7 @@
|
|||||||
<ul class="list-unstyled" id="scnd-nav" intent in-standard-append="nav.navigation" in-mobile-after="#main-nav" in-mobile-class="nav navbar-nav">
|
<ul class="list-unstyled" id="scnd-nav" intent in-standard-append="nav.navigation" in-mobile-after="#main-nav" in-mobile-class="nav navbar-nav">
|
||||||
<li class="nav-head hidden-xs">{{_('Browse')}}</li>
|
<li class="nav-head hidden-xs">{{_('Browse')}}</li>
|
||||||
{% if g.user.show_recent() %}
|
{% if g.user.show_recent() %}
|
||||||
<li id="nav_new"><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('Recently Added')}}</a></li>
|
<li id="nav_new" {% if page == 'root' %}class="active"{% endif %}><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('Recently Added')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_sorted() %}
|
{% if g.user.show_sorted() %}
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
@ -125,39 +125,39 @@
|
|||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="{{url_for('newest_books')}}">{{_('Sort By')}} {{_('Newest')}}</a></li>
|
<li {% if page == 'newest' %}class="active"{% endif %}><a href="{{url_for('newest_books')}}">{{_('Sort By')}} {{_('Newest')}}</a></li>
|
||||||
<li><a href="{{url_for('oldest_books')}}">{{_('Sort By')}} {{_('Oldest')}}</a></li>
|
<li {% if page == 'oldest' %}class="active"{% endif %}><a href="{{url_for('oldest_books')}}">{{_('Sort By')}} {{_('Oldest')}}</a></li>
|
||||||
<li><a href="{{url_for('titles_ascending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})</a></li>
|
<li {% if page == 'a-z' %}class="active"{% endif %}><a href="{{url_for('titles_ascending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})</a></li>
|
||||||
<li><a href="{{url_for('titles_descending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})</a></li>
|
<li {% if page == 'z-a' %}class="active"{% endif %}><a href="{{url_for('titles_descending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_hot_books() %}
|
{% if g.user.show_hot_books() %}
|
||||||
<li id="nav_hot"><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
|
<li id="nav_hot" {% if page == 'hot' %}class="active"{% endif %}><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_best_rated_books() %}
|
{% if g.user.show_best_rated_books() %}
|
||||||
<li><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span> {{_('Best rated Books')}}</a></li>
|
<li {% if page == 'rated' %}class="active"{% endif %}><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span> {{_('Best rated Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_read_and_unread() %}
|
{% if g.user.show_read_and_unread() %}
|
||||||
{% if not g.user.is_anonymous %}
|
{% if not g.user.is_anonymous %}
|
||||||
<li><a href="{{url_for('read_books')}}"><span class="glyphicon glyphicon-eye-open"></span> {{_('Read Books')}}</a></li>
|
<li {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('read_books')}}"><span class="glyphicon glyphicon-eye-open"></span> {{_('Read Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
<li><a href="{{url_for('unread_books')}}"><span class="glyphicon glyphicon-eye-close"></span> {{_('Unread Books')}}</a></li>
|
<li {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('unread_books')}}"><span class="glyphicon glyphicon-eye-close"></span> {{_('Unread Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_random_books() %}
|
{% if g.user.show_random_books() %}
|
||||||
<li id="nav_rand"><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
|
<li id="nav_rand" {% if page == 'discover' %}class="active"{% endif %}><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_category() %}
|
{% if g.user.show_category() %}
|
||||||
<li id="nav_cat"><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
|
<li id="nav_cat" {% if page == 'discover' %}class="category"{% endif %}><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_series() %}
|
{% if g.user.show_series() %}
|
||||||
<li id="nav_serie"><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
|
<li id="nav_serie" {% if page == 'series' %}class="active"{% endif %}><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_author() %}
|
{% if g.user.show_author() %}
|
||||||
<li id="nav_author"><a href="{{url_for('author_list')}}"><span class="glyphicon glyphicon-user"></span> {{_('Authors')}}</a></li>
|
<li id="nav_author" {% if page == 'author' %}class="active"{% endif %}><a href="{{url_for('author_list')}}"><span class="glyphicon glyphicon-user"></span> {{_('Authors')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.filter_language() == 'all' and g.user.show_language() %}
|
{% if g.user.filter_language() == 'all' and g.user.show_language() %}
|
||||||
<li id="nav_lang"><a href="{{url_for('language_overview')}}"><span class="glyphicon glyphicon-flag"></span> {{_('Languages')}} </a></li>
|
<li id="nav_lang" {% if page == 'language' %}class="active"{% endif %}><a href="{{url_for('language_overview')}}"><span class="glyphicon glyphicon-flag"></span> {{_('Languages')}} </a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.is_authenticated or g.user.is_anonymous %}
|
{% if g.user.is_authenticated or g.user.is_anonymous %}
|
||||||
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
|
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
|
||||||
@ -170,7 +170,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if not g.user.is_anonymous %}
|
{% if not g.user.is_anonymous %}
|
||||||
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
||||||
<li id="nav_about"><a href="{{url_for('stats')}}"><span class="glyphicon glyphicon-info-sign"></span> {{_('About')}}</a></li>
|
<li id="nav_about" {% if page == 'stat' %}class="active"{% endif %}><a href="{{url_for('stats')}}"><span class="glyphicon glyphicon-info-sign"></span> {{_('About')}}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
132
cps/web.py
132
cps/web.py
@ -1031,7 +1031,7 @@ def get_matching_tags():
|
|||||||
def index(page):
|
def index(page):
|
||||||
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.timestamp.desc())
|
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.timestamp.desc())
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Recently Added Books"))
|
title=_(u"Recently Added Books"), page="root")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/books/newest', defaults={'page': 1})
|
@app.route('/books/newest', defaults={'page': 1})
|
||||||
@ -1041,7 +1041,7 @@ def newest_books(page):
|
|||||||
if current_user.show_sorted():
|
if current_user.show_sorted():
|
||||||
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.pubdate.desc())
|
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.pubdate.desc())
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Newest Books"))
|
title=_(u"Newest Books"), page="newest")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1053,7 +1053,7 @@ def oldest_books(page):
|
|||||||
if current_user.show_sorted():
|
if current_user.show_sorted():
|
||||||
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.pubdate)
|
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.pubdate)
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Oldest Books"))
|
title=_(u"Oldest Books"), page="oldest")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1065,7 +1065,7 @@ def titles_ascending(page):
|
|||||||
if current_user.show_sorted():
|
if current_user.show_sorted():
|
||||||
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.sort)
|
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.sort)
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Books (A-Z)"))
|
title=_(u"Books (A-Z)"), page="a-z")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1076,7 +1076,7 @@ def titles_ascending(page):
|
|||||||
def titles_descending(page):
|
def titles_descending(page):
|
||||||
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.sort.desc())
|
entries, random, pagination = fill_indexpage(page, db.Books, True, db.Books.sort.desc())
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Books (Z-A)"))
|
title=_(u"Books (Z-A)"), page="z-a")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/hot", defaults={'page': 1})
|
@app.route("/hot", defaults={'page': 1})
|
||||||
@ -1105,7 +1105,7 @@ def hot_books(page):
|
|||||||
numBooks = entries.__len__()
|
numBooks = entries.__len__()
|
||||||
pagination = Pagination(page, config.config_books_per_page, numBooks)
|
pagination = Pagination(page, config.config_books_per_page, numBooks)
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Hot Books (most downloaded)"))
|
title=_(u"Hot Books (most downloaded)"), page="hot")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1118,7 +1118,7 @@ def best_rated_books(page):
|
|||||||
entries, random, pagination = fill_indexpage(page, db.Books, db.Books.ratings.any(db.Ratings.rating > 9),
|
entries, random, pagination = fill_indexpage(page, db.Books, db.Books.ratings.any(db.Ratings.rating > 9),
|
||||||
db.Books.timestamp.desc())
|
db.Books.timestamp.desc())
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Best rated books"))
|
title=_(u"Best rated books"), page="rated")
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
|
|
||||||
@ -1129,7 +1129,8 @@ def discover(page):
|
|||||||
if current_user.show_random_books():
|
if current_user.show_random_books():
|
||||||
entries, __, pagination = fill_indexpage(page, db.Books, True, func.randomblob(2))
|
entries, __, pagination = fill_indexpage(page, db.Books, True, func.randomblob(2))
|
||||||
pagination = Pagination(1, config.config_books_per_page, config.config_books_per_page)
|
pagination = Pagination(1, config.config_books_per_page, config.config_books_per_page)
|
||||||
return render_title_template('discover.html', entries=entries, pagination=pagination, title=_(u"Random Books"))
|
return render_title_template('discover.html', entries=entries, pagination=pagination,
|
||||||
|
title=_(u"Random Books"), page="discover")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1143,7 +1144,8 @@ def author_list():
|
|||||||
.group_by('books_authors_link.author').order_by(db.Authors.sort).all()
|
.group_by('books_authors_link.author').order_by(db.Authors.sort).all()
|
||||||
for entry in entries:
|
for entry in entries:
|
||||||
entry.Authors.name = entry.Authors.name.replace('|', ',')
|
entry.Authors.name = entry.Authors.name.replace('|', ',')
|
||||||
return render_title_template('list.html', entries=entries, folder='author', title=_(u"Author list"))
|
return render_title_template('list.html', entries=entries, folder='author',
|
||||||
|
title=_(u"Author list"), page="authorlist")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1172,7 +1174,7 @@ def author(book_id, page):
|
|||||||
app.logger.error('Goodreads website is down/inaccessible')
|
app.logger.error('Goodreads website is down/inaccessible')
|
||||||
|
|
||||||
return render_title_template('author.html', entries=entries, pagination=pagination,
|
return render_title_template('author.html', entries=entries, pagination=pagination,
|
||||||
title=name, author=author_info, other_books=other_books)
|
title=name, author=author_info, other_books=other_books, page="author")
|
||||||
|
|
||||||
|
|
||||||
def get_unique_other_books(library_books, author_books):
|
def get_unique_other_books(library_books, author_books):
|
||||||
@ -1201,7 +1203,8 @@ def series_list():
|
|||||||
entries = db.session.query(db.Series, func.count('books_series_link.book').label('count'))\
|
entries = db.session.query(db.Series, func.count('books_series_link.book').label('count'))\
|
||||||
.join(db.books_series_link).join(db.Books).filter(common_filters())\
|
.join(db.books_series_link).join(db.Books).filter(common_filters())\
|
||||||
.group_by('books_series_link.series').order_by(db.Series.sort).all()
|
.group_by('books_series_link.series').order_by(db.Series.sort).all()
|
||||||
return render_title_template('list.html', entries=entries, folder='series', title=_(u"Series list"))
|
return render_title_template('list.html', entries=entries, folder='series',
|
||||||
|
title=_(u"Series list"), page="serieslist")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1215,7 +1218,7 @@ def series(book_id, page):
|
|||||||
name = db.session.query(db.Series).filter(db.Series.id == book_id).first().name
|
name = db.session.query(db.Series).filter(db.Series.id == book_id).first().name
|
||||||
if entries:
|
if entries:
|
||||||
return render_title_template('index.html', random=random, pagination=pagination, entries=entries,
|
return render_title_template('index.html', random=random, pagination=pagination, entries=entries,
|
||||||
title=_(u"Series: %(serie)s", serie=name))
|
title=_(u"Series: %(serie)s", serie=name), page="series")
|
||||||
else:
|
else:
|
||||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
@ -1248,7 +1251,7 @@ def language_overview():
|
|||||||
func.count('books_languages_link.book').label('bookcount')).group_by(
|
func.count('books_languages_link.book').label('bookcount')).group_by(
|
||||||
'books_languages_link.lang_code').all()
|
'books_languages_link.lang_code').all()
|
||||||
return render_title_template('languages.html', languages=languages, lang_counter=lang_counter,
|
return render_title_template('languages.html', languages=languages, lang_counter=lang_counter,
|
||||||
title=_(u"Available languages"))
|
title=_(u"Available languages"), page="langlist")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1265,7 +1268,7 @@ def language(name, page):
|
|||||||
except Exception:
|
except Exception:
|
||||||
name = _(isoLanguages.get(part3=name).name)
|
name = _(isoLanguages.get(part3=name).name)
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Language: %(name)s", name=name))
|
title=_(u"Language: %(name)s", name=name), page="language")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/category")
|
@app.route("/category")
|
||||||
@ -1275,7 +1278,8 @@ def category_list():
|
|||||||
entries = db.session.query(db.Tags, func.count('books_tags_link.book').label('count'))\
|
entries = db.session.query(db.Tags, func.count('books_tags_link.book').label('count'))\
|
||||||
.join(db.books_tags_link).join(db.Books).order_by(db.Tags.name).filter(common_filters())\
|
.join(db.books_tags_link).join(db.Books).order_by(db.Tags.name).filter(common_filters())\
|
||||||
.group_by('books_tags_link.tag').all()
|
.group_by('books_tags_link.tag').all()
|
||||||
return render_title_template('list.html', entries=entries, folder='category', title=_(u"Category list"))
|
return render_title_template('list.html', entries=entries, folder='category',
|
||||||
|
title=_(u"Category list"), page="catlist")
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@ -1289,7 +1293,7 @@ def category(book_id, page):
|
|||||||
|
|
||||||
name = db.session.query(db.Tags).filter(db.Tags.id == book_id).first().name
|
name = db.session.query(db.Tags).filter(db.Tags.id == book_id).first().name
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(u"Category: %(name)s", name=name))
|
title=_(u"Category: %(name)s", name=name), page="category")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/ajax/toggleread/<int:book_id>", methods=['POST'])
|
@app.route("/ajax/toggleread/<int:book_id>", methods=['POST'])
|
||||||
@ -1374,7 +1378,8 @@ def show_book(book_id):
|
|||||||
have_read = None
|
have_read = None
|
||||||
|
|
||||||
return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr,
|
return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr,
|
||||||
title=entries.title, books_shelfs=book_in_shelfs, have_read=have_read)
|
title=entries.title, books_shelfs=book_in_shelfs,
|
||||||
|
have_read=have_read, page="book")
|
||||||
else:
|
else:
|
||||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
@ -1413,7 +1418,7 @@ def stats():
|
|||||||
authors = len(db.session.query(db.Authors).all())
|
authors = len(db.session.query(db.Authors).all())
|
||||||
categorys = len(db.session.query(db.Tags).all())
|
categorys = len(db.session.query(db.Tags).all())
|
||||||
series = len(db.session.query(db.Series).all())
|
series = len(db.session.query(db.Series).all())
|
||||||
config_anonbrowse = uploader.book_formats.get_versions()
|
versions = uploader.book_formats.get_versions()
|
||||||
vendorpath = os.path.join(config.get_main_dir, "vendor")
|
vendorpath = os.path.join(config.get_main_dir, "vendor")
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
kindlegen = os.path.join(vendorpath, u"kindlegen.exe")
|
kindlegen = os.path.join(vendorpath, u"kindlegen.exe")
|
||||||
@ -1445,7 +1450,7 @@ def stats():
|
|||||||
versions['sqlite'] = db.engine.dialect.dbapi.sqlite_version
|
versions['sqlite'] = db.engine.dialect.dbapi.sqlite_version
|
||||||
|
|
||||||
return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=versions,
|
return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=versions,
|
||||||
categorycounter=categorys, seriecounter=series, title=_(u"Statistics"))
|
categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/delete/<int:book_id>/")
|
@app.route("/delete/<int:book_id>/")
|
||||||
@ -1660,9 +1665,9 @@ def search():
|
|||||||
# result = db.session.execute("select name from authors where lower(name) like '%" + term.lower() + "%'")
|
# result = db.session.execute("select name from authors where lower(name) like '%" + term.lower() + "%'")
|
||||||
# entries = result.fetchall()
|
# entries = result.fetchall()
|
||||||
# result.close()
|
# result.close()
|
||||||
return render_title_template('search.html', searchterm=term, entries=entries)
|
return render_title_template('search.html', searchterm=term, entries=entries, page="search")
|
||||||
else:
|
else:
|
||||||
return render_title_template('search.html', searchterm="")
|
return render_title_template('search.html', searchterm="", page="search")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/advanced_search", methods=["GET"])
|
@app.route("/advanced_search", methods=["GET"])
|
||||||
@ -1746,7 +1751,8 @@ def advanced_search():
|
|||||||
for language in exclude_languages_inputs:
|
for language in exclude_languages_inputs:
|
||||||
q = q.filter(not_(db.Books.series.any(db.Languages.id == language)))
|
q = q.filter(not_(db.Books.series.any(db.Languages.id == language)))
|
||||||
q = q.all()
|
q = q.all()
|
||||||
return render_title_template('search.html', searchterm=searchterm, entries=q, title=_(u"search"))
|
return render_title_template('search.html', searchterm=searchterm,
|
||||||
|
entries=q, title=_(u"search"), page="search")
|
||||||
tags = db.session.query(db.Tags).order_by(db.Tags.name).all()
|
tags = db.session.query(db.Tags).order_by(db.Tags.name).all()
|
||||||
series = db.session.query(db.Series).order_by(db.Series.name).all()
|
series = db.session.query(db.Series).order_by(db.Series.name).all()
|
||||||
if current_user.filter_language() == u"all":
|
if current_user.filter_language() == u"all":
|
||||||
@ -1759,7 +1765,8 @@ def advanced_search():
|
|||||||
lang.name = _(isoLanguages.get(part3=lang.lang_code).name)
|
lang.name = _(isoLanguages.get(part3=lang.lang_code).name)
|
||||||
else:
|
else:
|
||||||
languages = None
|
languages = None
|
||||||
return render_title_template('search_form.html', tags=tags, languages=languages, series=series, title=_(u"search"))
|
return render_title_template('search_form.html', tags=tags, languages=languages,
|
||||||
|
series=series, title=_(u"search"), page="advsearch")
|
||||||
|
|
||||||
|
|
||||||
def get_cover_via_gdrive(cover_path):
|
def get_cover_via_gdrive(cover_path):
|
||||||
@ -1843,7 +1850,7 @@ def render_read_books(page, are_read, as_xml=False):
|
|||||||
.filter(db.cc_classes[config.config_read_column].value==True).all()
|
.filter(db.cc_classes[config.config_read_column].value==True).all()
|
||||||
readBookIds = [x.book for x in readBooks]
|
readBookIds = [x.book for x in readBooks]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
app.logger.error(u"Custom Column No.%d is not exisiting in calibre database" % config.config_read_column)
|
app.logger.error(u"Custom Column No.%d is not existing in calibre database" % config.config_read_column)
|
||||||
readBookIds=[]
|
readBookIds=[]
|
||||||
|
|
||||||
if are_read:
|
if are_read:
|
||||||
@ -1866,7 +1873,7 @@ def render_read_books(page, are_read, as_xml=False):
|
|||||||
total_books = db.session.query(func.count(db.Books.id)).scalar()
|
total_books = db.session.query(func.count(db.Books.id)).scalar()
|
||||||
name = _(u'Unread Books') + ' (' + str(total_books - len(readBookIds)) + ')'
|
name = _(u'Unread Books') + ' (' + str(total_books - len(readBookIds)) + ')'
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
title=_(name, name=name))
|
title=_(name, name=name), page="read")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/opds/readbooks/")
|
@app.route("/opds/readbooks/")
|
||||||
@ -1989,7 +1996,7 @@ def register():
|
|||||||
to_save = request.form.to_dict()
|
to_save = request.form.to_dict()
|
||||||
if not to_save["nickname"] or not to_save["email"] or not to_save["password"]:
|
if not to_save["nickname"] or not to_save["email"] or not to_save["password"]:
|
||||||
flash(_(u"Please fill out all fields!"), category="error")
|
flash(_(u"Please fill out all fields!"), category="error")
|
||||||
return render_title_template('register.html', title=_(u"register"))
|
return render_title_template('register.html', title=_(u"register"), page="register")
|
||||||
|
|
||||||
existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower()).first()
|
existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower()).first()
|
||||||
existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"]).first()
|
existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"]).first()
|
||||||
@ -2006,14 +2013,14 @@ def register():
|
|||||||
except Exception:
|
except Exception:
|
||||||
ub.session.rollback()
|
ub.session.rollback()
|
||||||
flash(_(u"An unknown error occured. Please try again later."), category="error")
|
flash(_(u"An unknown error occured. Please try again later."), category="error")
|
||||||
return render_title_template('register.html', title=_(u"register"))
|
return render_title_template('register.html', title=_(u"register"), page="register")
|
||||||
flash("Your account has been created. Please login.", category="success")
|
flash("Your account has been created. Please login.", category="success")
|
||||||
return redirect(url_for('login'))
|
return redirect(url_for('login'))
|
||||||
else:
|
else:
|
||||||
flash(_(u"This username or email address is already in use."), category="error")
|
flash(_(u"This username or email address is already in use."), category="error")
|
||||||
return render_title_template('register.html', title=_(u"register"))
|
return render_title_template('register.html', title=_(u"register"), page="register")
|
||||||
|
|
||||||
return render_title_template('register.html', title=_(u"register"))
|
return render_title_template('register.html', title=_(u"register"), page="regsiter")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/login', methods=['GET', 'POST'])
|
@app.route('/login', methods=['GET', 'POST'])
|
||||||
@ -2039,7 +2046,7 @@ def login():
|
|||||||
next_url = url_for('index')
|
next_url = url_for('index')
|
||||||
|
|
||||||
return render_title_template('login.html', title=_(u"login"), next_url=next_url,
|
return render_title_template('login.html', title=_(u"login"), next_url=next_url,
|
||||||
remote_login=config.config_remote_login)
|
remote_login=config.config_remote_login, page="login")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/logout')
|
@app.route('/logout')
|
||||||
@ -2060,7 +2067,7 @@ def remote_login():
|
|||||||
verify_url = url_for('verify_token', token=auth_token.auth_token, _external=true)
|
verify_url = url_for('verify_token', token=auth_token.auth_token, _external=true)
|
||||||
|
|
||||||
return render_title_template('remote_login.html', title=_(u"login"), token=auth_token.auth_token,
|
return render_title_template('remote_login.html', title=_(u"login"), token=auth_token.auth_token,
|
||||||
verify_url=verify_url)
|
verify_url=verify_url, page="remotelogin")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/verify/<token>')
|
@app.route('/verify/<token>')
|
||||||
@ -2263,9 +2270,9 @@ def create_shelf():
|
|||||||
flash(_(u"Shelf %(title)s created", title=to_save["title"]), category="success")
|
flash(_(u"Shelf %(title)s created", title=to_save["title"]), category="success")
|
||||||
except Exception:
|
except Exception:
|
||||||
flash(_(u"There was an error"), category="error")
|
flash(_(u"There was an error"), category="error")
|
||||||
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"))
|
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate")
|
||||||
else:
|
else:
|
||||||
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"))
|
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/shelf/edit/<int:shelf_id>", methods=["GET", "POST"])
|
@app.route("/shelf/edit/<int:shelf_id>", methods=["GET", "POST"])
|
||||||
@ -2291,9 +2298,9 @@ def edit_shelf(shelf_id):
|
|||||||
flash(_(u"Shelf %(title)s changed", title=to_save["title"]), category="success")
|
flash(_(u"Shelf %(title)s changed", title=to_save["title"]), category="success")
|
||||||
except Exception:
|
except Exception:
|
||||||
flash(_(u"There was an error"), category="error")
|
flash(_(u"There was an error"), category="error")
|
||||||
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"))
|
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit")
|
||||||
else:
|
else:
|
||||||
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"))
|
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/shelf/delete/<int:shelf_id>")
|
@app.route("/shelf/delete/<int:shelf_id>")
|
||||||
@ -2337,7 +2344,7 @@ def show_shelf(shelf_id):
|
|||||||
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
||||||
result.append(cur_book)
|
result.append(cur_book)
|
||||||
return render_title_template('shelf.html', entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
|
return render_title_template('shelf.html', entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
|
||||||
shelf=shelf)
|
shelf=shelf, page="shelf")
|
||||||
else:
|
else:
|
||||||
flash(_(u"Error opening shelf. Shelf does not exist or is not accessible"), category="error")
|
flash(_(u"Error opening shelf. Shelf does not exist or is not accessible"), category="error")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
@ -2370,7 +2377,8 @@ def order_shelf(shelf_id):
|
|||||||
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
||||||
result.append(cur_book)
|
result.append(cur_book)
|
||||||
return render_title_template('shelf_order.html', entries=result,
|
return render_title_template('shelf_order.html', entries=result,
|
||||||
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name), shelf=shelf)
|
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name),
|
||||||
|
shelf=shelf, page="shelforder")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/me", methods=["GET", "POST"])
|
@app.route("/me", methods=["GET", "POST"])
|
||||||
@ -2446,8 +2454,8 @@ def profile():
|
|||||||
title=_(u"%(name)s's profile", name=current_user.nickname))
|
title=_(u"%(name)s's profile", name=current_user.nickname))
|
||||||
flash(_(u"Profile updated"), category="success")
|
flash(_(u"Profile updated"), category="success")
|
||||||
return render_title_template("user_edit.html", translations=translations, profile=1, languages=languages,
|
return render_title_template("user_edit.html", translations=translations, profile=1, languages=languages,
|
||||||
content=content,
|
content=content, downloads=downloads, title=_(u"%(name)s's profile",
|
||||||
downloads=downloads, title=_(u"%(name)s's profile", name=current_user.nickname))
|
name=current_user.nickname), page="me")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/view")
|
@app.route("/admin/view")
|
||||||
@ -2469,7 +2477,7 @@ def admin():
|
|||||||
content = ub.session.query(ub.User).all()
|
content = ub.session.query(ub.User).all()
|
||||||
settings = ub.session.query(ub.Settings).first()
|
settings = ub.session.query(ub.Settings).first()
|
||||||
return render_title_template("admin.html", content=content, email=settings, config=config, commit=commit,
|
return render_title_template("admin.html", content=content, email=settings, config=config, commit=commit,
|
||||||
development=ub.DEVELOPMENT, title=_(u"Admin page"))
|
development=ub.DEVELOPMENT, title=_(u"Admin page"), page="admin")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/config", methods=["GET", "POST"])
|
@app.route("/admin/config", methods=["GET", "POST"])
|
||||||
@ -2551,7 +2559,7 @@ def view_configuration():
|
|||||||
readColumn = db.session.query(db.Custom_Columns)\
|
readColumn = db.session.query(db.Custom_Columns)\
|
||||||
.filter(db.and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all()
|
.filter(db.and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all()
|
||||||
return render_title_template("config_view_edit.html", content=config, readColumns=readColumn,
|
return render_title_template("config_view_edit.html", content=config, readColumns=readColumn,
|
||||||
title=_(u"UI Configuration"))
|
title=_(u"UI Configuration"), page="uiconfig")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2606,7 +2614,8 @@ def configuration_helper(origin):
|
|||||||
flash(_(u'client_secrets.json is not configured for web application'), category="error")
|
flash(_(u'client_secrets.json is not configured for web application'), category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin,
|
return render_title_template("config_edit.html", content=config, origin=origin,
|
||||||
gdrive=gdrive_support, gdriveError=gdriveError,
|
gdrive=gdrive_support, gdriveError=gdriveError,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
goodreads=goodreads_support, title=_(u"Basic Configuration"),
|
||||||
|
page="config")
|
||||||
# always show google drive settings, but in case of error deny support
|
# always show google drive settings, but in case of error deny support
|
||||||
if "config_use_google_drive" in to_save and not gdriveError:
|
if "config_use_google_drive" in to_save and not gdriveError:
|
||||||
content.config_use_google_drive = "config_use_google_drive" in to_save
|
content.config_use_google_drive = "config_use_google_drive" in to_save
|
||||||
@ -2631,7 +2640,8 @@ def configuration_helper(origin):
|
|||||||
flash(_(u'Keyfile location is not valid, please enter correct path'), category="error")
|
flash(_(u'Keyfile location is not valid, please enter correct path'), category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin,
|
return render_title_template("config_edit.html", content=config, origin=origin,
|
||||||
gdrive=gdrive_support, gdriveError=gdriveError,
|
gdrive=gdrive_support, gdriveError=gdriveError,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
goodreads=goodreads_support, title=_(u"Basic Configuration"),
|
||||||
|
page="config")
|
||||||
if "config_certfile" in to_save:
|
if "config_certfile" in to_save:
|
||||||
if content.config_certfile != to_save["config_certfile"]:
|
if content.config_certfile != to_save["config_certfile"]:
|
||||||
if os.path.isfile(to_save["config_certfile"]) or to_save["config_certfile"] is u"":
|
if os.path.isfile(to_save["config_certfile"]) or to_save["config_certfile"] is u"":
|
||||||
@ -2642,7 +2652,8 @@ def configuration_helper(origin):
|
|||||||
flash(_(u'Certfile location is not valid, please enter correct path'), category="error")
|
flash(_(u'Certfile location is not valid, please enter correct path'), category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin,
|
return render_title_template("config_edit.html", content=config, origin=origin,
|
||||||
gdrive=gdrive_support, gdriveError=gdriveError,
|
gdrive=gdrive_support, gdriveError=gdriveError,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
goodreads=goodreads_support, title=_(u"Basic Configuration"),
|
||||||
|
page="config")
|
||||||
content.config_uploading = 0
|
content.config_uploading = 0
|
||||||
content.config_anonbrowse = 0
|
content.config_anonbrowse = 0
|
||||||
content.config_public_reg = 0
|
content.config_public_reg = 0
|
||||||
@ -2677,7 +2688,8 @@ def configuration_helper(origin):
|
|||||||
flash(_(u'Logfile location is not valid, please enter correct path'), category="error")
|
flash(_(u'Logfile location is not valid, please enter correct path'), category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin,
|
return render_title_template("config_edit.html", content=config, origin=origin,
|
||||||
gdrive=gdrive_support, gdriveError=gdriveError,
|
gdrive=gdrive_support, gdriveError=gdriveError,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
goodreads=goodreads_support, title=_(u"Basic Configuration"),
|
||||||
|
page="config")
|
||||||
else:
|
else:
|
||||||
content.config_logfile = to_save["config_logfile"]
|
content.config_logfile = to_save["config_logfile"]
|
||||||
reboot_required = True
|
reboot_required = True
|
||||||
@ -2696,15 +2708,15 @@ def configuration_helper(origin):
|
|||||||
except e:
|
except e:
|
||||||
flash(e, category="error")
|
flash(e, category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
|
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
|
||||||
gdriveError=gdriveError,
|
gdriveError=gdriveError, goodreads=goodreads_support,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
title=_(u"Basic Configuration"), page="config")
|
||||||
if db_change:
|
if db_change:
|
||||||
reload(db)
|
reload(db)
|
||||||
if not db.setup_db():
|
if not db.setup_db():
|
||||||
flash(_(u'DB location is not valid, please enter correct path'), category="error")
|
flash(_(u'DB location is not valid, please enter correct path'), category="error")
|
||||||
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
|
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
|
||||||
gdriveError=gdriveError,
|
gdriveError=gdriveError, goodreads=goodreads_support,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
title=_(u"Basic Configuration"), page="config")
|
||||||
if reboot_required:
|
if reboot_required:
|
||||||
# db.engine.dispose() # ToDo verify correct
|
# db.engine.dispose() # ToDo verify correct
|
||||||
ub.session.close()
|
ub.session.close()
|
||||||
@ -2722,7 +2734,7 @@ def configuration_helper(origin):
|
|||||||
return render_title_template("config_edit.html", origin=origin, success=success, content=config,
|
return render_title_template("config_edit.html", origin=origin, success=success, content=config,
|
||||||
show_authenticate_google_drive=not is_gdrive_ready(), gdrive=gdrive_support,
|
show_authenticate_google_drive=not is_gdrive_ready(), gdrive=gdrive_support,
|
||||||
gdriveError=gdriveError, gdrivefolders=gdrivefolders,
|
gdriveError=gdriveError, gdrivefolders=gdrivefolders,
|
||||||
goodreads=goodreads_support, title=_(u"Basic Configuration"))
|
goodreads=goodreads_support, title=_(u"Basic Configuration"), page="config")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/user/new", methods=["GET", "POST"])
|
@app.route("/admin/user/new", methods=["GET", "POST"])
|
||||||
@ -2799,7 +2811,7 @@ def new_user():
|
|||||||
content.sidebar_view = config.config_default_show
|
content.sidebar_view = config.config_default_show
|
||||||
content.mature_content = bool(config.config_default_show & ub.MATURE_CONTENT)
|
content.mature_content = bool(config.config_default_show & ub.MATURE_CONTENT)
|
||||||
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
|
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
|
||||||
languages=languages, title=_(u"Add new user"))
|
languages=languages, title=_(u"Add new user"), page="newuser")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/mailsettings", methods=["GET", "POST"])
|
@app.route("/admin/mailsettings", methods=["GET", "POST"])
|
||||||
@ -2832,7 +2844,7 @@ def edit_mailsettings():
|
|||||||
flash(_(u"Please configure your kindle email address first..."), category="error")
|
flash(_(u"Please configure your kindle email address first..."), category="error")
|
||||||
else:
|
else:
|
||||||
flash(_(u"E-Mail settings updated"), category="success")
|
flash(_(u"E-Mail settings updated"), category="success")
|
||||||
return render_title_template("email_edit.html", content=content, title=_(u"Edit mail settings"))
|
return render_title_template("email_edit.html", content=content, title=_(u"Edit mail settings"), page="mailset")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/user/<int:user_id>", methods=["GET", "POST"])
|
@app.route("/admin/user/<int:user_id>", methods=["GET", "POST"])
|
||||||
@ -2976,8 +2988,8 @@ def edit_user(user_id):
|
|||||||
ub.session.rollback()
|
ub.session.rollback()
|
||||||
flash(_(u"An unknown error occured."), category="error")
|
flash(_(u"An unknown error occured."), category="error")
|
||||||
return render_title_template("user_edit.html", translations=translations, languages=languages, new_user=0,
|
return render_title_template("user_edit.html", translations=translations, languages=languages, new_user=0,
|
||||||
content=content, downloads=downloads,
|
content=content, downloads=downloads, title=_(u"Edit User %(nick)s",
|
||||||
title=_(u"Edit User %(nick)s", nick=content.nickname))
|
nick=content.nickname), page="edituser")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/admin/book/<int:book_id>", methods=['GET', 'POST'])
|
@app.route("/admin/book/<int:book_id>", methods=['GET', 'POST'])
|
||||||
@ -3008,7 +3020,7 @@ def edit_book(book_id):
|
|||||||
# Show form
|
# Show form
|
||||||
if request.method != 'POST':
|
if request.method != 'POST':
|
||||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||||
title=_(u"edit metadata"))
|
title=_(u"edit metadata"), page="editbook")
|
||||||
|
|
||||||
# Update book
|
# Update book
|
||||||
edited_books_id = set()
|
edited_books_id = set()
|
||||||
@ -3219,12 +3231,12 @@ def edit_book(book_id):
|
|||||||
return redirect(url_for('show_book', book_id=book.id))
|
return redirect(url_for('show_book', book_id=book.id))
|
||||||
else:
|
else:
|
||||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||||
title=_(u"edit metadata"))
|
title=_(u"edit metadata"), page="editbook")
|
||||||
else:
|
else:
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
flash( error, category="error")
|
flash( error, category="error")
|
||||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||||
title=_(u"edit metadata"))
|
title=_(u"edit metadata"), page="editbook")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
app.logger.exception(e)
|
app.logger.exception(e)
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
@ -3392,9 +3404,11 @@ def upload():
|
|||||||
# db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
|
# db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
|
||||||
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
|
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
|
||||||
if current_user.role_edit() or current_user.role_admin():
|
if current_user.role_edit() or current_user.role_admin():
|
||||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,title=_(u"edit metadata"))
|
return render_title_template('book_edit.html', book=book, authors=author_names,
|
||||||
|
cc=cc,title=_(u"edit metadata"), page="upload")
|
||||||
book_in_shelfs = []
|
book_in_shelfs = []
|
||||||
return render_title_template('detail.html', entry=book, cc=cc, title=book.title, books_shelfs=book_in_shelfs, )
|
return render_title_template('detail.html', entry=book, cc=cc,
|
||||||
|
title=book.title, books_shelfs=book_in_shelfs, page="upload")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
else:
|
else:
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
|
Loading…
Reference in New Issue
Block a user