Add configurable auto-conversion on upload

pull/3020/head
Connor Demille 2 months ago
parent becb84a73d
commit 7992b22150

@ -1772,6 +1772,7 @@ def _configuration_update_helper():
reboot_required |= _config_checkbox_int(to_save, "config_kobo_sync")
_config_int(to_save, "config_external_port")
_config_checkbox_int(to_save, "config_kobo_proxy")
_config_string(to_save, "config_auto_convert_to_format")
if "config_upload_formats" in to_save:
to_save["config_upload_formats"] = ','.join(

@ -144,6 +144,7 @@ class _Settings(_Base):
config_binariesdir = Column(String, default=None)
config_calibre = Column(String)
config_rarfile_location = Column(String, default=None)
config_auto_convert_to_format = Column(String, default=None)
config_upload_formats = Column(String, default=','.join(constants.EXTENSIONS_UPLOAD))
config_unicode_filename = Column(Boolean, default=False)
config_embed_metadata = Column(Boolean, default=True)

@ -305,6 +305,24 @@ def upload():
WorkerThread.add(current_user.name, TaskUpload(upload_text, escape(title)))
helper.add_book_to_thumbnail_cache(book_id)
book_format_from = meta.extension.upper()[1:]
if (
config.config_auto_convert_to_format and
config.config_auto_convert_to_format.upper() != meta.extension.lower()
):
book_format_to = config.config_auto_convert_to_format.upper()
rtn = helper.convert_book_format(book_id,
config.get_book_path(),
book_format_from,
book_format_to,
current_user.name)
if rtn is None:
flash(_("Book successfully queued for converting to %(book_format)s",
book_format=book_format_to),
category="success")
else:
flash(_("There was an error converting this book: %(res)s", res=rtn), category="error")
if len(request.files.getlist("btn-upload")) < 2:
if current_user.role_edit() or current_user.role_admin():
resp = {"location": url_for('edit-book.show_edit_book', book_id=book_id)}

@ -111,6 +111,14 @@
<input type="checkbox" id="config_uploading" data-control="upload_settings" name="config_uploading" {% if config.config_uploading %}checked{% endif %}>
<label for="config_uploading">{{_('Enable Uploads')}} {{_('(Please ensure that users also have upload permissions)')}}</label>
</div>
<div class="form-group">
<label for="config_auto_convert_to_format">{{_('Automatically convert ebooks to format (leave blank to disable)')}}</label>
<select name="config_auto_convert_to_format" id="config_auto_convert_to_format" class="form-control">
{% for format in config.config_upload_formats.split(",") %}
<option value="{{ format }}"{% if config.config_auto_convert_to_format.lower() == format.lower() %} selected{% endif %}>{{ format }}</option>
{% endfor %}
</select>
</div>
<div data-related="upload_settings">
<div class="form-group">
<label for="config_upload_formats">{{_('Allowed Upload Fileformats')}}</label>

Loading…
Cancel
Save