mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-25 02:57:22 +00:00
Merge branch 'master' into Develop
This commit is contained in:
commit
89223760e6
@ -683,6 +683,7 @@ def _configuration_update_helper():
|
|||||||
reboot_required |= reboot
|
reboot_required |= reboot
|
||||||
# Rarfile Content configuration
|
# Rarfile Content configuration
|
||||||
_config_string(to_save, "config_rarfile_location")
|
_config_string(to_save, "config_rarfile_location")
|
||||||
|
if "config_rarfile_location" in to_save:
|
||||||
unrar_status = helper.check_unrar(config.config_rarfile_location)
|
unrar_status = helper.check_unrar(config.config_rarfile_location)
|
||||||
if unrar_status:
|
if unrar_status:
|
||||||
return _configuration_result(unrar_status, gdriveError)
|
return _configuration_result(unrar_status, gdriveError)
|
||||||
|
@ -77,7 +77,6 @@ class _Settings(_Base):
|
|||||||
config_uploading = Column(SmallInteger, default=0)
|
config_uploading = Column(SmallInteger, default=0)
|
||||||
config_anonbrowse = Column(SmallInteger, default=0)
|
config_anonbrowse = Column(SmallInteger, default=0)
|
||||||
config_public_reg = Column(SmallInteger, default=0)
|
config_public_reg = Column(SmallInteger, default=0)
|
||||||
config_register_email = Column(SmallInteger, default=0)
|
|
||||||
config_remote_login = Column(Boolean, default=False)
|
config_remote_login = Column(Boolean, default=False)
|
||||||
config_kobo_sync = Column(Boolean, default=False)
|
config_kobo_sync = Column(Boolean, default=False)
|
||||||
|
|
||||||
|
@ -572,8 +572,7 @@ class CalibreDB(threading.Thread):
|
|||||||
authorterms = re.split("[, ]+", term)
|
authorterms = re.split("[, ]+", term)
|
||||||
for authorterm in authorterms:
|
for authorterm in authorterms:
|
||||||
q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%")))
|
q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%")))
|
||||||
|
return self.session.query(Books).filter(self.common_filters(True)).filter(
|
||||||
return self.session.query(Books).filter(self.common_filters()).filter(
|
|
||||||
or_(Books.tags.any(func.lower(Tags.name).ilike("%" + term + "%")),
|
or_(Books.tags.any(func.lower(Tags.name).ilike("%" + term + "%")),
|
||||||
Books.series.any(func.lower(Series.name).ilike("%" + term + "%")),
|
Books.series.any(func.lower(Series.name).ilike("%" + term + "%")),
|
||||||
Books.authors.any(and_(*q)),
|
Books.authors.any(and_(*q)),
|
||||||
|
@ -278,7 +278,7 @@ def render_edit_book(book_id):
|
|||||||
|
|
||||||
# Determine what formats don't already exist
|
# Determine what formats don't already exist
|
||||||
if config.config_converterpath:
|
if config.config_converterpath:
|
||||||
allowed_conversion_formats = constants.EXTENSIONS_CONVERT.copy()
|
allowed_conversion_formats = constants.EXTENSIONS_CONVERT[:]
|
||||||
for file in book.data:
|
for file in book.data:
|
||||||
if file.format.lower() in allowed_conversion_formats:
|
if file.format.lower() in allowed_conversion_formats:
|
||||||
allowed_conversion_formats.remove(file.format.lower())
|
allowed_conversion_formats.remove(file.format.lower())
|
||||||
|
@ -31,8 +31,6 @@ from datetime import datetime, timedelta
|
|||||||
from tempfile import gettempdir
|
from tempfile import gettempdir
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from babel import Locale as LC
|
|
||||||
from babel.core import UnknownLocaleError
|
|
||||||
from babel.dates import format_datetime
|
from babel.dates import format_datetime
|
||||||
from babel.units import format_unit
|
from babel.units import format_unit
|
||||||
from flask import send_from_directory, make_response, redirect, abort
|
from flask import send_from_directory, make_response, redirect, abort
|
||||||
@ -56,6 +54,7 @@ except ImportError:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from PIL import Image as PILImage
|
from PIL import Image as PILImage
|
||||||
|
from PIL import UnidentifiedImageError
|
||||||
use_PIL = True
|
use_PIL = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
use_PIL = False
|
use_PIL = False
|
||||||
@ -532,8 +531,19 @@ def get_book_cover_internal(book, use_generic_cover_on_failure):
|
|||||||
|
|
||||||
# saves book cover from url
|
# saves book cover from url
|
||||||
def save_cover_from_url(url, book_path):
|
def save_cover_from_url(url, book_path):
|
||||||
img = requests.get(url, timeout=10) # ToDo: Error Handling
|
try:
|
||||||
|
img = requests.get(url, timeout=(10, 200)) # ToDo: Error Handling
|
||||||
|
img.raise_for_status()
|
||||||
return save_cover(img, book_path)
|
return save_cover(img, book_path)
|
||||||
|
except (requests.exceptions.HTTPError,
|
||||||
|
requests.exceptions.ConnectionError,
|
||||||
|
requests.exceptions.Timeout) as ex:
|
||||||
|
log.info(u'Cover Download Error %s', ex)
|
||||||
|
return False, _("Error Downloading Cover")
|
||||||
|
except UnidentifiedImageError as ex:
|
||||||
|
log.info(u'File Format Error %s', ex)
|
||||||
|
return False, _("Cover Format Error")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def save_cover_from_filestorage(filepath, saved_filename, img):
|
def save_cover_from_filestorage(filepath, saved_filename, img):
|
||||||
@ -768,7 +778,7 @@ def get_download_link(book_id, book_format, client):
|
|||||||
book_format = book_format.split(".")[0]
|
book_format = book_format.split(".")[0]
|
||||||
book = calibre_db.get_filtered_book(book_id)
|
book = calibre_db.get_filtered_book(book_id)
|
||||||
if book:
|
if book:
|
||||||
data1 = data = calibre_db.get_book_format(book.id, book_format.upper())
|
data1 = calibre_db.get_book_format(book.id, book_format.upper())
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404)
|
||||||
if data1:
|
if data1:
|
||||||
|
@ -157,12 +157,12 @@ def create_access_log(log_file, log_name, formatter):
|
|||||||
if log_file == DEFAULT_ACCESS_LOG:
|
if log_file == DEFAULT_ACCESS_LOG:
|
||||||
raise
|
raise
|
||||||
file_handler = RotatingFileHandler(DEFAULT_ACCESS_LOG, maxBytes=50000, backupCount=2)
|
file_handler = RotatingFileHandler(DEFAULT_ACCESS_LOG, maxBytes=50000, backupCount=2)
|
||||||
log_file = "access.log"
|
log_file = ""
|
||||||
|
|
||||||
file_handler.setFormatter(formatter)
|
file_handler.setFormatter(formatter)
|
||||||
access_log.addHandler(file_handler)
|
access_log.addHandler(file_handler)
|
||||||
return access_log, \
|
return access_log, \
|
||||||
"access.log" if _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) == DEFAULT_ACCESS_LOG else log_file
|
"" if _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) == DEFAULT_ACCESS_LOG else log_file
|
||||||
|
|
||||||
|
|
||||||
# Enable logging of smtp lib debug output
|
# Enable logging of smtp lib debug output
|
||||||
|
@ -57,7 +57,7 @@ def connect(key=None, secret=None, enabled=True):
|
|||||||
|
|
||||||
def get_author_info(author_name):
|
def get_author_info(author_name):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
author_info = None # _AUTHORS_CACHE.get(author_name, None)
|
author_info = _AUTHORS_CACHE.get(author_name, None)
|
||||||
if author_info:
|
if author_info:
|
||||||
if now < author_info._timestamp + _CACHE_TIMEOUT:
|
if now < author_info._timestamp + _CACHE_TIMEOUT:
|
||||||
return author_info
|
return author_info
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if title == "Series" %}
|
{% if data == "series" %}
|
||||||
<button class="update-view btn btn-primary" href="#" data-target="series_view" data-view="grid">Grid</button>
|
<button class="update-view btn btn-primary" href="#" data-target="series_view" data-view="grid">Grid</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
22
cps/web.py
22
cps/web.py
@ -589,7 +589,7 @@ def get_languages_json():
|
|||||||
@login_required_if_no_ano
|
@login_required_if_no_ano
|
||||||
def get_matching_tags():
|
def get_matching_tags():
|
||||||
tag_dict = {'tags': []}
|
tag_dict = {'tags': []}
|
||||||
q = calibre_db.session.query(db.Books)
|
q = calibre_db.session.query(db.Books).filter(calibre_db.common_filters(True))
|
||||||
calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
|
calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
|
||||||
author_input = request.args.get('author_name') or ''
|
author_input = request.args.get('author_name') or ''
|
||||||
title_input = request.args.get('book_title') or ''
|
title_input = request.args.get('book_title') or ''
|
||||||
@ -657,7 +657,7 @@ def books_list(data, sort, book_id, page):
|
|||||||
abort(404)
|
abort(404)
|
||||||
elif data == "discover":
|
elif data == "discover":
|
||||||
if current_user.check_visibility(constants.SIDEBAR_RANDOM):
|
if current_user.check_visibility(constants.SIDEBAR_RANDOM):
|
||||||
entries, __, pagination = calibre_db.calibre_db.fill_indexpage(page, db.Books, True, [func.randomblob(2)])
|
entries, __, pagination = calibre_db.fill_indexpage(page, db.Books, True, [func.randomblob(2)])
|
||||||
pagination = Pagination(1, config.config_books_per_page, config.config_books_per_page)
|
pagination = Pagination(1, config.config_books_per_page, config.config_books_per_page)
|
||||||
return render_title_template('discover.html', entries=entries, pagination=pagination, id=book_id,
|
return render_title_template('discover.html', entries=entries, pagination=pagination, id=book_id,
|
||||||
title=_(u"Discover (Random Books)"), page="discover")
|
title=_(u"Discover (Random Books)"), page="discover")
|
||||||
@ -1022,7 +1022,7 @@ def advanced_search():
|
|||||||
# Build custom columns names
|
# Build custom columns names
|
||||||
cc = get_cc_columns(filter_config_custom_read=True)
|
cc = get_cc_columns(filter_config_custom_read=True)
|
||||||
calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
|
calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
|
||||||
q = calibre_db.session.query(db.Books).filter(calibre_db.common_filters()).order_by(db.Books.sort)
|
q = calibre_db.session.query(db.Books).filter(calibre_db.common_filters(True)).order_by(db.Books.sort)
|
||||||
|
|
||||||
include_tag_inputs = request.args.getlist('include_tag')
|
include_tag_inputs = request.args.getlist('include_tag')
|
||||||
exclude_tag_inputs = request.args.getlist('exclude_tag')
|
exclude_tag_inputs = request.args.getlist('exclude_tag')
|
||||||
@ -1641,8 +1641,8 @@ def profile():
|
|||||||
def read_book(book_id, book_format):
|
def read_book(book_id, book_format):
|
||||||
book = calibre_db.get_filtered_book(book_id)
|
book = calibre_db.get_filtered_book(book_id)
|
||||||
if not book:
|
if not book:
|
||||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error")
|
||||||
log.debug(u"Error opening eBook. File does not exist or file is not accessible:")
|
log.debug(u"Error opening eBook. File does not exist or file is not accessible")
|
||||||
return redirect(url_for("web.index"))
|
return redirect(url_for("web.index"))
|
||||||
|
|
||||||
# check if book has bookmark
|
# check if book has bookmark
|
||||||
@ -1681,8 +1681,8 @@ def read_book(book_id, book_format):
|
|||||||
# if book_format.lower() == fileext:
|
# if book_format.lower() == fileext:
|
||||||
# return render_title_template('readcbr.html', comicfile=book_id,
|
# return render_title_template('readcbr.html', comicfile=book_id,
|
||||||
# extension=fileext, title=_(u"Read a Book"), book=book)
|
# extension=fileext, title=_(u"Read a Book"), book=book)
|
||||||
log.debug(u"Error opening eBook. File does not exist or file is not accessible:")
|
log.debug(u"Error opening eBook. File does not exist or file is not accessible")
|
||||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible."), category="error")
|
flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error")
|
||||||
return redirect(url_for("web.index"))
|
return redirect(url_for("web.index"))
|
||||||
|
|
||||||
|
|
||||||
@ -1693,8 +1693,8 @@ def show_book(book_id):
|
|||||||
if entries:
|
if entries:
|
||||||
for index in range(0, len(entries.languages)):
|
for index in range(0, len(entries.languages)):
|
||||||
try:
|
try:
|
||||||
entries.languages[index].language_name = LC.parse(entries.languages[index].lang_code).get_language_name(
|
entries.languages[index].language_name = LC.parse(entries.languages[index].lang_code)\
|
||||||
get_locale())
|
.get_language_name(get_locale())
|
||||||
except UnknownLocaleError:
|
except UnknownLocaleError:
|
||||||
entries.languages[index].language_name = _(
|
entries.languages[index].language_name = _(
|
||||||
isoLanguages.get(part3=entries.languages[index].lang_code).name)
|
isoLanguages.get(part3=entries.languages[index].lang_code).name)
|
||||||
@ -1743,6 +1743,6 @@ def show_book(book_id):
|
|||||||
is_xhr=request.headers.get('X-Requested-With')=='XMLHttpRequest', title=entries.title, books_shelfs=book_in_shelfs,
|
is_xhr=request.headers.get('X-Requested-With')=='XMLHttpRequest', title=entries.title, books_shelfs=book_in_shelfs,
|
||||||
have_read=have_read, is_archived=is_archived, kindle_list=kindle_list, reader_list=reader_list, page="book")
|
have_read=have_read, is_archived=is_archived, kindle_list=kindle_list, reader_list=reader_list, page="book")
|
||||||
else:
|
else:
|
||||||
log.debug(u"Error opening eBook. File does not exist or file is not accessible:")
|
log.debug(u"Error opening eBook. File does not exist or file is not accessible")
|
||||||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error")
|
||||||
return redirect(url_for("web.index"))
|
return redirect(url_for("web.index"))
|
||||||
|
@ -24,7 +24,10 @@ import smtplib
|
|||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
import threading
|
import threading
|
||||||
|
try:
|
||||||
import queue
|
import queue
|
||||||
|
except ImportError:
|
||||||
|
import Queue as queue
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@ -278,18 +281,6 @@ class WorkerThread(threading.Thread):
|
|||||||
self.doLock.acquire()
|
self.doLock.acquire()
|
||||||
index = self.current
|
index = self.current
|
||||||
self.doLock.release()
|
self.doLock.release()
|
||||||
'''dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
|
|
||||||
engine = create_engine('sqlite://',
|
|
||||||
echo=False,
|
|
||||||
isolation_level="SERIALIZABLE",
|
|
||||||
connect_args={'check_same_thread': True})
|
|
||||||
engine.execute("attach database '{}' as calibre;".format(dbpath))
|
|
||||||
conn = engine.connect()
|
|
||||||
Session = scoped_session(sessionmaker(autocommit=False,
|
|
||||||
autoflush=False,
|
|
||||||
bind=engine))
|
|
||||||
w_session = Session()
|
|
||||||
engine.execute("attach database '{}' as calibre;".format(dbpath))'''
|
|
||||||
file_path = self.queue[index]['file_path']
|
file_path = self.queue[index]['file_path']
|
||||||
book_id = self.queue[index]['bookid']
|
book_id = self.queue[index]['bookid']
|
||||||
format_old_ext = u'.' + self.queue[index]['settings']['old_book_format'].lower()
|
format_old_ext = u'.' + self.queue[index]['settings']['old_book_format'].lower()
|
||||||
|
989
messages.pot
989
messages.pot
File diff suppressed because it is too large
Load Diff
@ -36,17 +36,17 @@
|
|||||||
<div class="col-xs-12 col-sm-6">
|
<div class="col-xs-12 col-sm-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;">
|
<div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;">
|
||||||
<p class='text-justify attribute'><strong>Start Time: </strong>2020-05-23 12:52:51</p>
|
<p class='text-justify attribute'><strong>Start Time: </strong>2020-05-29 07:01:47</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 col-md-6 col-sm-offset-3">
|
<div class="col-xs-6 col-md-6 col-sm-offset-3">
|
||||||
<p class='text-justify attribute'><strong>Stop Time: </strong>2020-05-23 13:50:07</p>
|
<p class='text-justify attribute'><strong>Stop Time: </strong>2020-05-29 08:01:43</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 col-md-6 col-sm-offset-3">
|
<div class="col-xs-6 col-md-6 col-sm-offset-3">
|
||||||
<p class='text-justify attribute'><strong>Duration: </strong>48:28 min</p>
|
<p class='text-justify attribute'><strong>Duration: </strong>50:44 min</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -442,8 +442,8 @@
|
|||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_edit_additional_books.test_edit_additional_books</td>
|
<td>test_edit_additional_books.test_edit_additional_books</td>
|
||||||
<td class="text-center">3</td>
|
<td class="text-center">3</td>
|
||||||
<td class="text-center">2</td>
|
<td class="text-center">3</td>
|
||||||
<td class="text-center">1</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
@ -462,33 +462,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='ft4.2' class='none bg-danger'>
|
<tr id='pt4.2' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_metadata_cbt</div>
|
<div class='testcase'>test_upload_metadata_cbt</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft4.2')">FAIL</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id='div_ft4.2' class="popup_window test_output" style="display:none;">
|
|
||||||
<div class='close_button pull-right'>
|
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
|
||||||
onclick="document.getElementById('div_ft4.2').style.display='none'"><span
|
|
||||||
aria-hidden="true">×</span></button>
|
|
||||||
</div>
|
|
||||||
<div class="text-left pull-left">
|
|
||||||
<pre class="text-left">Traceback (most recent call last):
|
|
||||||
File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_additional_books.py", line 88, in test_upload_metadata_cbt
|
|
||||||
self.assertEqual('Test 执 to', details['title'])
|
|
||||||
AssertionError: 'Test 执 to' != 'book'
|
|
||||||
- Test 执 to
|
|
||||||
+ book</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
@ -505,13 +483,13 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_edit_books.test_edit_books</td>
|
<td>test_edit_books.test_edit_books</td>
|
||||||
|
<td class="text-center">33</td>
|
||||||
<td class="text-center">30</td>
|
<td class="text-center">30</td>
|
||||||
<td class="text-center">27</td>
|
|
||||||
<td class="text-center">1</td>
|
<td class="text-center">1</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">2</td>
|
<td class="text-center">2</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a onclick="showClassDetail('c5', 30)">Detail</a>
|
<a onclick="showClassDetail('c5', 33)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -564,7 +542,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.6' class='hiddenRow bg-success'>
|
<tr id='pt5.6' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_custom_rating</div>
|
<div class='testcase'>test_edit_custom_categories</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -573,7 +551,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.7' class='hiddenRow bg-success'>
|
<tr id='pt5.7' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_custom_single_select</div>
|
<div class='testcase'>test_edit_custom_float</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -582,7 +560,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.8' class='hiddenRow bg-success'>
|
<tr id='pt5.8' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_custom_text</div>
|
<div class='testcase'>test_edit_custom_int</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -591,7 +569,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.9' class='hiddenRow bg-success'>
|
<tr id='pt5.9' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_language</div>
|
<div class='testcase'>test_edit_custom_rating</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -600,42 +578,25 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.10' class='hiddenRow bg-success'>
|
<tr id='pt5.10' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_publisher</div>
|
<div class='testcase'>test_edit_custom_single_select</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='st5.11' class='none bg-warning'>
|
<tr id='pt5.11' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_publishing_date</div>
|
<div class='testcase'>test_edit_custom_text</div>
|
||||||
</td>
|
|
||||||
<td colspan='6'>
|
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st5.11')">SKIP</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id='div_st5.11' class="popup_window test_output" style="display:none;">
|
|
||||||
<div class='close_button pull-right'>
|
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
|
||||||
onclick="document.getElementById('div_st5.11').style.display='none'"><span
|
|
||||||
aria-hidden="true">×</span></button>
|
|
||||||
</div>
|
|
||||||
<div class="text-left pull-left">
|
|
||||||
<pre class="text-left">Not Implemented</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt5.12' class='hiddenRow bg-success'>
|
<tr id='pt5.12' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_rating</div>
|
<div class='testcase'>test_edit_language</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -644,35 +605,26 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.13' class='hiddenRow bg-success'>
|
<tr id='pt5.13' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_series</div>
|
<div class='testcase'>test_edit_publisher</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt5.14' class='hiddenRow bg-success'>
|
<tr id='st5.14' class='none bg-warning'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_edit_title</div>
|
<div class='testcase'>test_edit_publishing_date</div>
|
||||||
</td>
|
|
||||||
<td colspan='6' align='center'>PASS</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='st5.15' class='none bg-warning'>
|
|
||||||
<td>
|
|
||||||
<div class='testcase'>test_rename_uppercase_lowercase</div>
|
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6'>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st5.15')">SKIP</a>
|
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st5.14')">SKIP</a>
|
||||||
</div>
|
</div>
|
||||||
<!--css div popup start-->
|
<!--css div popup start-->
|
||||||
<div id='div_st5.15' class="popup_window test_output" style="display:none;">
|
<div id='div_st5.14' class="popup_window test_output" style="display:none;">
|
||||||
<div class='close_button pull-right'>
|
<div class='close_button pull-right'>
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
||||||
onclick="document.getElementById('div_st5.15').style.display='none'"><span
|
onclick="document.getElementById('div_st5.14').style.display='none'"><span
|
||||||
aria-hidden="true">×</span></button>
|
aria-hidden="true">×</span></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-left pull-left">
|
<div class="text-left pull-left">
|
||||||
@ -686,9 +638,18 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt5.15' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_edit_rating</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt5.16' class='hiddenRow bg-success'>
|
<tr id='pt5.16' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_author</div>
|
<div class='testcase'>test_edit_series</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -697,25 +658,42 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.17' class='hiddenRow bg-success'>
|
<tr id='pt5.17' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_functions</div>
|
<div class='testcase'>test_edit_title</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt5.18' class='hiddenRow bg-success'>
|
<tr id='st5.18' class='none bg-warning'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_language</div>
|
<div class='testcase'>test_rename_uppercase_lowercase</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6'>
|
||||||
|
<div class="text-center">
|
||||||
|
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st5.18')">SKIP</a>
|
||||||
|
</div>
|
||||||
|
<!--css div popup start-->
|
||||||
|
<div id='div_st5.18' class="popup_window test_output" style="display:none;">
|
||||||
|
<div class='close_button pull-right'>
|
||||||
|
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
||||||
|
onclick="document.getElementById('div_st5.18').style.display='none'"><span
|
||||||
|
aria-hidden="true">×</span></button>
|
||||||
|
</div>
|
||||||
|
<div class="text-left pull-left">
|
||||||
|
<pre class="text-left">Not Implemented</pre>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
|
<!--css div popup end-->
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt5.19' class='hiddenRow bg-success'>
|
<tr id='pt5.19' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_publisher</div>
|
<div class='testcase'>test_typeahead_author</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -724,7 +702,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.20' class='hiddenRow bg-success'>
|
<tr id='pt5.20' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_series</div>
|
<div class='testcase'>test_typeahead_functions</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -733,7 +711,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.21' class='hiddenRow bg-success'>
|
<tr id='pt5.21' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_typeahead_tag</div>
|
<div class='testcase'>test_typeahead_language</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -742,7 +720,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.22' class='hiddenRow bg-success'>
|
<tr id='pt5.22' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_cbr</div>
|
<div class='testcase'>test_typeahead_publisher</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -751,7 +729,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.23' class='hiddenRow bg-success'>
|
<tr id='pt5.23' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_cbt</div>
|
<div class='testcase'>test_typeahead_series</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -760,7 +738,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.24' class='hiddenRow bg-success'>
|
<tr id='pt5.24' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_cbz</div>
|
<div class='testcase'>test_typeahead_tag</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -769,7 +747,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.25' class='hiddenRow bg-success'>
|
<tr id='pt5.25' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_epub</div>
|
<div class='testcase'>test_upload_book_cbr</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -778,7 +756,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.26' class='hiddenRow bg-success'>
|
<tr id='pt5.26' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_fb2</div>
|
<div class='testcase'>test_upload_book_cbt</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -787,7 +765,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.27' class='hiddenRow bg-success'>
|
<tr id='pt5.27' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_lit</div>
|
<div class='testcase'>test_upload_book_cbz</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -796,7 +774,7 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
<tr id='pt5.28' class='hiddenRow bg-success'>
|
<tr id='pt5.28' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_mobi</div>
|
<div class='testcase'>test_upload_book_epub</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -804,6 +782,33 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
|
|
||||||
<tr id='pt5.29' class='hiddenRow bg-success'>
|
<tr id='pt5.29' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_upload_book_fb2</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt5.30' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_upload_book_lit</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt5.31' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_upload_book_mobi</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt5.32' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_book_pdf</div>
|
<div class='testcase'>test_upload_book_pdf</div>
|
||||||
</td>
|
</td>
|
||||||
@ -812,24 +817,24 @@ AssertionError: 'Test 执 to' != 'book'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='ft5.30' class='none bg-danger'>
|
<tr id='ft5.33' class='none bg-danger'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_upload_cover_hdd</div>
|
<div class='testcase'>test_upload_cover_hdd</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6'>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft5.30')">FAIL</a>
|
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft5.33')">FAIL</a>
|
||||||
</div>
|
</div>
|
||||||
<!--css div popup start-->
|
<!--css div popup start-->
|
||||||
<div id='div_ft5.30' class="popup_window test_output" style="display:none;">
|
<div id='div_ft5.33' class="popup_window test_output" style="display:none;">
|
||||||
<div class='close_button pull-right'>
|
<div class='close_button pull-right'>
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
||||||
onclick="document.getElementById('div_ft5.30').style.display='none'"><span
|
onclick="document.getElementById('div_ft5.33').style.display='none'"><span
|
||||||
aria-hidden="true">×</span></button>
|
aria-hidden="true">×</span></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-left pull-left">
|
<div class="text-left pull-left">
|
||||||
<pre class="text-left">Traceback (most recent call last):
|
<pre class="text-left">Traceback (most recent call last):
|
||||||
File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_books.py", line 662, in test_upload_cover_hdd
|
File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_books.py", line 735, in test_upload_cover_hdd
|
||||||
self.assertTrue(False,"Browser-Cache Problem: Old Cover is displayed instead of New Cover")
|
self.assertTrue(False,"Browser-Cache Problem: Old Cover is displayed instead of New Cover")
|
||||||
AssertionError: False is not true : Browser-Cache Problem: Old Cover is displayed instead of New Cover</pre>
|
AssertionError: False is not true : Browser-Cache Problem: Old Cover is displayed instead of New Cover</pre>
|
||||||
</div>
|
</div>
|
||||||
@ -1112,8 +1117,8 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye
|
|||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_kobo_sync.test_kobo_sync</td>
|
<td>test_kobo_sync.test_kobo_sync</td>
|
||||||
<td class="text-center">8</td>
|
<td class="text-center">8</td>
|
||||||
<td class="text-center">7</td>
|
<td class="text-center">8</td>
|
||||||
<td class="text-center">1</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
@ -1168,31 +1173,11 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='ft10.6' class='none bg-danger'>
|
<tr id='pt10.6' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_sync_shelf</div>
|
<div class='testcase'>test_sync_shelf</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft10.6')">FAIL</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id='div_ft10.6' class="popup_window test_output" style="display:none;">
|
|
||||||
<div class='close_button pull-right'>
|
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
|
||||||
onclick="document.getElementById('div_ft10.6').style.display='none'"><span
|
|
||||||
aria-hidden="true">×</span></button>
|
|
||||||
</div>
|
|
||||||
<div class="text-left pull-left">
|
|
||||||
<pre class="text-left">Traceback (most recent call last):
|
|
||||||
File "/home/matthias/Entwicklung/calibre-web-test/test/test_kobo_sync.py", line 323, in test_sync_shelf
|
|
||||||
self.assertEqual(1, len(data[0]['ChangedTag']['Tag']['Items']))
|
|
||||||
AssertionError: 1 != 0</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
@ -1314,13 +1299,13 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_logging.test_logging</td>
|
<td>test_logging.test_logging</td>
|
||||||
|
<td class="text-center">7</td>
|
||||||
<td class="text-center">6</td>
|
<td class="text-center">6</td>
|
||||||
<td class="text-center">4</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">1</td>
|
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">1</td>
|
<td class="text-center">1</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a onclick="showClassDetail('c12', 6)">Detail</a>
|
<a onclick="showClassDetail('c12', 7)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -1328,7 +1313,7 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
<tr id='pt12.1' class='hiddenRow bg-success'>
|
<tr id='pt12.1' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_debug_log</div>
|
<div class='testcase'>test_access_log_recover</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -1336,6 +1321,15 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
|
|
||||||
<tr id='pt12.2' class='hiddenRow bg-success'>
|
<tr id='pt12.2' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_debug_log</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt12.3' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_failed_login</div>
|
<div class='testcase'>test_failed_login</div>
|
||||||
</td>
|
</td>
|
||||||
@ -1344,19 +1338,19 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='st12.3' class='none bg-warning'>
|
<tr id='st12.4' class='none bg-warning'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_failed_register</div>
|
<div class='testcase'>test_failed_register</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6'>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st12.3')">SKIP</a>
|
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st12.4')">SKIP</a>
|
||||||
</div>
|
</div>
|
||||||
<!--css div popup start-->
|
<!--css div popup start-->
|
||||||
<div id='div_st12.3' class="popup_window test_output" style="display:none;">
|
<div id='div_st12.4' class="popup_window test_output" style="display:none;">
|
||||||
<div class='close_button pull-right'>
|
<div class='close_button pull-right'>
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
||||||
onclick="document.getElementById('div_st12.3').style.display='none'"><span
|
onclick="document.getElementById('div_st12.4').style.display='none'"><span
|
||||||
aria-hidden="true">×</span></button>
|
aria-hidden="true">×</span></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-left pull-left">
|
<div class="text-left pull-left">
|
||||||
@ -1370,7 +1364,7 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt12.4' class='hiddenRow bg-success'>
|
<tr id='pt12.5' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_logfile_change</div>
|
<div class='testcase'>test_logfile_change</div>
|
||||||
</td>
|
</td>
|
||||||
@ -1379,36 +1373,16 @@ AssertionError: 1 != 0</pre>
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='ft12.5' class='none bg-danger'>
|
<tr id='pt12.6' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_logfile_recover</div>
|
<div class='testcase'>test_logfile_recover</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6'>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft12.5')">FAIL</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id='div_ft12.5' class="popup_window test_output" style="display:none;">
|
|
||||||
<div class='close_button pull-right'>
|
|
||||||
<button type="button" class="close" aria-label="Close" onfocus='this.blur();'
|
|
||||||
onclick="document.getElementById('div_ft12.5').style.display='none'"><span
|
|
||||||
aria-hidden="true">×</span></button>
|
|
||||||
</div>
|
|
||||||
<div class="text-left pull-left">
|
|
||||||
<pre class="text-left">Traceback (most recent call last):
|
|
||||||
File "/home/matthias/Entwicklung/calibre-web-test/test/test_logging.py", line 137, in test_logfile_recover
|
|
||||||
self.assertTrue(logpath=="", "logfile config value is not empty after reseting to default")
|
|
||||||
AssertionError: False is not true : logfile config value is not empty after reseting to default</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt12.6' class='hiddenRow bg-success'>
|
<tr id='pt12.7' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_logviewer</div>
|
<div class='testcase'>test_logviewer</div>
|
||||||
</td>
|
</td>
|
||||||
@ -1935,13 +1909,13 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_updater.test_updater</td>
|
<td>test_updater.test_updater</td>
|
||||||
|
<td class="text-center">8</td>
|
||||||
<td class="text-center">7</td>
|
<td class="text-center">7</td>
|
||||||
<td class="text-center">6</td>
|
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">1</td>
|
<td class="text-center">1</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a onclick="showClassDetail('c18', 7)">Detail</a>
|
<a onclick="showClassDetail('c18', 8)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -2027,6 +2001,15 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt18.8' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_reconnect_database</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_user_template.test_user_template</td>
|
<td>test_user_template.test_user_template</td>
|
||||||
@ -2216,13 +2199,13 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr class="result['header']['style']">
|
<tr class="result['header']['style']">
|
||||||
<td>test_visiblilitys.calibre_web_visibilitys</td>
|
<td>test_visiblilitys.calibre_web_visibilitys</td>
|
||||||
<td class="text-center">28</td>
|
<td class="text-center">30</td>
|
||||||
<td class="text-center">28</td>
|
<td class="text-center">30</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a onclick="showClassDetail('c20', 28)">Detail</a>
|
<a onclick="showClassDetail('c20', 30)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -2329,7 +2312,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.12' class='hiddenRow bg-success'>
|
<tr id='pt20.12' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_admin_change_visibility_rated</div>
|
<div class='testcase'>test_admin_change_visibility_random</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2338,7 +2321,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.13' class='hiddenRow bg-success'>
|
<tr id='pt20.13' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_admin_change_visibility_rating</div>
|
<div class='testcase'>test_admin_change_visibility_rated</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2347,7 +2330,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.14' class='hiddenRow bg-success'>
|
<tr id='pt20.14' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_admin_change_visibility_read</div>
|
<div class='testcase'>test_admin_change_visibility_rating</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2356,7 +2339,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.15' class='hiddenRow bg-success'>
|
<tr id='pt20.15' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_admin_change_visibility_series</div>
|
<div class='testcase'>test_admin_change_visibility_read</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2365,7 +2348,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.16' class='hiddenRow bg-success'>
|
<tr id='pt20.16' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_allow_columns</div>
|
<div class='testcase'>test_admin_change_visibility_series</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2374,7 +2357,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.17' class='hiddenRow bg-success'>
|
<tr id='pt20.17' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_allow_tags</div>
|
<div class='testcase'>test_allow_columns</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2383,7 +2366,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.18' class='hiddenRow bg-success'>
|
<tr id='pt20.18' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_authors_max_settings</div>
|
<div class='testcase'>test_allow_tags</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2392,7 +2375,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.19' class='hiddenRow bg-success'>
|
<tr id='pt20.19' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_checked_logged_in</div>
|
<div class='testcase'>test_archive_books</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2401,7 +2384,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.20' class='hiddenRow bg-success'>
|
<tr id='pt20.20' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_hide_custom_column</div>
|
<div class='testcase'>test_authors_max_settings</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2410,7 +2393,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.21' class='hiddenRow bg-success'>
|
<tr id='pt20.21' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_link_column_to_read_status</div>
|
<div class='testcase'>test_checked_logged_in</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2419,7 +2402,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.22' class='hiddenRow bg-success'>
|
<tr id='pt20.22' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_random_books_available</div>
|
<div class='testcase'>test_hide_custom_column</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2428,7 +2411,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.23' class='hiddenRow bg-success'>
|
<tr id='pt20.23' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_restrict_columns</div>
|
<div class='testcase'>test_link_column_to_read_status</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2437,7 +2420,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.24' class='hiddenRow bg-success'>
|
<tr id='pt20.24' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_restrict_tags</div>
|
<div class='testcase'>test_random_books_available</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2446,7 +2429,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.25' class='hiddenRow bg-success'>
|
<tr id='pt20.25' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_search_functions</div>
|
<div class='testcase'>test_restrict_columns</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2455,7 +2438,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.26' class='hiddenRow bg-success'>
|
<tr id='pt20.26' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_search_string</div>
|
<div class='testcase'>test_restrict_tags</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2464,7 +2447,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='pt20.27' class='hiddenRow bg-success'>
|
<tr id='pt20.27' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_user_email_available</div>
|
<div class='testcase'>test_search_functions</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan='6' align='center'>PASS</td>
|
<td colspan='6' align='center'>PASS</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -2472,6 +2455,24 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
|
|
||||||
<tr id='pt20.28' class='hiddenRow bg-success'>
|
<tr id='pt20.28' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_search_string</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt20.29' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>test_user_email_available</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt20.30' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>test_user_visibility_sidebar</div>
|
<div class='testcase'>test_user_visibility_sidebar</div>
|
||||||
</td>
|
</td>
|
||||||
@ -2482,9 +2483,9 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr id='total_row' class="text-center bg-grey">
|
<tr id='total_row' class="text-center bg-grey">
|
||||||
<td>Total</td>
|
<td>Total</td>
|
||||||
|
<td>218</td>
|
||||||
<td>211</td>
|
<td>211</td>
|
||||||
<td>201</td>
|
<td>1</td>
|
||||||
<td>4</td>
|
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>6</td>
|
<td>6</td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
@ -2634,7 +2635,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>comicapi</th>
|
<th>comicapi</th>
|
||||||
<td>2.1</td>
|
<td>2.1.1</td>
|
||||||
<td>test_edit_additional_books</td>
|
<td>test_edit_additional_books</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -2700,7 +2701,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>SQLAlchemy-Utils</th>
|
<th>SQLAlchemy-Utils</th>
|
||||||
<td>0.36.5</td>
|
<td>0.36.6</td>
|
||||||
<td>test_OAuth_login</td>
|
<td>test_OAuth_login</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -2712,7 +2713,7 @@ AssertionError: False is not true : logfile config value is not empty after rese
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
drawCircle(201, 4, 0, 6);
|
drawCircle(211, 1, 0, 6);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user