Merge branch 'Develop'
This commit is contained in:
		
						commit
						e52eb74121
					
				
							
								
								
									
										21
									
								
								cps/comic.py
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								cps/comic.py
									
									
									
									
									
								
							| 
						 | 
					@ -89,12 +89,14 @@ def _extract_cover(tmp_file_name, original_file_extension, rar_executable):
 | 
				
			||||||
    cover_data = extension = None
 | 
					    cover_data = extension = None
 | 
				
			||||||
    if use_comic_meta:
 | 
					    if use_comic_meta:
 | 
				
			||||||
        archive = ComicArchive(tmp_file_name, rar_exe_path=rar_executable)
 | 
					        archive = ComicArchive(tmp_file_name, rar_exe_path=rar_executable)
 | 
				
			||||||
        for index, name in enumerate(archive.getPageNameList()):
 | 
					        name_list = archive.getPageNameList if hasattr(archive, "getPageNameList") else archive.get_page_name_list
 | 
				
			||||||
 | 
					        for index, name in enumerate(name_list()):
 | 
				
			||||||
            ext = os.path.splitext(name)
 | 
					            ext = os.path.splitext(name)
 | 
				
			||||||
            if len(ext) > 1:
 | 
					            if len(ext) > 1:
 | 
				
			||||||
                extension = ext[1].lower()
 | 
					                extension = ext[1].lower()
 | 
				
			||||||
                if extension in cover.COVER_EXTENSIONS:
 | 
					                if extension in cover.COVER_EXTENSIONS:
 | 
				
			||||||
                    cover_data = archive.getPage(index)
 | 
					                    get_page = archive.getPage if hasattr(archive, "getPageNameList") else archive.get_page
 | 
				
			||||||
 | 
					                    cover_data = get_page(index)
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        cover_data, extension = _extract_cover_from_archive(original_file_extension, tmp_file_name, rar_executable)
 | 
					        cover_data, extension = _extract_cover_from_archive(original_file_extension, tmp_file_name, rar_executable)
 | 
				
			||||||
| 
						 | 
					@ -104,16 +106,21 @@ def _extract_cover(tmp_file_name, original_file_extension, rar_executable):
 | 
				
			||||||
def get_comic_info(tmp_file_path, original_file_name, original_file_extension, rar_executable):
 | 
					def get_comic_info(tmp_file_path, original_file_name, original_file_extension, rar_executable):
 | 
				
			||||||
    if use_comic_meta:
 | 
					    if use_comic_meta:
 | 
				
			||||||
        archive = ComicArchive(tmp_file_path, rar_exe_path=rar_executable)
 | 
					        archive = ComicArchive(tmp_file_path, rar_exe_path=rar_executable)
 | 
				
			||||||
        if archive.seemsToBeAComicArchive():
 | 
					        if hasattr(archive, "seemsToBeAComicArchive"):
 | 
				
			||||||
            if archive.hasMetadata(MetaDataStyle.CIX):
 | 
					            seems_archive = archive.seemsToBeAComicArchive
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            seems_archive = archive.seems_to_be_a_comic_archive
 | 
				
			||||||
 | 
					        if seems_archive():
 | 
				
			||||||
 | 
					            has_metadata = archive.hasMetadata if hasattr(archive, "hasMetadata") else archive.has_metadata
 | 
				
			||||||
 | 
					            if has_metadata(MetaDataStyle.CIX):
 | 
				
			||||||
                style = MetaDataStyle.CIX
 | 
					                style = MetaDataStyle.CIX
 | 
				
			||||||
            elif archive.hasMetadata(MetaDataStyle.CBI):
 | 
					            elif has_metadata(MetaDataStyle.CBI):
 | 
				
			||||||
                style = MetaDataStyle.CBI
 | 
					                style = MetaDataStyle.CBI
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                style = None
 | 
					                style = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # if style is not None:
 | 
					            read_metadata = archive.readMetadata if hasattr(archive, "readMetadata") else archive.read_metadata
 | 
				
			||||||
            loaded_metadata = archive.readMetadata(style)
 | 
					            loaded_metadata = read_metadata(style)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            lang = loaded_metadata.language or ""
 | 
					            lang = loaded_metadata.language or ""
 | 
				
			||||||
            loaded_metadata.language = isoLanguages.get_lang3(lang)
 | 
					            loaded_metadata.language = isoLanguages.get_lang3(lang)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ def feed_osd():
 | 
				
			||||||
    return render_xml_template('osd.xml', lang='en-EN')
 | 
					    return render_xml_template('osd.xml', lang='en-EN')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@opds.route("/opds/search", defaults={'query': ""})
 | 
					# @opds.route("/opds/search", defaults={'query': ""})
 | 
				
			||||||
