mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Review feedback fixes
This commit is contained in:
		| @@ -554,13 +554,14 @@ def get_thumbnails_for_books(books): | |||||||
|     cache = fs.FileSystem() |     cache = fs.FileSystem() | ||||||
|     thumbnail_files = cache.list_cache_files(fs.CACHE_TYPE_THUMBNAILS) |     thumbnail_files = cache.list_cache_files(fs.CACHE_TYPE_THUMBNAILS) | ||||||
|  |  | ||||||
|     return ub.session\ |     thumbnails = ub.session\ | ||||||
|         .query(ub.Thumbnail)\ |         .query(ub.Thumbnail)\ | ||||||
|         .filter(ub.Thumbnail.book_id.in_(book_ids))\ |         .filter(ub.Thumbnail.book_id.in_(book_ids))\ | ||||||
|         .filter(ub.Thumbnail.filename.in_(thumbnail_files))\ |  | ||||||
|         .filter(ub.Thumbnail.expiration > datetime.utcnow())\ |         .filter(ub.Thumbnail.expiration > datetime.utcnow())\ | ||||||
|         .all() |         .all() | ||||||
|  |  | ||||||
|  |     return list(filter(lambda t: t.filename in thumbnail_files, thumbnails)) | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_thumbnails_for_book_series(series): | def get_thumbnails_for_book_series(series): | ||||||
|     books = list(map(lambda s: s[0], series)) |     books = list(map(lambda s: s[0], series)) | ||||||
|   | |||||||
| @@ -129,10 +129,12 @@ def formatseriesindex_filter(series_index): | |||||||
|             return series_index |             return series_index | ||||||
|     return 0 |     return 0 | ||||||
|  |  | ||||||
|  |  | ||||||
| @jinjia.app_template_filter('escapedlink') | @jinjia.app_template_filter('escapedlink') | ||||||
| def escapedlink_filter(url, text): | def escapedlink_filter(url, text): | ||||||
|     return "<a href='{}'>{}</a>".format(url, escape(text)) |     return "<a href='{}'>{}</a>".format(url, escape(text)) | ||||||
|  |  | ||||||
|  |  | ||||||
| @jinjia.app_template_filter('uuidfilter') | @jinjia.app_template_filter('uuidfilter') | ||||||
| def uuidfilter(var): | def uuidfilter(var): | ||||||
|     return uuid4() |     return uuid4() | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ | |||||||
|  |  | ||||||
| from __future__ import division, print_function, unicode_literals | from __future__ import division, print_function, unicode_literals | ||||||
|  |  | ||||||
|  | from datetime import datetime | ||||||
| from .services.background_scheduler import BackgroundScheduler | from .services.background_scheduler import BackgroundScheduler | ||||||
| from .tasks.database import TaskReconnectDatabase | from .tasks.database import TaskReconnectDatabase | ||||||
| from .tasks.thumbnail import TaskSyncCoverThumbnailCache, TaskGenerateCoverThumbnails | from .tasks.thumbnail import TaskSyncCoverThumbnailCache, TaskGenerateCoverThumbnails | ||||||
| @@ -26,8 +27,10 @@ from .tasks.thumbnail import TaskSyncCoverThumbnailCache, TaskGenerateCoverThumb | |||||||
| def register_jobs(): | def register_jobs(): | ||||||
|     scheduler = BackgroundScheduler() |     scheduler = BackgroundScheduler() | ||||||
|  |  | ||||||
|     # Generate 100 book cover thumbnails every 5 minutes |     # Generate up to 1000 book covers daily | ||||||
|     scheduler.add_task(user=None, task=lambda: TaskGenerateCoverThumbnails(limit=100), trigger='cron', minute='*/5') |     generate_thumbnails_task = scheduler.add_task(user=None, task=lambda: TaskGenerateCoverThumbnails(limit=1000), | ||||||
|  |                                                   trigger='interval', days=1) | ||||||
|  |     generate_thumbnails_task.modify(next_run_time=datetime.now()) | ||||||
|  |  | ||||||
|     # Cleanup book cover cache every 6 hours |     # Cleanup book cover cache every 6 hours | ||||||
|     scheduler.add_task(user=None, task=lambda: TaskSyncCoverThumbnailCache(), trigger='cron', minute='15', hour='*/6') |     scheduler.add_task(user=None, task=lambda: TaskSyncCoverThumbnailCache(), trigger='cron', minute='15', hour='*/6') | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ class BackgroundScheduler: | |||||||
|         return cls._instance |         return cls._instance | ||||||
|  |  | ||||||
|     def add(self, func, trigger, **trigger_args): |     def add(self, func, trigger, **trigger_args): | ||||||
|         self.scheduler.add_job(func=func, trigger=trigger, **trigger_args) |         return self.scheduler.add_job(func=func, trigger=trigger, **trigger_args) | ||||||
|  |  | ||||||
|     def add_task(self, user, task, trigger, **trigger_args): |     def add_task(self, user, task, trigger, **trigger_args): | ||||||
|         def scheduled_task(): |         def scheduled_task(): | ||||||
| @@ -49,4 +49,4 @@ class BackgroundScheduler: | |||||||
|             self.log.info('Running scheduled task in background: ' + worker_task.name + ': ' + worker_task.message) |             self.log.info('Running scheduled task in background: ' + worker_task.name + ': ' + worker_task.message) | ||||||
|             WorkerThread.add(user, worker_task) |             WorkerThread.add(user, worker_task) | ||||||
|  |  | ||||||
|         self.add(func=scheduled_task, trigger=trigger, **trigger_args) |         return self.add(func=scheduled_task, trigger=trigger, **trigger_args) | ||||||
|   | |||||||
| @@ -37,6 +37,7 @@ except (ImportError, RuntimeError) as e: | |||||||
|  |  | ||||||
| THUMBNAIL_RESOLUTION_1X = 1 | THUMBNAIL_RESOLUTION_1X = 1 | ||||||
| THUMBNAIL_RESOLUTION_2X = 2 | THUMBNAIL_RESOLUTION_2X = 2 | ||||||
|  | THUMBNAIL_RESOLUTION_3X = 3 | ||||||
|  |  | ||||||
|  |  | ||||||
| class TaskGenerateCoverThumbnails(CalibreTask): | class TaskGenerateCoverThumbnails(CalibreTask): | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| {% macro book_cover_image(book, thumbnails, title) -%} | {% macro book_cover_image(book, thumbnails, title=None) -%} | ||||||
|     {%- set book_title = book.title if book.title else book.name -%} |     {%- set book_title = book.title if book.title else book.name -%} | ||||||
|     {%- set book_title = title if title else book_title -%} |     {%- set book_title = title if title else book_title -%} | ||||||
|     {% set srcset = thumbnails|get_book_thumbnail_srcset if thumbnails|length else '' %} |     {% set srcset = thumbnails|get_book_thumbnail_srcset if thumbnails|length else '' %} | ||||||
|   | |||||||
| @@ -532,7 +532,7 @@ class Thumbnail(Base): | |||||||
|     resolution = Column(SmallInteger, default=1) |     resolution = Column(SmallInteger, default=1) | ||||||
|     filename = Column(String, default=filename) |     filename = Column(String, default=filename) | ||||||
|     generated_at = Column(DateTime, default=lambda: datetime.datetime.utcnow()) |     generated_at = Column(DateTime, default=lambda: datetime.datetime.utcnow()) | ||||||
|     expiration = Column(DateTime, default=lambda: datetime.datetime.utcnow() + datetime.timedelta(days=30)) |     expiration = Column(DateTime, default=lambda: datetime.datetime.utcnow() + datetime.timedelta(days=90)) | ||||||
|  |  | ||||||
|  |  | ||||||
| # Add missing tables during migration of database | # Add missing tables during migration of database | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								cps/web.py
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								cps/web.py
									
									
									
									
									
								
							| @@ -416,7 +416,7 @@ def render_books_list(data, sort, book_id, page): | |||||||
