2
0
mirror of https://github.com/janeczku/calibre-web synced 2024-11-02 09:41:02 +00:00
This commit is contained in:
cbartondock 2021-11-27 14:06:36 -05:00
commit 2252d661c0
6 changed files with 353 additions and 169 deletions

View File

@ -19,6 +19,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
__package__ = "cps"
import sys
import os

View File

@ -31,7 +31,6 @@ try:
except ImportError:
pass
# Improve this to check if scholarly is available in a global way, like other pythonic libraries
try:
from scholarly import scholarly
@ -67,7 +66,7 @@ log = logger.create()
def upload_required(f):
@wraps(f)
def inner(*args, **kwargs):
if current_user.role_upload() or current_user.role_admin():
if current_user.role_upload():
return f(*args, **kwargs)
abort(403)
@ -454,7 +453,7 @@ def edit_book_series_index(series_index, book):
if not series_index.replace('.', '', 1).isdigit():
flash(_("%(seriesindex)s is not a valid number, skipping", seriesindex=series_index), category="warning")
return False
if book.series_index != series_index:
if str(book.series_index) != series_index:
book.series_index = series_index
modif_date = True
return modif_date
@ -484,11 +483,11 @@ def edit_book_languages(languages, book, upload=False, invalid=None):
else:
input_l = isoLanguages.get_valid_language_codes(get_locale(), input_languages, unknown_languages)
for l in unknown_languages:
log.error('%s is not a valid language', l)
log.error("'%s' is not a valid language", l)
if isinstance(invalid, list):
invalid.append(l)
else:
flash(_(u"%(langname)s is not a valid language", langname=l), category="warning")
raise ValueError(_(u"'%(langname)s' is not a valid language", langname=l))
# ToDo: Not working correct
if upload and len(input_l) == 1:
# If the language of the file is excluded from the users view, it's not imported, to allow the user to view
@ -848,6 +847,10 @@ def edit_book(book_id):
calibre_db.session.rollback()
flash(error, category="error")
return render_edit_book(book_id)
except ValueError as e:
calibre_db.session.rollback()
flash(str(e), category="error")
return redirect(url_for('web.show_book', book_id=book.id))
except Exception as ex:
log.debug_or_exception(ex)
calibre_db.session.rollback()
@ -944,7 +947,11 @@ def create_book_on_upload(modif_date, meta):
modif_date |= edit_book_series_index(meta.series_id, db_book)
# add languages
modif_date |= edit_book_languages(meta.languages, db_book, upload=True)
invalid=[]
modif_date |= edit_book_languages(meta.languages, db_book, upload=True, invalid=invalid)
if invalid:
for l in invalid:
flash(_(u"'%(langname)s' is not a valid language", langname=l), category="warning")
# handle tags
modif_date |= edit_book_tags(meta.tags, db_book)

View File

@ -98,8 +98,7 @@
<label for="rating">{{_('Rating')}}</label>
<input type="number" name="rating" id="rating" class="rating input-lg" data-clearable="" value="{% if book.ratings %}{{(book.ratings[0].rating / 2)|int}}{% endif %}">
</div>
{% if g.user.role_upload() or g.user.role_admin()%}
{% if g.allow_upload %}
{% if g.user.role_upload() and g.allow_upload %}
<div class="form-group">
<label for="cover_url">{{_('Fetch Cover from URL (JPEG - Image will be downloaded and stored in database)')}}</label>
<input type="text" class="form-control" name="cover_url" id="cover_url" value="">
@ -109,7 +108,6 @@
<div class="upload-cover-input-text" id="upload-cover"></div>
<input id="btn-upload-cover" name="btn-upload-cover" type="file" accept=".jpg, .jpeg, .png, .webp">
</div>
{% endif %}
{% endif %}
<label for="pubdate">{{_('Published Date')}}</label>
<div class="form-group input-group">
@ -197,14 +195,12 @@
</div>
{% endfor %}
{% endif %}
{% if g.user.role_upload() or g.user.role_admin()%}
{% if g.allow_upload %}
{% if g.user.role_upload() and g.allow_upload %}
<div role="group" aria-label="Upload new book format">
<label class="btn btn-primary btn-file" for="btn-upload-format">{{ _('Upload Format') }}</label>
<div class="upload-format-input-text" id="upload-format"></div>
<input id="btn-upload-format" name="btn-upload-format" type="file">
</div>
{% endif %}
{% endif %}
<div class="checkbox">