@opds.route("/opds/search/<path:query>")
 | 
					@opds.route("/opds/search/<path:query>")
 | 
				
			||||||
@requires_basic_auth_if_no_ano
 | 
					@requires_basic_auth_if_no_ano
 | 
				
			||||||
def feed_cc_search(query):
 | 
					def feed_cc_search(query):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@
 | 
				
			||||||
    <link rel="search"
 | 
					    <link rel="search"
 | 
				
			||||||
      href="{{url_for('opds.feed_osd')}}"
 | 
					      href="{{url_for('opds.feed_osd')}}"
 | 
				
			||||||
      type="application/opensearchdescription+xml"/>
 | 
					      type="application/opensearchdescription+xml"/>
 | 
				
			||||||
  <link type="application/atom+xml" rel="search" title="{{_('Search')}}" href="{{url_for('opds.feed_cc_search')}}/{searchTerms}" />
 | 
					  <link type="application/atom+xml" rel="search" title="{{_('Search')}}" href="{{url_for('opds.feed_normal_search')}}/{searchTerms}" />
 | 
				
			||||||
  <title>{{instance}}</title>
 | 
					  <title>{{instance}}</title>
 | 
				
			||||||
  <author>
 | 
					  <author>
 | 
				
			||||||
    <name>{{instance}}</name>
 | 
					    <name>{{instance}}</name>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
  <link rel="search"
 | 
					  <link rel="search"
 | 
				
			||||||
      href="{{url_for('opds.feed_osd')}}"
 | 
					      href="{{url_for('opds.feed_osd')}}"
 | 
				
			||||||
      type="application/opensearchdescription+xml"/>
 | 
					      type="application/opensearchdescription+xml"/>
 | 
				
			||||||
  <link type="application/atom+xml" rel="search" title="{{_('Search')}}" href="{{url_for('opds.feed_cc_search')}}/{searchTerms}" />
 | 
					  <link type="application/atom+xml" rel="search" title="{{_('Search')}}" href="{{url_for('opds.feed_normal_search')}}/{searchTerms}" />
 | 
				
			||||||
  <title>{{instance}}</title>
 | 
					  <title>{{instance}}</title>
 | 
				
			||||||
  <author>
 | 
					  <author>
 | 
				
			||||||
    <name>{{instance}}</name>
 | 
					    <name>{{instance}}</name>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
   <Developer>Janeczku</Developer>
 | 
					   <Developer>Janeczku</Developer>
 | 
				
			||||||
   <Contact>https://github.com/janeczku/calibre-web</Contact>
 | 
					   <Contact>https://github.com/janeczku/calibre-web</Contact>
 | 
				
			||||||
   <Url type="text/html"
 | 
					   <Url type="text/html"
 | 
				
			||||||
        template="{{url_for('opds.feed_cc_search')}}/{searchTerms}"/>
 | 
					        template="{{url_for('opds.feed_normal_search')}}/{searchTerms}"/>
 | 
				
			||||||
   <Url type="application/atom+xml"
 | 
					   <Url type="application/atom+xml"
 | 
				
			||||||
        template="{{url_for('opds.feed_normal_search')}}?query={searchTerms}"/>
 | 
					        template="{{url_for('opds.feed_normal_search')}}?query={searchTerms}"/>
 | 
				
			||||||
   <SyndicationRight>open</SyndicationRight>
 | 
					   <SyndicationRight>open</SyndicationRight>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,9 @@
 | 
				
			||||||
APScheduler>=3.6.3,<3.11.0
 | 
					APScheduler>=3.6.3,<3.11.0
 | 
				
			||||||
werkzeug<2.1.0
 | 
					 | 
				
			||||||
Babel>=1.3,<3.0
 | 
					Babel>=1.3,<3.0
 | 
				
			||||||
Flask-Babel>=0.11.1,<3.1.0
 | 
					Flask-Babel>=0.11.1,<3.1.0
 | 
				
			||||||
Flask-Login>=0.3.2,<0.6.3
 | 
					Flask-Login>=0.3.2,<0.6.3
 | 
				
			||||||
Flask-Principal>=0.3.2,<0.5.1
 | 
					Flask-Principal>=0.3.2,<0.5.1
 | 
				
			||||||
Flask>=1.0.2,<2.3.0
 | 
					Flask>=1.0.2,<2.4.0
 | 
				
			||||||
