Tie visibility of upload buttons to upload right only

This commit is contained in:
Ozzie Isaacs 2021-11-24 17:35:09 +01:00
parent ec7c2db971
commit 7f9da94a18
5 changed files with 340 additions and 164 deletions

View File

@ -67,7 +67,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)

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>