View File

@ -105,7 +105,7 @@
</div>
<div class="form-group">
<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')}}</label>
<label for="config_uploading">{{_('Enable Uploads')}} {{_('(Please ensure users having also upload rights)')}}</label>
</div>
<div data-related="upload_settings">
<div class="form-group">

View File

@ -58,8 +58,7 @@
{% endif %}
<ul class="nav navbar-nav navbar-right" id="main-nav">
{% if g.user.is_authenticated or g.allow_anonymous %}
{% if g.user.role_upload() or g.user.role_admin()%}
{% if g.allow_upload %}
{% if g.user.role_upload() and g.allow_upload %}
<li>
<form id="form-upload" class="navbar-form" action="{{ url_for('editbook.upload') }}" data-title="{{_('Uploading...')}}" data-footer="{{_('Close')}}" data-failed="{{_('Error')}}" data-message="{{_('Upload done, processing, please wait...')}}" method="post" enctype="multipart/form-data">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
@ -69,7 +68,6 @@
</div>
</form>
</li>
{% endif %}
{% endif %}
{% if not g.user.is_anonymous %}
<li><a id="top_tasks" href="{{url_for('web.get_tasks_status')}}"><span class="glyphicon glyphicon-tasks"></span> <span class="hidden-sm">{{_('Tasks')}}</span></a></li>

View File