iso-639>=0.4.5,<0.5.0
 | 
					iso-639>=0.4.5,<0.5.0
 | 
				
			||||||
PyPDF>=3.0.0,<3.8.0
 | 
					PyPDF>=3.0.0,<3.8.0
 | 
				
			||||||
pytz>=2016.10
 | 
					pytz>=2016.10
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,15 +39,13 @@ console_scripts =
 | 
				
			||||||
include_package_data = True
 | 
					include_package_data = True
 | 
				
			||||||
install_requires = 
 | 
					install_requires = 
 | 
				
			||||||
	APScheduler>=3.6.3,<3.11.0
 | 
						APScheduler>=3.6.3,<3.11.0
 | 
				
			||||||
	werkzeug<2.1.0
 | 
					 | 
				
			||||||
	Babel>=1.3,<3.0
 | 
						Babel>=1.3,<3.0
 | 
				
			||||||
	Flask-Babel>=0.11.1,<3.1.0
 | 
						Flask-Babel>=0.11.1,<3.1.0
 | 
				
			||||||
	Flask-Login>=0.3.2,<0.6.3
 | 
						Flask-Login>=0.3.2,<0.6.3
 | 
				
			||||||
	Flask-Principal>=0.3.2,<0.5.1
 | 
						Flask-Principal>=0.3.2,<0.5.1
 | 
				
			||||||
	backports_abc>=0.4
 | 
						Flask>=1.0.2,<2.4.0
 | 
				
			||||||
	Flask>=1.0.2,<2.3.0
 | 
					 | 
				
			||||||
	iso-639>=0.4.5,<0.5.0
 | 
						iso-639>=0.4.5,<0.5.0
 | 
				
			||||||
	PyPDF>=3.0.0,<3.6.0
 | 
						PyPDF>=3.0.0,<3.8.0
 | 
				
			||||||
	pytz>=2016.10
 | 
						pytz>=2016.10
 | 
				
			||||||
	requests>=2.11.1,<2.29.0
 | 
						requests>=2.11.1,<2.29.0
 | 
				
			||||||
	SQLAlchemy>=1.3.0,<2.0.0
 | 
						SQLAlchemy>=1.3.0,<2.0.0
 | 
				
			||||||
| 
						 | 
					@ -93,6 +91,7 @@ metadata =
 | 
				
			||||||
	html2text>=2020.1.16,<2022.1.1
 | 
						html2text>=2020.1.16,<2022.1.1
 | 
				
			||||||
	python-dateutil>=2.1,<2.9.0
 | 
						python-dateutil>=2.1,<2.9.0
 | 
				
			||||||
	beautifulsoup4>=4.0.1,<4.12.0
 | 
						beautifulsoup4>=4.0.1,<4.12.0
 | 
				
			||||||
 | 
						faust-cchardet>=2.1.18
 | 
				
			||||||
comics = 
 | 
					comics = 
 | 
				
			||||||
	natsort>=2.2.0,<8.4.0
 | 
						natsort>=2.2.0,<8.4.0
 | 
				
			||||||
	comicapi>=2.2.0,<2.3.0
 | 
						comicapi>=2.2.0,<2.3.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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>2023-04-13 19:29:13</p>
 | 
					            <p class='text-justify attribute'><strong>Start Time: </strong>2023-05-27 20:05:01</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>2023-04-14 09:30:28</p>
 | 
					            <p class='text-justify attribute'><strong>Stop Time: </strong>2023-05-28 03:05:40</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>13h 2 min</p>
 | 
					           <p class='text-justify attribute'><strong>Duration: </strong>5h 54 min</p>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
| 
						 | 
					@ -471,11 +471,11 @@
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="passClass">
 | 
					    <tr id="su" class="failClass">
 | 
				
			||||||
        <td>TestCli</td>
 | 
					        <td>TestCli</td>
 | 
				
			||||||
        <td class="text-center">12</td>
 | 
					        <td class="text-center">12</td>
 | 
				
			||||||
        <td class="text-center">12</td>
 | 
					        <td class="text-center">11</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">
 | 
				
			||||||
