mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +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:
		| @@ -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")) | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bodybybuddha
					bodybybuddha