diff --git a/cps/editbooks.py b/cps/editbooks.py
index e217ebd9..dd506fa6 100644
--- a/cps/editbooks.py
+++ b/cps/editbooks.py
@@ -26,6 +26,7 @@ from datetime import datetime
import json
from shutil import copyfile
from uuid import uuid4
+from markupsafe import escape
try:
from lxml.html.clean import clean_html
except ImportError:
@@ -663,9 +664,9 @@ def upload_single_file(request, book, book_id):
return redirect(url_for('web.show_book', book_id=book.id))
# Queue uploader info
- uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=book.title)
- WorkerThread.add(current_user.name, TaskUpload(
- "" + uploadText + ""))
+ link = '{}'.format(url_for('web.show_book', book_id=book.id), escape(book.title))
+ uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=link)
+ WorkerThread.add(current_user.name, TaskUpload(uploadText))
return uploader.process(
saved_filename, *os.path.splitext(requested_file.filename),
@@ -1038,9 +1039,9 @@ def upload():
gdriveutils.updateGdriveCalibreFromLocal()
if error:
flash(error, category="error")
- uploadText=_(u"File %(file)s uploaded", file=title)
- WorkerThread.add(current_user.name, TaskUpload(
- "" + uploadText + ""))
+ link = '{}'.format(url_for('web.show_book', book_id=book_id), escape(title))
+ uploadText = _(u"File %(file)s uploaded", file=link)
+ WorkerThread.add(current_user.name, TaskUpload(uploadText))
if len(request.files.getlist("btn-upload")) < 2:
if current_user.role_edit() or current_user.role_admin():
diff --git a/cps/helper.py b/cps/helper.py
index 56b71c65..d3e0dbbb 100644
--- a/cps/helper.py
+++ b/cps/helper.py
@@ -100,8 +100,8 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
settings = dict()
link = '{}'.format(url_for('web.show_book', book_id=book.id), escape(book.title)) # prevent xss
txt = u"{} -> {}: {}".format(
- old_book_format,
- new_book_format,
+ old_book_format.upper(),
+ new_book_format.upper(),
link)
settings['old_book_format'] = old_book_format
settings['new_book_format'] = new_book_format
@@ -216,9 +216,11 @@ def send_mail(book_id, book_format, convert, kindle_mail, calibrepath, user_id):
for entry in iter(book.data):
if entry.format.upper() == book_format.upper():
converted_file_name = entry.name + '.' + book_format.lower()
+ link = '{}'.format(url_for('web.show_book', book_id=book_id), escape(book.title))
+ EmailText = _(u"%(book)s send to Kindle", book=link)
WorkerThread.add(user_id, TaskEmail(_(u"Send to Kindle"), book.path, converted_file_name,
config.get_mail_settings(), kindle_mail,
- _(u"E-mail: %(book)s", book=book.title), _(u'This e-mail has been sent via Calibre-Web.')))
+ EmailText, _(u'This e-mail has been sent via Calibre-Web.')))
return
return _(u"The requested file could not be read. Maybe wrong permissions?")
diff --git a/cps/services/gmail.py b/cps/services/gmail.py
index 9380121a..baada1f8 100644
--- a/cps/services/gmail.py
+++ b/cps/services/gmail.py
@@ -61,7 +61,7 @@ def get_user_info(credentials):
return user_info.get('email', "")
def send_messsage(token, msg):
- log.debug("Start sending email via Gmail")
+ log.debug("Start sending e-mail via Gmail")
creds = Credentials(
token=token['token'],
refresh_token=token['refresh_token'],
@@ -80,4 +80,4 @@ def send_messsage(token, msg):
body = {'raw': raw}
(service.users().messages().send(userId='me', body=body).execute())
- log.debug("Email send successfully via Gmail")
+ log.debug("E-mail send successfully via Gmail")
diff --git a/cps/static/js/table.js b/cps/static/js/table.js
index 60d1a957..9fa28281 100644
--- a/cps/static/js/table.js
+++ b/cps/static/js/table.js
@@ -36,10 +36,10 @@ $(function() {
async: true,
timeout: 900,
success: function (data) {
- $('#table').bootstrapTable("load", data);
+ $('#tasktable').bootstrapTable("load", data);
}
});
- }, 2000);
+ }, 1000);
}
$("#books-table").on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table",
diff --git a/cps/tasks/convert.py b/cps/tasks/convert.py
index 2e2a51d8..56cc7076 100644
--- a/cps/tasks/convert.py
+++ b/cps/tasks/convert.py
@@ -5,6 +5,7 @@ import re
from glob import glob
from shutil import copyfile
+from markupsafe import escape
from sqlalchemy.exc import SQLAlchemyError
@@ -13,6 +14,7 @@ from cps import db
from cps import logger, config
from cps.subproc_wrapper import process_open
from flask_babel import gettext as _
+from flask import url_for
from cps.tasks.mail import TaskEmail
from cps import gdriveutils
@@ -24,6 +26,7 @@ class TaskConvert(CalibreTask):
super(TaskConvert, self).__init__(taskMessage)
self.file_path = file_path
self.bookid = bookid
+ self.title = ""
self.settings = settings
self.kindle_mail = kindle_mail
self.user = user
@@ -35,6 +38,7 @@ class TaskConvert(CalibreTask):
if config.config_use_google_drive:
worker_db = db.CalibreDB(expire_on_commit=False)
cur_book = worker_db.get_book(self.bookid)
+ self.title = cur_book.title
data = worker_db.get_book_format(self.bookid, self.settings['old_book_format'])
df = gdriveutils.getFileFromEbooksFolder(cur_book.path,
data.name + "." + self.settings['old_book_format'].lower())
@@ -66,12 +70,13 @@ class TaskConvert(CalibreTask):
# if we're sending to kindle after converting, create a one-off task and run it immediately
# todo: figure out how to incorporate this into the progress
try:
+ EmailText = _(u"%(book)s send to Kindle", book=escape(self.title))
worker_thread.add(self.user, TaskEmail(self.settings['subject'],
self.results["path"],
filename,
self.settings,
self.kindle_mail,
- self.settings['subject'],
+ EmailText,
self.settings['body'],
internal=True)
)
@@ -93,8 +98,9 @@ class TaskConvert(CalibreTask):
local_db.get_book_format(self.bookid, self.settings['new_book_format']):
log.info("Book id %d already converted to %s", book_id, format_new_ext)
cur_book = local_db.get_book(book_id)
+ self.title = cur_book.title
self.results['path'] = file_path
- self.results['title'] = cur_book.title
+ self.results['title'] = self.title
self._handleSuccess()
local_db.session.close()
return os.path.basename(file_path + format_new_ext)
@@ -130,7 +136,8 @@ class TaskConvert(CalibreTask):
local_db.session.close()
return
self.results['path'] = cur_book.path
- self.results['title'] = cur_book.title
+ self.title = cur_book.title
+ self.results['title'] = self.title
if not config.config_use_google_drive:
self._handleSuccess()
return os.path.basename(file_path + format_new_ext)
diff --git a/cps/tasks/mail.py b/cps/tasks/mail.py
index f19231ec..292114d5 100644
--- a/cps/tasks/mail.py
+++ b/cps/tasks/mail.py
@@ -143,7 +143,7 @@ class TaskEmail(CalibreTask):
self.send_gmail_email(msg)
except MemoryError as e:
log.debug_or_exception(e)
- self._handleError(u'MemoryError sending email: {}'.format(str(e)))
+ self._handleError(u'MemoryError sending e-mail: {}'.format(str(e)))
except (smtplib.SMTPException, smtplib.SMTPAuthenticationError) as e:
log.debug_or_exception(e)
if hasattr(e, "smtp_error"):
@@ -154,13 +154,13 @@ class TaskEmail(CalibreTask):
text = '\n'.join(e.args)
else:
text = ''
- self._handleError(u'Smtplib Error sending email: {}'.format(text))
+ self._handleError(u'Smtplib Error sending e-mail: {}'.format(text))
except socket.error as e:
log.debug_or_exception(e)
- self._handleError(u'Socket Error sending email: {}'.format(e.strerror))
+ self._handleError(u'Socket Error sending e-mail: {}'.format(e.strerror))
except Exception as ex:
log.debug_or_exception(ex)
- self._handleError(u'Error sending email: {}'.format(ex))
+ self._handleError(u'Error sending e-mail: {}'.format(ex))
def send_standard_email(self, msg):
@@ -173,7 +173,7 @@ class TaskEmail(CalibreTask):
org_smtpstderr = smtplib.stderr
smtplib.stderr = logger.StderrLogger('worker.smtp')
- log.debug("Start sending email")
+ log.debug("Start sending e-mail")
if use_ssl == 2:
self.asyncSMTP = EmailSSL(self.settings["mail_server"], self.settings["mail_port"],
timeout=timeout)
@@ -196,7 +196,7 @@ class TaskEmail(CalibreTask):
self.asyncSMTP.sendmail(self.settings["mail_from"], self.recipent, fp.getvalue())
self.asyncSMTP.quit()
self._handleSuccess()
- log.debug("Email send successfully")
+ log.debug("E-mail send successfully")
if sys.version_info < (3, 0):
smtplib.stderr = org_smtpstderr
@@ -258,7 +258,7 @@ class TaskEmail(CalibreTask):
@property
def name(self):
- return "Email"
+ return "E-mail"
def __str__(self):
return "{}, {}".format(self.name, self.subject)