| 
						 | 
					@ -503,11 +503,33 @@
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id='pt4.3' class='hiddenRow bg-success'>
 | 
					        <tr id="ft4.3" class="none bg-danger">
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestCli - test_change_password</div>
 | 
					                <div class='testcase'>TestCli - test_change_password</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_ft4.3')">FAIL</a>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <!--css div popup start-->
 | 
				
			||||||
 | 
					                <div id="div_ft4.3" 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_ft4.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_cli.py", line 432, in test_change_password
 | 
				
			||||||
 | 
					    self.check_password_change("admin:aDmin12!", "Password for user 'admin' changed")
 | 
				
			||||||
 | 
					  File "/home/ozzie/Development/calibre-web-test/test/test_cli.py", line 67, in check_password_change
 | 
				
			||||||
 | 
					    self.assertTrue(re.findall(expectation, nextline))
 | 
				
			||||||
 | 
					AssertionError: [] is not true</pre>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="clearfix"></div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <!--css div popup end-->
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -852,89 +874,70 @@
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="errorClass">
 | 
					    <tr id="su" class="passClass">
 | 
				
			||||||
        <td>_ErrorHolder</td>
 | 
					        <td>TestEbookConvertCalibreGDrive</td>
 | 
				
			||||||
        <td class="text-center">1</td>
 | 
					        <td class="text-center">6</td>
 | 
				
			||||||
 | 
					        <td class="text-center">6</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">1</td>
 | 
					 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
            <a onclick="showClassDetail('c9', 1)">Detail</a>
 | 
					            <a onclick="showClassDetail('c9', 6)">Detail</a>
 | 
				
			||||||
        </td>
 | 
					        </td>
 | 
				
			||||||
    </tr>
 | 
					    </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="et9.1" class="none bg-info">
 | 
					        <tr id='pt9.1' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>setUpClass (test_ebook_convert_gdrive)</div>
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_convert_email</div>
 | 
				
			||||||
            </td>
 | 
					            </td>
 | 
				
			||||||
            <td colspan='6'>
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
                <div class="text-center">
 | 
					        </tr>
 | 
				
			||||||
                    <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et9.1')">ERROR</a>
 | 
					    
 | 
				
			||||||
                </div>
 | 
					    
 | 
				
			||||||
                <!--css div popup start-->
 | 
					    
 | 
				
			||||||
                <div id="div_et9.1" class="popup_window test_output" style="display:block;">
 | 
					        <tr id='pt9.2' class='hiddenRow bg-success'>
 | 
				
			||||||
                    <div class='close_button pull-right'>
 | 
					            <td>
 | 
				
			||||||
                        <button type="button" class="close" aria-label="Close" onfocus="this.blur();"
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_convert_failed_and_email</div>
 | 
				
			||||||
                                onclick="document.getElementById('div_et9.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_ebook_convert_gdrive.py", line 38, in setUpClass
 | 
					 | 
				
			||||||
    prepare_gdrive()
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/test/helper_gdrive.py", line 39, in prepare_gdrive
 | 
					 | 
				
			||||||
    copy_fs(OSFS(os.path.join(base_path, 'Calibre_db')), test)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/copy.py", line 50, in copy_fs
 | 
					 | 
				
			||||||
    return copy_fs_if(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/copy.py", line 110, in copy_fs_if
 | 
					 | 
				
			||||||
    return copy_dir_if(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/copy.py", line 450, in copy_dir_if
 | 
					 | 
				
			||||||
    copier.copy(_src_fs, dir_path, _dst_fs, copy_path)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/_bulk.py", line 144, in copy
 | 
					 | 
				
			||||||
    copy_file_internal(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/copy.py", line 281, in copy_file_internal
 | 
					 | 
				
			||||||
    _copy_locked()
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/copy.py", line 272, in _copy_locked
 | 
					 | 
				
			||||||
    dst_fs.upload(dst_path, read_file)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/wrapfs.py", line 510, in upload
 | 
					 | 
				
			||||||
    _fs.upload(_path, file, chunk_size=chunk_size, **options)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/base.py", line 1416, in upload
 | 
					 | 
				
			||||||
    with self.openbin(path, mode="wb", **options) as dst_file:
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/fs/googledrivefs/googledrivefs.py", line 110, in close
 | 
					 | 
				
			||||||
    status, response = request.next_chunk()
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
 | 
					 | 
				
			||||||
    return wrapped(*args, **kwargs)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/googleapiclient/http.py", line 1084, in next_chunk
 | 
					 | 
				
			||||||
    resp, content = http.request(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/google_auth_httplib2.py", line 218, in request
 | 
					 | 
				
			||||||
    response, content = self.http.request(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/httplib2/__init__.py", line 1724, in request
 | 
					 | 
				
			||||||
    (response, content) = self._request(
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/httplib2/__init__.py", line 1444, in _request
 | 
					 | 
				
			||||||
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/httplib2/__init__.py", line 1396, in _conn_request
 | 
					 | 
				
			||||||
    response = conn.getresponse()
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/http/client.py", line 1374, in getresponse
 | 
					 | 
				
			||||||
    response.begin()
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/http/client.py", line 318, in begin
 | 
					 | 
				
			||||||
    version, status, reason = self._read_status()
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/http/client.py", line 279, in _read_status
 | 
					 | 
				
			||||||
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/socket.py", line 705, in readinto
 | 
					 | 
				
			||||||
    return self._sock.recv_into(b)
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/ssl.py", line 1274, in recv_into
 | 
					 | 
				
			||||||
    return self.read(nbytes, buffer)
 | 
					 | 
				
			||||||
  File "/usr/lib/python3.10/ssl.py", line 1130, in read
 | 
					 | 
				
			||||||
    return self._sslobj.read(len, buffer)
 | 
					 | 
				
			||||||
TimeoutError: The read operation timed out</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					            </td>
 | 
				
			||||||
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        <tr id='pt9.3' class='hiddenRow bg-success'>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_convert_only</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        <tr id='pt9.4' class='hiddenRow bg-success'>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_convert_parameter</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        <tr id='pt9.5' class='hiddenRow bg-success'>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_email_failed</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        <tr id='pt9.6' class='hiddenRow bg-success'>
 | 
				
			||||||
 | 
					            <td>
 | 
				
			||||||
 | 
					                <div class='testcase'>TestEbookConvertCalibreGDrive - test_email_only</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					            <td colspan='6' align='center'>PASS</td>
 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -1617,11 +1620,11 @@ TimeoutError: The read operation timed out</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="failClass">
 | 
					    <tr id="su" class="passClass">
 | 
				
			||||||
        <td>TestEditAuthorsGdrive</td>
 | 
					        <td>TestEditAuthorsGdrive</td>
 | 
				
			||||||
        <td class="text-center">6</td>
 | 
					        <td class="text-center">6</td>
 | 
				
			||||||
        <td class="text-center">3</td>
 | 
					        <td class="text-center">6</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">0</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
| 
						 | 
					@ -1640,60 +1643,20 @@ TimeoutError: The read operation timed out</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft15.2" class="none bg-danger">
 | 
					        <tr id='pt15.2' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestEditAuthorsGdrive - test_change_capital_one_author_one_book</div>
 | 
					                <div class='testcase'>TestEditAuthorsGdrive - test_change_capital_one_author_one_book</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_ft15.2')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft15.2" 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_ft15.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_edit_books_author_gdrive.py", line 122, in test_change_capital_one_author_one_book
 | 
					 | 
				
			||||||
    self.assertEqual(200, ret_code)
 | 
					 | 
				
			||||||
AssertionError: 200 != 404</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft15.3" class="none bg-danger">
 | 
					        <tr id='pt15.3' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestEditAuthorsGdrive - test_change_capital_one_author_two_books</div>
 | 
					                <div class='testcase'>TestEditAuthorsGdrive - test_change_capital_one_author_two_books</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_ft15.3')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft15.3" 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_ft15.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_edit_books_author_gdrive.py", line 249, in test_change_capital_one_author_two_books
 | 
					 | 
				
			||||||
    self.assertEqual(200, ret_code)
 | 
					 | 
				
			||||||
AssertionError: 200 != 404</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -1716,31 +1679,11 @@ AssertionError: 200 != 404</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft15.6" class="none bg-danger">
 | 
					        <tr id='pt15.6' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestEditAuthorsGdrive - test_rename_capital_on_upload</div>
 | 
					                <div class='testcase'>TestEditAuthorsGdrive - test_rename_capital_on_upload</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_ft15.6')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft15.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_ft15.6').style.display='none'"><span
 | 
					 | 
				
			||||||
                                aria-hidden="true">×</span></button>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="text-left pull-left">
 | 
					 | 
				
			||||||
                        <pre class="text-left">Traceback (most recent call last):
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_author_gdrive.py", line 554, in test_rename_capital_on_upload
 | 
					 | 
				
			||||||
    self.assertEqual(200, ret_code)
 | 
					 | 
				
			||||||
AssertionError: 200 != 404</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -2124,13 +2067,13 @@ AssertionError: 200 != 404</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="failClass">
 | 
					    <tr id="su" class="passClass">
 | 
				
			||||||
        <td>TestLoadMetadataScholar</td>
 | 
					        <td>TestLoadMetadataScholar</td>
 | 
				
			||||||
        <td class="text-center">1</td>
 | 
					        <td class="text-center">1</td>
 | 
				
			||||||
        <td class="text-center">0</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">0</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
            <a onclick="showClassDetail('c19', 1)">Detail</a>
 | 
					            <a onclick="showClassDetail('c19', 1)">Detail</a>
 | 
				
			||||||
        </td>
 | 
					        </td>
 | 
				
			||||||
| 
						 | 
					@ -2138,31 +2081,11 @@ AssertionError: 200 != 404</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft19.1" class="none bg-danger">
 | 
					        <tr id='pt19.1' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestLoadMetadataScholar - test_load_metadata</div>
 | 
					                <div class='testcase'>TestLoadMetadataScholar - test_load_metadata</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_ft19.1')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft19.1" 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_ft19.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_edit_metadata_scholar.py", line 68, in test_load_metadata
 | 
					 | 
				
			||||||
    self.assertEqual(30, len(results))
 | 
					 | 
				
			||||||
AssertionError: 30 != 0</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -3063,11 +2986,11 @@ AssertionError: 30 != 0</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="failClass">
 | 
					    <tr id="su" class="passClass">
 | 
				
			||||||
        <td>TestLogin</td>
 | 
					        <td>TestLogin</td>
 | 
				
			||||||
        <td class="text-center">17</td>
 | 
					        <td class="text-center">17</td>
 | 
				
			||||||
        <td class="text-center">16</td>
 | 
					        <td class="text-center">17</td>
 | 
				
			||||||
        <td class="text-center">1</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
| 
						 | 
					@ -3131,31 +3054,11 @@ AssertionError: 30 != 0</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft33.7" class="none bg-danger">
 | 
					        <tr id='pt33.7' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestLogin - test_login_protected</div>
 | 
					                <div class='testcase'>TestLogin - test_login_protected</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_ft33.7')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft33.7" 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_ft33.7').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_login.py", line 151, in test_login_protected
 | 
					 | 
				
			||||||
    self.assertEqual(self.fail_access_page("http://127.0.0.1:8083/search"), 2)
 | 
					 | 
				
			||||||
AssertionError: 1 != 2</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -4027,12 +3930,12 @@ AssertionError: 1 != 2</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="errorClass">
 | 
					    <tr id="su" class="skipClass">
 | 
				
			||||||
        <td>TestThumbnails</td>
 | 
					        <td>TestThumbnails</td>
 | 
				
			||||||
        <td class="text-center">8</td>
 | 
					        <td class="text-center">8</td>
 | 
				
			||||||
        <td class="text-center">2</td>
 | 
					        <td class="text-center">7</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">1</td>
 | 
					        <td class="text-center">1</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
            <a onclick="showClassDetail('c45', 8)">Detail</a>
 | 
					            <a onclick="showClassDetail('c45', 8)">Detail</a>
 | 
				
			||||||
| 
						 | 
					@ -4050,89 +3953,29 @@ AssertionError: 1 != 2</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft45.2" class="none bg-danger">
 | 
					        <tr id='pt45.2' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestThumbnails - test_cache_of_deleted_book</div>
 | 
					                <div class='testcase'>TestThumbnails - test_cache_of_deleted_book</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_ft45.2')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft45.2" 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_ft45.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_thumbnails.py", line 199, in test_cache_of_deleted_book
 | 
					 | 
				
			||||||
    self.assertEqual(220, count_files(thumbnail_cache_path))
 | 
					 | 
				
			||||||
AssertionError: 220 != 0</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft45.3" class="none bg-danger">
 | 
					        <tr id='pt45.3' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestThumbnails - test_cover_cache_on_database_change</div>
 | 
					                <div class='testcase'>TestThumbnails - test_cover_cache_on_database_change</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_ft45.3')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft45.3" 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_ft45.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_thumbnails.py", line 83, in test_cover_cache_on_database_change
 | 
					 | 
				
			||||||
    self.assertTrue(os.path.exists(thumbnail_cache_path))
 | 
					 | 
				
			||||||
AssertionError: False is not true</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft45.4" class="none bg-danger">
 | 
					        <tr id='pt45.4' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestThumbnails - test_cover_change_on_upload_new_cover</div>
 | 
					                <div class='testcase'>TestThumbnails - test_cover_change_on_upload_new_cover</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_ft45.4')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft45.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_ft45.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_thumbnails.py", line 125, in test_cover_change_on_upload_new_cover
 | 
					 | 
				
			||||||
    self.assertTrue(os.path.exists(thumbnail_cache_path))
 | 
					 | 
				
			||||||
AssertionError: False is not true</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -4155,60 +3998,20 @@ AssertionError: False is not true</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="et45.7" class="none bg-info">
 | 
					        <tr id='pt45.7' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestThumbnails - test_remove_cover_from_cache</div>
 | 
					                <div class='testcase'>TestThumbnails - test_remove_cover_from_cache</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_et45.7')">ERROR</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_et45.7" 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_et45.7').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_thumbnails.py", line 161, in test_remove_cover_from_cache
 | 
					 | 
				
			||||||
    os.remove(os.path.join(thumbnail_cache_path, book.uuid[:2], book.filename))
 | 
					 | 
				
			||||||
FileNotFoundError: [Errno 2] No such file or directory: '/home/ozzie/Development/calibre-web/cps/cache/thumbnails/23/23996831-24c9-4f1f-807d-6cf2a86a764b.jpg'</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft45.8" class="none bg-danger">
 | 
					        <tr id='pt45.8' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestThumbnails - test_sideloaded_book</div>
 | 
					                <div class='testcase'>TestThumbnails - test_sideloaded_book</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_ft45.8')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft45.8" 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_ft45.8').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_thumbnails.py", line 281, in test_sideloaded_book
 | 
					 | 
				
			||||||
    self.assertEqual(book_thumbnail_reference + 2, count_files(thumbnail_cache_path))
 | 
					 | 
				
			||||||
AssertionError: 2 != 0</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -4792,11 +4595,11 @@ AssertionError: 2 != 0</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <tr id="su" class="failClass">
 | 
					    <tr id="su" class="passClass">
 | 
				
			||||||
        <td>TestCalibreWebVisibilitys</td>
 | 
					        <td>TestCalibreWebVisibilitys</td>
 | 
				
			||||||
        <td class="text-center">35</td>
 | 
					        <td class="text-center">35</td>
 | 
				
			||||||
        <td class="text-center">34</td>
 | 
					        <td class="text-center">35</td>
 | 
				
			||||||
        <td class="text-center">1</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">0</td>
 | 
					        <td class="text-center">0</td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
| 
						 | 
					@ -5085,33 +4888,11 @@ AssertionError: 2 != 0</pre>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        <tr id="ft51.32" class="none bg-danger">
 | 
					        <tr id='pt51.32' class='hiddenRow bg-success'>
 | 
				
			||||||
            <td>
 | 
					            <td>
 | 
				
			||||||
                <div class='testcase'>TestCalibreWebVisibilitys - test_search_order</div>
 | 
					                <div class='testcase'>TestCalibreWebVisibilitys - test_search_order</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_ft51.32')">FAIL</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup start-->
 | 
					 | 
				
			||||||
                <div id="div_ft51.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_ft51.32').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_visiblilitys.py", line 502, in test_search_order
 | 
					 | 
				
			||||||
    self.verify_order("search", order=order)
 | 
					 | 
				
			||||||
  File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1398, in verify_order
 | 
					 | 
				
			||||||
    self.assertEqual(book_id, expected_result, "Key sorting order wrong: " + key)
 | 
					 | 
				
			||||||
AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="clearfix"></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <!--css div popup end-->
 | 
					 | 
				
			||||||
            </td>
 | 
					 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -5304,10 +5085,10 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <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>450</td>
 | 
					        <td>455</td>
 | 
				
			||||||
        <td>431</td>
 | 
					        <td>447</td>
 | 
				
			||||||
        <td>10</td>
 | 
					        <td>1</td>
 | 
				
			||||||
        <td>2</td>
 | 
					        <td>0</td>
 | 
				
			||||||
        <td>7</td>
 | 
					        <td>7</td>
 | 
				
			||||||
        <td> </td>
 | 
					        <td> </td>
 | 
				
			||||||
    </tr>
 | 
					    </tr>
 | 
				
			||||||
| 
						 | 
					@ -5336,7 +5117,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>Platform</th>
 | 
					              <th>Platform</th>
 | 
				
			||||||
              <td>Linux 5.19.0-38-generic #39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 21:16:15 UTC 2 x86_64 x86_64</td>
 | 
					              <td>Linux 5.19.0-41-generic #42~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 18 17:40:00 UTC 2 x86_64 x86_64</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5372,7 +5153,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>Flask</th>
 | 
					              <th>Flask</th>
 | 
				
			||||||
              <td>2.1.3</td>
 | 
					              <td>2.3.2</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5384,7 +5165,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>Flask-Limiter</th>
 | 
					              <th>Flask-Limiter</th>
 | 
				
			||||||
              <td>3.3.0</td>
 | 
					              <td>3.3.1</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5432,7 +5213,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>pyasn1</th>
 | 
					              <th>pyasn1</th>
 | 
				
			||||||
              <td>0.4.8</td>
 | 
					              <td>0.5.0</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5456,7 +5237,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>SQLAlchemy</th>
 | 
					              <th>SQLAlchemy</th>
 | 
				
			||||||
              <td>2.0.9</td>
 | 
					              <td>1.4.48</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5480,13 +5261,13 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>Werkzeug</th>
 | 
					              <th>Werkzeug</th>
 | 
				
			||||||
              <td>2.0.3</td>
 | 
					              <td>2.3.4</td>
 | 
				
			||||||
              <td>Basic</td>
 | 
					              <td>Basic</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestBackupMetadataGdrive</td>
 | 
					              <td>TestBackupMetadataGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5504,7 +5285,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestBackupMetadataGdrive</td>
 | 
					              <td>TestBackupMetadataGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5516,7 +5297,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestCliGdrivedb</td>
 | 
					              <td>TestCliGdrivedb</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5534,7 +5315,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestCliGdrivedb</td>
 | 
					              <td>TestCliGdrivedb</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5546,7 +5327,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestEbookConvertCalibreGDrive</td>
 | 
					              <td>TestEbookConvertCalibreGDrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5564,7 +5345,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestEbookConvertCalibreGDrive</td>
 | 
					              <td>TestEbookConvertCalibreGDrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5576,7 +5357,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestEbookConvertGDriveKepubify</td>
 | 
					              <td>TestEbookConvertGDriveKepubify</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5594,7 +5375,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestEbookConvertGDriveKepubify</td>
 | 
					              <td>TestEbookConvertGDriveKepubify</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5618,7 +5399,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestEditAuthorsGdrive</td>
 | 
					              <td>TestEditAuthorsGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5636,7 +5417,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestEditAuthorsGdrive</td>
 | 
					              <td>TestEditAuthorsGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5654,7 +5435,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestEditBooksOnGdrive</td>
 | 
					              <td>TestEditBooksOnGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5672,7 +5453,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestEditBooksOnGdrive</td>
 | 
					              <td>TestEditBooksOnGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5696,7 +5477,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>google-api-python-client</th>
 | 
					              <th>google-api-python-client</th>
 | 
				
			||||||
              <td>2.85.0</td>
 | 
					              <td>2.87.0</td>
 | 
				
			||||||
              <td>TestSetupGdrive</td>
 | 
					              <td>TestSetupGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5714,7 +5495,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>PyDrive2</th>
 | 
					              <th>PyDrive2</th>
 | 
				
			||||||
              <td>1.15.3</td>
 | 
					              <td>1.15.4</td>
 | 
				
			||||||
              <td>TestSetupGdrive</td>
 | 
					              <td>TestSetupGdrive</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5732,7 +5513,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>python-Levenshtein</th>
 | 
					              <th>python-Levenshtein</th>
 | 
				
			||||||
              <td>0.20.9</td>
 | 
					              <td>0.21.0</td>
 | 
				
			||||||
              <td>TestGoodreads</td>
 | 
					              <td>TestGoodreads</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5768,13 +5549,13 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>Flask-Dance</th>
 | 
					              <th>Flask-Dance</th>
 | 
				
			||||||
              <td>6.2.0</td>
 | 
					              <td>7.0.0</td>
 | 
				
			||||||
              <td>TestOAuthLogin</td>
 | 
					              <td>TestOAuthLogin</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            <tr>
 | 
					            <tr>
 | 
				
			||||||
              <th>SQLAlchemy-Utils</th>
 | 
					              <th>SQLAlchemy-Utils</th>
 | 
				
			||||||
              <td>0.41.0</td>
 | 
					              <td>0.41.1</td>
 | 
				
			||||||
              <td>TestOAuthLogin</td>
 | 
					              <td>TestOAuthLogin</td>
 | 
				
			||||||
            </tr>
 | 
					            </tr>
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
| 
						 | 
					@ -5786,7 +5567,7 @@ AssertionError: 9 != 8 : Key sorting order wrong: pub_new</pre>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
    drawCircle(431, 10, 2, 7);
 | 
					    drawCircle(447, 1, 0, 7);
 | 
				
			||||||
    showCase(5);
 | 
					    showCase(5);
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user