|                                                                 db.Books.id == db.books_series_link.c.book, |                                                                 db.Books.id == db.books_series_link.c.book, | ||||||
|                                                                 db.Series) |                                                                 db.Series) | ||||||
|  |  | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         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"), page=website, thumbnails=thumbnails) |                                      title=_(u"Books"), page=website, thumbnails=thumbnails) | ||||||
|  |  | ||||||
| @@ -467,7 +467,7 @@ def render_hot_books(page): | |||||||
|                 ub.delete_download(book.Downloads.book_id) |                 ub.delete_download(book.Downloads.book_id) | ||||||
|         numBooks = entries.__len__() |         numBooks = entries.__len__() | ||||||
|         pagination = Pagination(page, config.config_books_per_page, numBooks) |         pagination = Pagination(page, config.config_books_per_page, numBooks) | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         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)"), page="hot", thumbnails=thumbnails) |                                      title=_(u"Hot Books (Most Downloaded)"), page="hot", thumbnails=thumbnails) | ||||||
|     else: |     else: | ||||||
| @@ -498,7 +498,7 @@ def render_downloaded_books(page, order, user_id): | |||||||
|                 ub.delete_download(book.id) |                 ub.delete_download(book.id) | ||||||
|         user = ub.session.query(ub.User).filter(ub.User.id == user_id).first() |         user = ub.session.query(ub.User).filter(ub.User.id == user_id).first() | ||||||
|  |  | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', |         return render_title_template('index.html', | ||||||
|                                      random=random, |                                      random=random, | ||||||
|                                      entries=entries, |                                      entries=entries, | ||||||
| @@ -551,7 +551,7 @@ def render_publisher_books(page, book_id, order): | |||||||
|                                                                 db.books_series_link, |                                                                 db.books_series_link, | ||||||
|                                                                 db.Books.id == db.books_series_link.c.book, |                                                                 db.Books.id == db.books_series_link.c.book, | ||||||
|                                                                 db.Series) |                                                                 db.Series) | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=book_id, |         return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=book_id, | ||||||
|                                      title=_(u"Publisher: %(name)s", name=publisher.name), page="publisher", |                                      title=_(u"Publisher: %(name)s", name=publisher.name), page="publisher", | ||||||
|                                      thumbnails=thumbnails) |                                      thumbnails=thumbnails) | ||||||
| @@ -566,7 +566,7 @@ def render_series_books(page, book_id, order): | |||||||
|                                                                 db.Books, |                                                                 db.Books, | ||||||
|                                                                 db.Books.series.any(db.Series.id == book_id), |                                                                 db.Books.series.any(db.Series.id == book_id), | ||||||
|                                                                 [order[0]]) |                                                                 [order[0]]) | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, |         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, | ||||||
|                                      title=_(u"Series: %(serie)s", serie=name.name), page="series", |                                      title=_(u"Series: %(serie)s", serie=name.name), page="series", | ||||||
|                                      thumbnails=thumbnails) |                                      thumbnails=thumbnails) | ||||||
| @@ -581,7 +581,7 @@ def render_ratings_books(page, book_id, order): | |||||||
|                                                             db.Books.ratings.any(db.Ratings.id == book_id), |                                                             db.Books.ratings.any(db.Ratings.id == book_id), | ||||||
|                                                             [order[0]]) |                                                             [order[0]]) | ||||||
|     if name and name.rating <= 10: |     if name and name.rating <= 10: | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, |         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, | ||||||
|                                      title=_(u"Rating: %(rating)s stars", rating=int(name.rating / 2)), page="ratings", |                                      title=_(u"Rating: %(rating)s stars", rating=int(name.rating / 2)), page="ratings", | ||||||
|                                      thumbnails=thumbnails) |                                      thumbnails=thumbnails) | ||||||
| @@ -596,7 +596,7 @@ def render_formats_books(page, book_id, order): | |||||||
|                                                                 db.Books, |                                                                 db.Books, | ||||||
|                                                                 db.Books.data.any(db.Data.format == book_id.upper()), |                                                                 db.Books.data.any(db.Data.format == book_id.upper()), | ||||||
|                                                                 [order[0]]) |                                                                 [order[0]]) | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, |         return render_title_template('index.html', random=random, pagination=pagination, entries=entries, id=book_id, | ||||||
|                                      title=_(u"File format: %(format)s", format=name.format), page="formats", |                                      title=_(u"File format: %(format)s", format=name.format), page="formats", | ||||||
|                                      thumbnails=thumbnails) |                                      thumbnails=thumbnails) | ||||||
| @@ -614,7 +614,7 @@ def render_category_books(page, book_id, order): | |||||||
|                                                                 db.books_series_link, |                                                                 db.books_series_link, | ||||||
|                                                                 db.Books.id == db.books_series_link.c.book, |                                                                 db.Books.id == db.books_series_link.c.book, | ||||||
|                                                                 db.Series) |                                                                 db.Series) | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=book_id, |         return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=book_id, | ||||||
|                                      title=_(u"Category: %(name)s", name=name.name), page="category", |                                      title=_(u"Category: %(name)s", name=name.name), page="category", | ||||||
|                                      thumbnails=thumbnails) |                                      thumbnails=thumbnails) | ||||||
| @@ -635,7 +635,7 @@ def render_language_books(page, name, order): | |||||||
|                                                             db.Books, |                                                             db.Books, | ||||||
|                                                             db.Books.languages.any(db.Languages.lang_code == name), |                                                             db.Books.languages.any(db.Languages.lang_code == name), | ||||||
|                                                             [order[0]]) |                                                             [order[0]]) | ||||||
|     thumbnails = get_thumbnails_for_books(entries + random if random else entries) |     thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|     return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=name, |     return render_title_template('index.html', random=random, entries=entries, pagination=pagination, id=name, | ||||||
|                                  title=_(u"Language: %(name)s", name=lang_name), page="language", thumbnails=thumbnails) |                                  title=_(u"Language: %(name)s", name=lang_name), page="language", thumbnails=thumbnails) | ||||||
|  |  | ||||||
| @@ -688,7 +688,7 @@ def render_read_books(page, are_read, as_xml=False, order=None): | |||||||
|             name = _(u'Unread Books') + ' (' + str(pagination.total_count) + ')' |             name = _(u'Unread Books') + ' (' + str(pagination.total_count) + ')' | ||||||
|             pagename = "unread" |             pagename = "unread" | ||||||
|  |  | ||||||
|         thumbnails = get_thumbnails_for_books(entries + random if random else entries) |         thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|         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, page=pagename, thumbnails=thumbnails) |                                      title=name, page=pagename, thumbnails=thumbnails) | ||||||
|  |  | ||||||
| @@ -713,7 +713,7 @@ def render_archived_books(page, order): | |||||||
|  |  | ||||||
|     name = _(u'Archived Books') + ' (' + str(len(archived_book_ids)) + ')' |     name = _(u'Archived Books') + ' (' + str(len(archived_book_ids)) + ')' | ||||||
|     pagename = "archived" |     pagename = "archived" | ||||||
|     thumbnails = get_thumbnails_for_books(entries + random if random else entries) |     thumbnails = get_thumbnails_for_books(entries + random if type(random) is list else entries) | ||||||
|     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, page=pagename, thumbnails=thumbnails) |                                  title=name, page=pagename, thumbnails=thumbnails) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 mmonkey
					mmonkey