mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-25 09:30:31 +00:00
Send to Kindle button precheck added
Based on existing book formats and which converter (if any) determine if button can be seen.
This commit is contained in:
parent
5a2ed58d06
commit
5d34fd7fec
@ -108,6 +108,65 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False):
|
||||
e_mail, user_name, _(u"Registration e-mail for user: %(name)s", name=user_name),text)
|
||||
return
|
||||
|
||||
def chk_send_to_kindle(book_id):
|
||||
'''
|
||||
Used to determine if we can show the Send to Kindle button.
|
||||
Specifically checks the existing book formats and the conversion options available.
|
||||
|
||||
mobi = true
|
||||
epub && kindlegen or ebookconvert = true
|
||||
all valid 'book' format && ebookconvert = true
|
||||
all other combinations = false
|
||||
'''
|
||||
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).all()
|
||||
if data:
|
||||
bookformats = get_formats_from_book(data)
|
||||
|
||||
if ub.config.config_ebookconverter == 0:
|
||||
# no converter - only allow for mobi and pdf formats
|
||||
if 'MOBI' in bookformats or 'PDF' in bookformats:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
if ub.config.config_ebookconverter == 1:
|
||||
# the converter is kindlegen - only allow epub
|
||||
if 'EPUB' in bookformats:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
if ub.config.config_ebookconverter == 2:
|
||||
# the converter is ebook-convert - allow for any allowable 'book' format
|
||||
formatcount = 0
|
||||
for bookformat in bookformats:
|
||||
if bookformat.lower() in web.EXTENSIONS_CONVERT:
|
||||
formatcount += 1
|
||||
|
||||
if formatcount > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
return False
|
||||
else:
|
||||
app.logger.error(u'Cannot find book entry %d', book_id)
|
||||
return False
|
||||
|
||||
def get_formats_from_book(data):
|
||||
'''
|
||||
data s/b the data member of db.entry
|
||||
returns a list of formats
|
||||
'''
|
||||
formatlist=[]
|
||||
for entry in data:
|
||||
formatlist.append(entry.format.upper())
|
||||
|
||||
return formatlist
|
||||
|
||||
|
||||
# Files are processed in the following order/priority:
|
||||
# 1: If Mobi file is exisiting, it's directly send to kindle email,
|
||||
|
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if g.user.kindle_mail and g.user.is_authenticated %}
|
||||
{% if g.user.kindle_mail and g.user.is_authenticated and flg_kindle%}
|
||||
<a href="{{url_for('send_to_kindle', book_id=entry.id)}}" id="sendbtn" class="btn btn-primary" role="button"><span class="glyphicon glyphicon-send"></span> {{_('Send to Kindle')}}</a>
|
||||
{% endif %}
|
||||
{% if entry.data|length %}
|
||||
|
@ -1586,9 +1586,11 @@ def show_book(book_id):
|
||||
|
||||
entries.tags = sort(entries.tags, key = lambda tag: tag.name)
|
||||
|
||||
flg_send_to_kindle = helper.chk_send_to_kindle(book_id)
|
||||
|
||||
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, page="book")
|
||||
have_read=have_read, flg_kindle=flg_send_to_kindle, page="book")
|
||||
else:
|
||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
||||
return redirect(url_for("index"))
|
||||
@ -3846,8 +3848,9 @@ def upload():
|
||||
return render_title_template('book_edit.html', book=book, authors=author_names,
|
||||
cc=cc, title=_(u"edit metadata"), page="upload")
|
||||
book_in_shelfs = []
|
||||
flg_send_to_kindle = helper.chk_send_to_kindle(book_id)
|
||||
return render_title_template('detail.html', entry=book, cc=cc,
|
||||
title=book.title, books_shelfs=book_in_shelfs, page="upload")
|
||||
title=book.title, books_shelfs=book_in_shelfs, flg_kindle=flg_send_to_kindle, page="upload")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user