Fix Store UI settings in flask session for guest user (#1820)
Updated testresults Fix Filepicker (absolute instead of abs)
This commit is contained in:
parent
a9cedb3fca
commit
0b32738f4e
|
@ -636,7 +636,7 @@ def pathchooser():
|
||||||
"parentdir": parentdir,
|
"parentdir": parentdir,
|
||||||
"type": browse_for,
|
"type": browse_for,
|
||||||
"oldfile": oldfile,
|
"oldfile": oldfile,
|
||||||
"absolute": abs,
|
"absolute": absolute,
|
||||||
}
|
}
|
||||||
return json.dumps(context)
|
return json.dumps(context)
|
||||||
|
|
||||||
|
|
|
@ -227,9 +227,6 @@ class Anonymous(AnonymousUserMixin, UserBase):
|
||||||
self.denied_column_value = data.denied_column_value
|
self.denied_column_value = data.denied_column_value
|
||||||
self.allowed_column_value = data.allowed_column_value
|
self.allowed_column_value = data.allowed_column_value
|
||||||
self.view_settings = data.view_settings
|
self.view_settings = data.view_settings
|
||||||
# Initialize flask_session once
|
|
||||||
if 'view' not in flask_session:
|
|
||||||
flask_session['view']={}
|
|
||||||
|
|
||||||
|
|
||||||
def role_admin(self):
|
def role_admin(self):
|
||||||
|
@ -248,14 +245,18 @@ class Anonymous(AnonymousUserMixin, UserBase):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_view_property(self, page, prop):
|
def get_view_property(self, page, prop):
|
||||||
|
if 'view' in flask_session:
|
||||||
if not flask_session['view'].get(page):
|
if not flask_session['view'].get(page):
|
||||||
return None
|
return None
|
||||||
return flask_session['view'][page].get(prop)
|
return flask_session['view'][page].get(prop)
|
||||||
|
return None
|
||||||
|
|
||||||
def set_view_property(self, page, prop, value):
|
def set_view_property(self, page, prop, value):
|
||||||
|
if 'view' in flask_session:
|
||||||
if not flask_session['view'].get(page):
|
if not flask_session['view'].get(page):
|
||||||
flask_session['view'][page] = dict()
|
flask_session['view'][page] = dict()
|
||||||
flask_session['view'][page][prop] = value
|
flask_session['view'][page][prop] = value
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
# Baseclass representing Shelfs in calibre-web in app.db
|
# Baseclass representing Shelfs in calibre-web in app.db
|
||||||
|
|
|
@ -37,20 +37,20 @@
|
||||||
<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>2021-01-10 18:12:04</p>
|
<p class='text-justify attribute'><strong>Start Time: </strong>2021-01-23 19:48:56</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>2021-01-10 20:39:46</p>
|
<p class='text-justify attribute'><strong>Stop Time: </strong>2021-01-23 22:16:21</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>1h 59 min</p>
|
<p class='text-justify attribute'><strong>Duration: </strong>2h 0 min</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -611,15 +611,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="errorClass">
|
<tr id="su" class="passClass">
|
||||||
<td>TestEbookConvertGDriveKepubify</td>
|
<td>TestEbookConvertGDriveKepubify</td>
|
||||||
<td class="text-center">5</td>
|
<td class="text-center">3</td>
|
||||||
<td class="text-center">1</td>
|
|
||||||
<td class="text-center">1</td>
|
|
||||||
<td class="text-center">3</td>
|
<td class="text-center">3</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('c8', 5)">Detail</a>
|
<a onclick="showClassDetail('c8', 3)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -634,126 +634,20 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="ft8.2" class="none bg-danger">
|
<tr id='pt8.2' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_only</div>
|
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_only</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_ft8.2')">FAIL</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id="div_ft8.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_ft8.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/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify_gdrive.py", line 167, in test_convert_only
|
|
||||||
self.assertTrue(self.check_element_on_page((By.ID, "flash_success")))
|
|
||||||
AssertionError: False is not true</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="et8.3" class="none bg-info">
|
<tr id='pt8.3' class='hiddenRow bg-success'>
|
||||||
<td>
|
|
||||||
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_only</div>
|
|
||||||
</td>
|
|
||||||
<td colspan='6'>
|
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et8.3')">ERROR</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id="div_et8.3" 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_et8.3').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/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify_gdrive.py", line 103, in tearDown
|
|
||||||
self.login('admin', 'admin123')
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 65, in login
|
|
||||||
WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 80, in until
|
|
||||||
raise TimeoutException(message, screen, stacktrace)
|
|
||||||
selenium.common.exceptions.TimeoutException: Message:</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="et8.4" class="none bg-info">
|
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_wrong_excecutable</div>
|
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_wrong_excecutable</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_et8.4')">ERROR</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id="div_et8.4" 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_et8.4').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/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify_gdrive.py", line 123, in test_convert_wrong_excecutable
|
|
||||||
task_len = len(self.check_tasks())
|
|
||||||
TypeError: object of type 'bool' has no len()</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="et8.5" class="none bg-info">
|
|
||||||
<td>
|
|
||||||
<div class='testcase'>TestEbookConvertGDriveKepubify - test_convert_wrong_excecutable</div>
|
|
||||||
</td>
|
|
||||||
<td colspan='6'>
|
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et8.5')">ERROR</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id="div_et8.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_et8.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/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify_gdrive.py", line 103, in tearDown
|
|
||||||
self.login('admin', 'admin123')
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 65, in login
|
|
||||||
WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 80, in until
|
|
||||||
raise TimeoutException(message, screen, stacktrace)
|
|
||||||
selenium.common.exceptions.TimeoutException: Message:</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1593,48 +1487,51 @@ selenium.common.exceptions.TimeoutException: Message:</pre>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="errorClass">
|
<tr id="su" class="failClass">
|
||||||
<td>TestSetupGdrive</td>
|
<td>TestFilePicker</td>
|
||||||
|
<td class="text-center">3</td>
|
||||||
|
<td class="text-center">2</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">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">1</td>
|
|
||||||
<td class="text-center">0</td>
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a onclick="showClassDetail('c15', 1)">Detail</a>
|
<a onclick="showClassDetail('c15', 3)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="et15.1" class="none bg-info">
|
<tr id='pt15.1' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestSetupGdrive - test_config_gdrive</div>
|
<div class='testcase'>TestFilePicker - test_filepicker_all_file</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id="ft15.2" class="none bg-danger">
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>TestFilePicker - test_filepicker_limited_file</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_et15.1')">ERROR</a>
|
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft15.2')">FAIL</a>
|
||||||
</div>
|
</div>
|
||||||
<!--css div popup start-->
|
<!--css div popup start-->
|
||||||
<div id="div_et15.1" class="popup_window test_output" style="display:none;">
|
<div id="div_ft15.2" 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_et15.1').style.display='none'"><span
|
onclick='document.getElementById('div_ft15.2').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/ozzie/Development/calibre-web-test/test/test_gdrive_setup.py", line 160, in test_config_gdrive
|
File "/home/ozzie/Development/calibre-web-test/test/test_filepicker.py", line 48, in test_filepicker_limited_file
|
||||||
auth_button.click()
|
self.assertEqual(CALIBRE_WEB_PATH, element.text)
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
|
AssertionError: '/home/ozzie/Development/calibre-web' != ''
|
||||||
self._execute(Command.CLICK_ELEMENT)
|
- /home/ozzie/Development/calibre-web
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
|
+</pre>
|
||||||
return self._parent.execute(command, params)
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
|
|
||||||
self.error_handler.check_response(response)
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
|
|
||||||
raise exception_class(message, screen, stacktrace)
|
|
||||||
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//127.0.0.1%3A8083/gdrive/authenticate&c=UTF-8&d=Firefox%20kann%20keine%20Verbindung%20zu%20dem%20Server%20unter%20127.0.0.1%3A8083%20aufbauen.</pre>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1644,6 +1541,39 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt15.3' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>TestFilePicker - test_filepicker_new_file</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id="su" class="passClass">
|
||||||
|
<td>TestSetupGdrive</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">0</td>
|
||||||
|
<td class="text-center">
|
||||||
|
<a onclick="showClassDetail('c16', 1)">Detail</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt16.1' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>TestSetupGdrive - test_config_gdrive</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="passClass">
|
<tr id="su" class="passClass">
|
||||||
<td>TestGoodreads</td>
|
<td>TestGoodreads</td>
|
||||||
|
@ -1653,13 +1583,13 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
<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('c16', 3)">Detail</a>
|
<a onclick="showClassDetail('c17', 3)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt16.1' class='hiddenRow bg-success'>
|
<tr id='pt17.1' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestGoodreads - test_author_page</div>
|
<div class='testcase'>TestGoodreads - test_author_page</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1668,7 +1598,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt16.2' class='hiddenRow bg-success'>
|
<tr id='pt17.2' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestGoodreads - test_author_page_invalid</div>
|
<div class='testcase'>TestGoodreads - test_author_page_invalid</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1677,7 +1607,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt16.3' class='hiddenRow bg-success'>
|
<tr id='pt17.3' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestGoodreads - test_goodreads_about</div>
|
<div class='testcase'>TestGoodreads - test_goodreads_about</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1695,13 +1625,13 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
<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('c17', 9)">Detail</a>
|
<a onclick="showClassDetail('c18', 9)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.1' class='hiddenRow bg-success'>
|
<tr id='pt18.1' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_book_download</div>
|
<div class='testcase'>TestKoboSync - test_book_download</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1710,7 +1640,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.2' class='hiddenRow bg-success'>
|
<tr id='pt18.2' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_kobo_about</div>
|
<div class='testcase'>TestKoboSync - test_kobo_about</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1719,7 +1649,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.3' class='hiddenRow bg-success'>
|
<tr id='pt18.3' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_shelves_add_remove_books</div>
|
<div class='testcase'>TestKoboSync - test_shelves_add_remove_books</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1728,7 +1658,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.4' class='hiddenRow bg-success'>
|
<tr id='pt18.4' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_changed_book</div>
|
<div class='testcase'>TestKoboSync - test_sync_changed_book</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1737,7 +1667,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.5' class='hiddenRow bg-success'>
|
<tr id='pt18.5' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_invalid</div>
|
<div class='testcase'>TestKoboSync - test_sync_invalid</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1746,7 +1676,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.6' class='hiddenRow bg-success'>
|
<tr id='pt18.6' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_reading_state</div>
|
<div class='testcase'>TestKoboSync - test_sync_reading_state</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1755,7 +1685,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.7' class='hiddenRow bg-success'>
|
<tr id='pt18.7' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_shelf</div>
|
<div class='testcase'>TestKoboSync - test_sync_shelf</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1764,7 +1694,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.8' class='hiddenRow bg-success'>
|
<tr id='pt18.8' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_unchanged</div>
|
<div class='testcase'>TestKoboSync - test_sync_unchanged</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1773,7 +1703,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt17.9' class='hiddenRow bg-success'>
|
<tr id='pt18.9' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestKoboSync - test_sync_upload</div>
|
<div class='testcase'>TestKoboSync - test_sync_upload</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1791,13 +1721,13 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
<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('c18', 13)">Detail</a>
|
<a onclick="showClassDetail('c19', 13)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.1' class='hiddenRow bg-success'>
|
<tr id='pt19.1' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_SSL</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_SSL</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1806,7 +1736,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.2' class='hiddenRow bg-success'>
|
<tr id='pt19.2' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_SSL_CERTIFICATE</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_SSL_CERTIFICATE</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1815,7 +1745,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.3' class='hiddenRow bg-success'>
|
<tr id='pt19.3' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_STARTTLS</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_STARTTLS</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1824,7 +1754,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.4' class='hiddenRow bg-success'>
|
<tr id='pt19.4' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_fallback_Login</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_fallback_Login</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1833,7 +1763,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.5' class='hiddenRow bg-success'>
|
<tr id='pt19.5' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_import</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_import</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1842,7 +1772,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.6' class='hiddenRow bg-success'>
|
<tr id='pt19.6' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_import_memberfield</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_import_memberfield</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1851,7 +1781,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.7' class='hiddenRow bg-success'>
|
<tr id='pt19.7' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_LDAP_login</div>
|
<div class='testcase'>TestLdapLogin - test_LDAP_login</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1860,7 +1790,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.8' class='hiddenRow bg-success'>
|
<tr id='pt19.8' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_invalid_LDAP</div>
|
<div class='testcase'>TestLdapLogin - test_invalid_LDAP</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1869,7 +1799,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.9' class='hiddenRow bg-success'>
|
<tr id='pt19.9' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_ldap_about</div>
|
<div class='testcase'>TestLdapLogin - test_ldap_about</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1878,7 +1808,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.10' class='hiddenRow bg-success'>
|
<tr id='pt19.10' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_ldap_authentication</div>
|
<div class='testcase'>TestLdapLogin - test_ldap_authentication</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1887,7 +1817,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.11' class='hiddenRow bg-success'>
|
<tr id='pt19.11' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_ldap_kobo_sync</div>
|
<div class='testcase'>TestLdapLogin - test_ldap_kobo_sync</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1896,7 +1826,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.12' class='hiddenRow bg-success'>
|
<tr id='pt19.12' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_ldap_opds_anonymous</div>
|
<div class='testcase'>TestLdapLogin - test_ldap_opds_anonymous</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1905,7 +1835,7 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt18.13' class='hiddenRow bg-success'>
|
<tr id='pt19.13' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLdapLogin - test_ldap_opds_download_book</div>
|
<div class='testcase'>TestLdapLogin - test_ldap_opds_download_book</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -1915,60 +1845,6 @@ selenium.common.exceptions.WebDriverException: Message: Reached error page: abou
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="errorClass">
|
|
||||||
<td>_ErrorHolder</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">0</td>
|
|
||||||
<td class="text-center">
|
|
||||||
<a onclick="showClassDetail('c19', 1)">Detail</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="et19.1" class="none bg-info">
|
|
||||||
<td>
|
|
||||||
<div class='testcase'>tearDownClass (test_ldap)</div>
|
|
||||||
</td>
|
|
||||||
<td colspan='6'>
|
|
||||||
<div class="text-center">
|
|
||||||
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et19.1')">ERROR</a>
|
|
||||||
</div>
|
|
||||||
<!--css div popup start-->
|
|
||||||
<div id="div_et19.1" 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_et19.1').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/ozzie/Development/calibre-web-test/test/test_ldap.py", line 45, in tearDownClass
|
|
||||||
cls.stop_calibre_web()
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 370, in stop_calibre_web
|
|
||||||
cls.driver.find_element_by_id('admin_stop').click()
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
|
|
||||||
return self.find_element(by=By.ID, value=id_)
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
|
|
||||||
return self.execute(Command.FIND_ELEMENT, {
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
|
|
||||||
self.error_handler.check_response(response)
|
|
||||||
File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
|
|
||||||
raise exception_class(message, screen, stacktrace)
|
|
||||||
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="admin_stop"]</pre>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
<!--css div popup end-->
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="skipClass">
|
<tr id="su" class="skipClass">
|
||||||
<td>TestLogging</td>
|
<td>TestLogging</td>
|
||||||
<td class="text-center">7</td>
|
<td class="text-center">7</td>
|
||||||
|
@ -2066,13 +1942,13 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr id="su" class="passClass">
|
<tr id="su" class="passClass">
|
||||||
<td>TestLogin</td>
|
<td>TestLogin</td>
|
||||||
<td class="text-center">13</td>
|
<td class="text-center">14</td>
|
||||||
<td class="text-center">13</td>
|
<td class="text-center">14</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('c21', 13)">Detail</a>
|
<a onclick="showClassDetail('c21', 14)">Detail</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -2187,6 +2063,15 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt21.13' class='hiddenRow bg-success'>
|
<tr id='pt21.13' class='hiddenRow bg-success'>
|
||||||
|
<td>
|
||||||
|
<div class='testcase'>TestLogin - test_proxy_login</div>
|
||||||
|
</td>
|
||||||
|
<td colspan='6' align='center'>PASS</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr id='pt21.14' class='hiddenRow bg-success'>
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestLogin - test_robots</div>
|
<div class='testcase'>TestLogin - test_robots</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -2433,11 +2318,11 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id="su" class="passClass">
|
<tr id="su" class="failClass">
|
||||||
<td>TestReader</td>
|
<td>TestReader</td>
|
||||||
<td class="text-center">5</td>
|
<td class="text-center">5</td>
|
||||||
<td class="text-center">5</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">0</td>
|
<td class="text-center">0</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
|
@ -2483,11 +2368,31 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr id='pt24.5' class='hiddenRow bg-success'>
|
<tr id="ft24.5" class="none bg-danger">
|
||||||
<td>
|
<td>
|
||||||
<div class='testcase'>TestReader - test_txt_reader</div>
|
<div class='testcase'>TestReader - test_txt_reader</div>
|
||||||
</td>
|
</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_ft24.5')">FAIL</a>
|
||||||
|
</div>
|
||||||
|
<!--css div popup start-->
|
||||||
|
<div id="div_ft24.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_ft24.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/ozzie/Development/calibre-web-test/test/test_reader.py", line 61, in test_txt_reader
|
||||||
|
self.assertTrue('hörte' in content.text, 'Encoding of textfile viewer is not respected properly')
|
||||||
|
AssertionError: False is not true : Encoding of textfile viewer is not respected properly</pre>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
|
<!--css div popup end-->
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
@ -3506,10 +3411,10 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<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>297</td>
|
<td>298</td>
|
||||||
<td>284</td>
|
<td>289</td>
|
||||||
<td>1</td>
|
<td>2</td>
|
||||||
<td>5</td>
|
<td>0</td>
|
||||||
<td>7</td>
|
<td>7</td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -3538,7 +3443,7 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>Platform</th>
|
<th>Platform</th>
|
||||||
<td>Linux 5.8.0-36-generic #40~20.04.1-Ubuntu SMP Wed Jan 6 10:15:55 UTC 2021 x86_64 x86_64</td>
|
<td>Linux 5.8.0-40-generic #45~20.04.1-Ubuntu SMP Fri Jan 15 11:35:04 UTC 2021 x86_64 x86_64</td>
|
||||||
<td>Basic</td>
|
<td>Basic</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -3688,7 +3593,7 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>PyYAML</th>
|
<th>PyYAML</th>
|
||||||
<td>5.3.1</td>
|
<td>5.4.1</td>
|
||||||
<td>TestEbookConvertCalibreGDrive</td>
|
<td>TestEbookConvertCalibreGDrive</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -3724,13 +3629,13 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>PyYAML</th>
|
<th>PyYAML</th>
|
||||||
<td>5.3.1</td>
|
<td>5.4.1</td>
|
||||||
<td>TestEbookConvertGDriveKepubify</td>
|
<td>TestEbookConvertGDriveKepubify</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>comicapi</th>
|
<th>comicapi</th>
|
||||||
<td>2.1.2</td>
|
<td>2.1.3</td>
|
||||||
<td>TestEditAdditionalBooks</td>
|
<td>TestEditAdditionalBooks</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -3784,7 +3689,7 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>PyYAML</th>
|
<th>PyYAML</th>
|
||||||
<td>5.3.1</td>
|
<td>5.4.1</td>
|
||||||
<td>TestEditBooksOnGdrive</td>
|
<td>TestEditBooksOnGdrive</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -3814,7 +3719,7 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>PyYAML</th>
|
<th>PyYAML</th>
|
||||||
<td>5.3.1</td>
|
<td>5.4.1</td>
|
||||||
<td>TestSetupGdrive</td>
|
<td>TestSetupGdrive</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -3868,7 +3773,7 @@ selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
drawCircle(284, 1, 5, 7);
|
drawCircle(289, 2, 0, 7);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user