@ -37,20 +37,20 @@
<div class="row">
<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>2021-11-22 21:51:33</p>
<p class='text-justify attribute'><strong>Start Time: </strong>2021-11-24 20:41:04</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Stop Time: </strong>2021-11-23 01:35:04</p>
<p class='text-justify attribute'><strong>Stop Time: </strong>2021-11-25 00:24:57</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Duration: </strong>3h 2 min</p>
<p class='text-justify attribute'><strong>Duration: </strong>3h 3 min</p>
</div>
</div>
</div>
@ -102,12 +102,12 @@
</tr>
<tr id="su" class="errorClass">
<tr id="su" class="passClass">
<td>TestAnonymous</td>
<td class="text-center">13</td>
<td class="text-center">12</td>
<td class="text-center">13</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c1', 13)">Detail</a>
@ -224,31 +224,11 @@
<tr id="et1.13" class="none bg-info">
<tr id='pt1.13' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestAnonymous - test_guest_visibility_sidebar</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et1.13')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et1.13" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et1.13').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_anonymous.py&#34;, line 143, in test_guest_visibility_sidebar
self.assertFtest_edit_languagealse(self.check_element_on_page((By.ID, &#34;nav_rand&#34;)))
AttributeError: &#39;TestAnonymous&#39; object has no attribute &#39;assertFtest_edit_languagealse&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@ -901,12 +881,12 @@ AttributeError: &#39;TestAnonymous&#39; object has no attribute &#39;assertFtest
<tr id="su" class="failClass">
<tr id="su" class="errorClass">
<td>TestEditBooks</td>
<td class="text-center">35</td>
<td class="text-center">33</td>
<td class="text-center">1</td>
<td class="text-center">26</td>
<td class="text-center">0</td>
<td class="text-center">8</td>
<td class="text-center">1</td>
<td class="text-center">
<a onclick="showClassDetail('c11', 35)">Detail</a>
@ -1166,98 +1146,26 @@ AttributeError: &#39;TestAnonymous&#39; object has no attribute &#39;assertFtest
<tr id='pt11.27' class='hiddenRow bg-success'>
<tr id="et11.27" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_cbr</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.28' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_cbt</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.29' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_cbz</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.30' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_epub</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.31' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_fb2</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.32' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_lit</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.33' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_mobi</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt11.34' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_book_pdf</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="ft11.35" class="none bg-danger">
<td>
<div class='testcase'>TestEditBooks - test_upload_cover_hdd</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft11.35')">FAIL</a>
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.27')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_ft11.35" class="popup_window test_output" style="display:block;">
<div id="div_et11.27" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft11.35').style.display='none'"><span
onclick="document.getElementById('div_et11.27').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 783, in test_upload_cover_hdd
self.assertGreater(diff(&#39;original.png&#39;, &#39;jpeg.png&#39;, delete_diff_file=True), 0.02)
AssertionError: 0.0 not greater than 0.02</pre>
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 1011, in test_upload_book_cbr
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
@ -1266,6 +1174,218 @@ AssertionError: 0.0 not greater than 0.02</pre>
</tr>
<tr id="et11.28" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_cbt</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.28')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.28" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.28').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 986, in test_upload_book_cbt
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.29" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_cbz</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.29')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.29" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.29').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 961, in test_upload_book_cbz
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.30" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_epub</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.30')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.30" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.30').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 923, in test_upload_book_epub
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.31" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_fb2</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.31')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.31" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.31').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 848, in test_upload_book_fb2
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.32" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_lit</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.32')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.32" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.32').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 873, in test_upload_book_lit
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.33" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_mobi</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.33')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.33" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.33').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 898, in test_upload_book_mobi
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id="et11.34" class="none bg-info">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_pdf</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et11.34')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et11.34" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et11.34').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 823, in test_upload_book_pdf
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id='pt11.35' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooks - test_upload_cover_hdd</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="su" class="passClass">
@ -1445,13 +1565,13 @@ AssertionError: 0.0 not greater than 0.02</pre>
<tr id="su" class="failClass">
<tr id="su" class="errorClass">
<td>TestEditBooksOnGdrive</td>
<td class="text-center">20</td>
<td class="text-center">18</td>
<td class="text-center">17</td>
<td class="text-center">1</td>
<td class="text-center">2</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c13', 20)">Detail</a>
</td>
@ -1603,44 +1723,26 @@ AssertionError: 0.0 not greater than 0.02</pre>
<tr id='pt13.17' class='hiddenRow bg-success'>
<tr id="et13.17" class="none bg-info">
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_upload_book_epub</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id='pt13.18' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_upload_book_lit</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="ft13.19" class="none bg-danger">
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_upload_cover_hdd</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft13.19')">FAIL</a>
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et13.17')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_ft13.19" class="popup_window test_output" style="display:block;">
<div id="div_et13.17" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft13.19').style.display='none'"><span
onclick="document.getElementById('div_et13.17').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 774, in test_upload_cover_hdd
self.assertGreater(diff(&#39;original.png&#39;, &#39;jpeg.png&#39;, delete_diff_file=True), 0.02)
AssertionError: 0.0 not greater than 0.02</pre>
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 844, in test_upload_book_epub
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
@ -1650,6 +1752,44 @@ AssertionError: 0.0 not greater than 0.02</pre>
<tr id="et13.18" class="none bg-info">
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_upload_book_lit</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et13.18')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et13.18" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et13.18').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 820, in test_upload_book_lit
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id='pt13.19' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_upload_cover_hdd</div>
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="ft13.20" class="none bg-danger">
<td>
<div class='testcase'>TestEditBooksOnGdrive - test_watch_metadata</div>
@ -1667,9 +1807,9 @@ AssertionError: 0.0 not greater than 0.02</pre>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 928, in test_watch_metadata
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 929, in test_watch_metadata
self.assertNotIn(&#39;series&#39;, book)
AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;reader&#39;: [], &#39;title&#39;: &#39;testbook&#39;, &#39;author&#39;: [&#39;John Döe&#39;], &#39;rating&#39;: 0, &#39;languages&#39;: [&#39;English&#39;], &#39;identifier&#39;: [], &#39;cover&#39;: &#39;/cover/5?edit=a92e572d-f9d5-45d0-a088-9751aaed41ca&#39;, &#39;tag&#39;: [], &#39;publisher&#39;: [&#39;Randomhäus&#39;], &#39;pubdate&#39;: &#39;Jan 19, 2017&#39;, &#39;comment&#39;: &#39;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Aenean commodo ligula eget dolor.Aenean massa.Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.Nulla consequat massa quis enim.Donec pede justo, fringilla vel, aliquet nec, vulputate&#39;, &#39;add_shelf&#39;: [], &#39;del_shelf&#39;: [], &#39;edit_enable&#39;: True, &#39;kindle&#39;: None, &#39;kindlebtn&#39;: None, &#39;download&#39;: [&#39;EPUB (6.7 kB)&#39;], &#39;read&#39;: False, &#39;archived&#39;: False, &#39;series_all&#39;: &#39;Book 1 of test&#39;, &#39;series_index&#39;: &#39;1&#39;, &#39;series&#39;: &#39;test&#39;, &#39;cust_columns&#39;: []}</pre>
AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;reader&#39;: [], &#39;title&#39;: &#39;testbook&#39;, &#39;author&#39;: [&#39;John Döe&#39;], &#39;rating&#39;: 0, &#39;languages&#39;: [&#39;English&#39;], &#39;identifier&#39;: [], &#39;cover&#39;: &#39;/cover/5?edit=37b525ac-f7df-4630-8811-e9f937dd6c89&#39;, &#39;tag&#39;: [], &#39;publisher&#39;: [&#39;Randomhäus&#39;], &#39;pubdate&#39;: &#39;Jan 19, 2017&#39;, &#39;comment&#39;: &#39;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Aenean commodo ligula eget dolor.Aenean massa.Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.Nulla consequat massa quis enim.Donec pede justo, fringilla vel, aliquet nec, vulputate&#39;, &#39;add_shelf&#39;: [], &#39;del_shelf&#39;: [], &#39;edit_enable&#39;: True, &#39;kindle&#39;: None, &#39;kindlebtn&#39;: None, &#39;download&#39;: [&#39;EPUB (6.7 kB)&#39;], &#39;read&#39;: False, &#39;archived&#39;: False, &#39;series_all&#39;: &#39;Book 1 of test&#39;, &#39;series_index&#39;: &#39;1&#39;, &#39;series&#39;: &#39;test&#39;, &#39;cust_columns&#39;: []}</pre>
</div>
<div class="clearfix"></div>
</div>
@ -1722,12 +1862,12 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
<tr id="su" class="passClass">
<tr id="su" class="errorClass">
<td>TestSSL</td>
<td class="text-center">7</td>
<td class="text-center">7</td>
<td class="text-center">0</td>
<td class="text-center">6</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c15', 7)">Detail</a>
@ -1781,11 +1921,31 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
<tr id='pt15.6' class='hiddenRow bg-success'>
<tr id="et15.6" class="none bg-info">
<td>
<div class='testcase'>TestSSL - test_email_limit</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et15.6')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et15.6" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et15.6').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_email_ssl.py&#34;, line 144, in test_email_limit
upload.send_keys(random_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -2888,12 +3048,12 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
<tr id="su" class="passClass">
<tr id="su" class="errorClass">
<td>TestReader</td>
<td class="text-center">5</td>
<td class="text-center">5</td>
<td class="text-center">0</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">
<a onclick="showClassDetail('c31', 5)">Detail</a>
@ -2929,11 +3089,33 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
<tr id='pt31.4' class='hiddenRow bg-success'>
<tr id="et31.4" class="none bg-info">
<td>
<div class='testcase'>TestReader - test_sound_listener</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et31.4')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et31.4" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et31.4').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 229, in test_sound_listener
self.sound_test(&#39;music.flac&#39;, &#39;Unknown - music&#39;, &#39;0:02&#39;)
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 189, in sound_test
upload.send_keys(upload_file)
AttributeError: &#39;bool&#39; object has no attribute &#39;send_keys&#39;</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -4268,9 +4450,9 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
<tr id='total_row' class="text-center bg-grey">
<td>Total</td>
<td>376</td>
<td>366</td>
<td>3</td>
<td>357</td>
<td>1</td>
<td>12</td>
<td>6</td>
<td>&nbsp;</td>
</tr>
@ -4677,7 +4859,7 @@ AssertionError: &#39;series&#39; unexpectedly found in {&#39;id&#39;: 5, &#39;re
</div>
<script>
drawCircle(366, 3, 1, 6);
drawCircle(357, 1, 12, 6);
showCase(5);
</script>