Merge pull request #28 from th3r00t/development

Bring master up to 0.4.0
This commit is contained in:
th3r00t
2020-01-01 11:13:24 -05:00
committed by GitHub
152 changed files with 6459 additions and 1363 deletions

5
.gitignore vendored
View File

@@ -124,3 +124,8 @@ dmypy.json
# End of https://www.gitignore.io/api/python # End of https://www.gitignore.io/api/python
0 0
config.backup.json
create_db.sql
uwsgi.ini
installer.log
pyshelf_nginx.conf

37
README.md vendored
View File

@@ -1,4 +1,4 @@
# pyShelf 0.3.0 # pyShelf 0.4.0
<p align="center"><b>Terminal based ebook server. Open source & Lightweight.</b></p> <p align="center"><b>Terminal based ebook server. Open source & Lightweight.</b></p>
@@ -7,22 +7,35 @@
Having used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own. Having used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own.
## Current Features ## Current Features
* Custom Installer
* Recursive Scanning * Recursive Scanning
* Fast database access * Fast database access
* Django based frontend * Django based frontend
* Basic seaching via a SearchVector of author, title, & file_name fields. * Basic seaching via a SearchVector of author, title, & file_name fields.
* Ebook Downloading
## Currently Supported Formats ## Currently Supported Formats
* epub * epub
## Installation Example ## Installation Example
<a href="https://asciinema.org/a/M739CljirFAf9nzeNyNO0113a" target="_blank"><img src="https://asciinema.org/a/M739CljirFAf9nzeNyNO0113a.svg" /></a> <a href="https://vimeo.com/382292764" target="_blank">pyShelf Installation Video</a>
* In addition to the above steps you must now also make the requisite changes in config.json to reflect the connection to your postgresql server
<img src="https://raw.githubusercontent.com/th3r00t/pyShelf/development/src/interface/static/img/pyShelf_frontend_0_1_0.png" alt="Server Frontend" align="center" />
## Further Installation & Support Information ## Further Installation & Support Information
* [SUPPORT.md](https://github.com/th3r00t/pyShelf/blob/development/.github/SUPPORT.md) * [SUPPORT.md](https://github.com/th3r00t/pyShelf/blob/development/.github/SUPPORT.md)
## 0.4.0 Patch Notes.
### The Installer Initiative
All work this time around was centered on creating an installer simple and inclusive enough to hopefully enable all
users to simply set it and forget it. I have debugged as much as I can with my setup. I am performing some simple file finding to determine which system installer is present, and setting it as the installer used by pyShelf.
This setup has been tested and is working flawlessly on arch based distros, and i have done what I can for debian, and centos based distros, If you do encounter installer issues please let me know if it isnt finding the system installer, or possibly isnt passing command line arguments to your installer.
Also it should be noted that I am determining the presence of your postgresql, and nginx servers based on whether or not the
process is listed in the process list.
At this time I would suggest stopping both your postgresql and nginx servers should you already have them and allowing the installer to do its work generating custom configurations and putting the nginx config files in place (/etc/nginx/sites-available, and symlinked to /etc/nginx/sites-enabled/) None of your existing configurations will be overwritten.
## 0.3.0 Patch Notes. ## 0.3.0 Patch Notes.
### "And now we search." ### "And now we search."
@@ -48,25 +61,13 @@ _Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf
## Configuration ## Configuration
### Nginx All configuration is now handled by the installer.
Included is a default nginx config file {pyshelf_nginx.conf}. This file should be sufficient to get you up and running. You are required to change the location alias's to reflect your pyshelf install folder leaving everything after /frontend intact.
Further resources for nginx setup may be found @ [This nginx, django, & uwsgi, guide](https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html)
### uwsgi
Inside uwsgi.ini you should make changes to reflect your install directory, and the port you wish uwsgi to listen on. Alternativly you can make the requisite changes to listen on a socket instead. This change would also require a change to the pyshelf_nginx.conf file as well.
### pyShelf
User configuration is contained within config.json in the project root. You must set book_path to the location of your books, and change the database connection details to match your environment.
## Misc
Django has been implemented to power the frontend experience, and web based database maintenance. A properly configured web server is required for hosting the frontend, and a PostgreSQL server for the database, configuration of these servers is outside of the scope of this readme.
Running via the Django test server might be possible, albeit not recomended. Running via the Django test server might be possible, albeit not recomended.
## In Progress ## In Progress
* Searching, & further organizational tools. * Organizational tools.
* Docker image for those who need it. * Docker image for those who need it.
* Improved cover image storage, and acquisition. * Improved cover image storage, and acquisition.

View File

@@ -1,4 +0,0 @@
import sys
sys.path.insert(1, "app/")
sys.path.insert(2, "frontend/")

12
config.json vendored
View File

@@ -1,11 +1 @@
{ {"TITLE": "pyShelf E-Book Server", "VERSION": "0.3.0", "BOOKPATH": "/home/raelon/Books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "hostname": "localhost", "webport": "8000", "wsgiport": "8001"}
"TITLE": "pyShelf E-Book Server",
"VERSION": "0.3.0",
"BOOKPATH": "books/",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DATABASE": "pyshelf",
"USER": "pyshelf",
"PASSWORD": "pyshelf",
"BOOKSHELF": "data/shelf.json"
}

View File

@@ -1,16 +1,16 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'> <html xmlns='http://www.w3.org/1999/xhtml'>
<head> <head>
<title>pyShelf Open Source Ebook Server-0.3.0</title> <title>pyShelf Open Source Ebook Server-0.4.0</title>
<meta name='robots' content='noindex,nofollow' /> <meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.6.3' /> <meta name='generator' content='GLOBAL-6.6.3' />
<meta http-equiv='Content-Style-Type' content='text/css' /> <meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='style.css' /> <link rel='stylesheet' type='text/css' href='style.css' />
</head> </head>
<body> <body>
<h1 class='title'>pyShelf Open Source Ebook Server-0.3.0</h1> <h1 class='title'>pyShelf Open Source Ebook Server-0.4.0</h1>
<div class='poweredby'> <div class='poweredby'>
Last updated Sun Dec 15 12:54:07 EST 2019<br /> Last updated Wed Jan 01 09:54:41 EST 2020<br />
Powered by <a href='http://www.gnu.org/software/global/' title='Go to the GLOBAL project page.'>GLOBAL-6.6.3</a>.<br /> Powered by <a href='http://www.gnu.org/software/global/' title='Go to the GLOBAL project page.'>GLOBAL-6.6.3</a>.<br />
</div> </div>
<hr /> <hr />

View File

@@ -1,16 +1,16 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'> <html xmlns='http://www.w3.org/1999/xhtml'>
<head> <head>
<title>pyShelf Open Source Ebook Server-0.3.0</title> <title>pyShelf Open Source Ebook Server-0.4.0</title>
<meta name='robots' content='noindex,nofollow' /> <meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.6.3' /> <meta name='generator' content='GLOBAL-6.6.3' />
<meta http-equiv='Content-Style-Type' content='text/css' /> <meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='style.css' /> <link rel='stylesheet' type='text/css' href='style.css' />
</head> </head>
<body> <body>
<h1 class='title'>pyShelf Open Source Ebook Server-0.3.0</h1> <h1 class='title'>pyShelf Open Source Ebook Server-0.4.0</h1>
<div class='poweredby'> <div class='poweredby'>
Last updated Sun Dec 15 12:54:07 EST 2019<br /> Last updated Wed Jan 01 09:54:41 EST 2020<br />
Powered by <a href='http://www.gnu.org/software/global/' title='Go to the GLOBAL project page.'>GLOBAL-6.6.3</a>.<br /> Powered by <a href='http://www.gnu.org/software/global/' title='Go to the GLOBAL project page.'>GLOBAL-6.6.3</a>.<br />
</div> </div>
<hr /> <hr />

View File

@@ -5,4 +5,4 @@
# Usage: # Usage:
# % sh rebuild.sh # % sh rebuild.sh
# #
cd /home/raelon/Projects/pyShelf/src/backend && GTAGSCONF=':langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:skip=HTML/,HTML.pub/,tags,TAGS,ID,y.tab.c,y.tab.h,gtags.files,cscope.files,cscope.out,cscope.po.out,cscope.in.out,SCCS/,RCS/,CVS/,CVSROOT/,{arch}/,autom4te.cache/,*.orig,*.rej,*.bak,*~,#*#,*.swp,*.tmp,*_flymake.*,*_flymake,*.o,*.a,*.so,*.lo,*.zip,*.gz,*.bz2,*.xz,*.lzh,*.Z,*.tgz,*.min.js,*min.css:' htags -g -s -a -n -v -w -t 'pyShelf Open Source Ebook Server-0.3.0' /home/raelon/Projects/pyShelf/docs/html cd /home/raelon/Projects/pyShelf/src/backend && GTAGSCONF=':langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:skip=HTML/,HTML.pub/,tags,TAGS,ID,y.tab.c,y.tab.h,gtags.files,cscope.files,cscope.out,cscope.po.out,cscope.in.out,SCCS/,RCS/,CVS/,CVSROOT/,{arch}/,autom4te.cache/,*.orig,*.rej,*.bak,*~,#*#,*.swp,*.tmp,*_flymake.*,*_flymake,*.o,*.a,*.so,*.lo,*.zip,*.gz,*.bz2,*.xz,*.lzh,*.Z,*.tgz,*.min.js,*min.css:' htags -g -s -a -n -v -w -t 'pyShelf Open Source Ebook Server-0.4.0' /home/raelon/Projects/pyShelf/docs/html

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -45,35 +45,36 @@ $(function() {
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory"> <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span><span onclick="javascript:toggleLevel(6);">6</span>]</div><table class="directory"> <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>pyShelf</b></td><td class="desc"></td></tr> <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>src</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>src</b></td><td class="desc"></td></tr> <tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>backend</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>backend</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>lib</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>lib</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>api_hooks</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>api_hooks</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html" target="_self">DuckDuckGo</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_0_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html" target="_self">DuckDuckGo</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_1_" class="arrow" onclick="toggleFolder('0_0_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>config</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_1_" class="arrow" onclick="toggleFolder('0_0_0_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>config</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html" target="_self">Config</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_1_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html" target="_self">Config</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_2_" class="arrow" onclick="toggleFolder('0_0_0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>display</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_2_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_2_" class="arrow" onclick="toggleFolder('0_0_0_0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>library</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_2_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html" target="_self">TerminalDisplay</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_2_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html" target="_self">Catalogue</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_3_" class="arrow" onclick="toggleFolder('0_0_0_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>library</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_3_" class="arrow" onclick="toggleFolder('0_0_0_0_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>pyShelf</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_3_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html" target="_self">Catalogue</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_3_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html" target="_self">BookDisplay</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_4_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_4_" class="arrow" onclick="toggleFolder('0_0_0_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>pyShelf</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_3_1_" class="even"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html" target="_self">InitFiles</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_4_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html" target="_self">BookDisplay</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_4_" class="arrow" onclick="toggleFolder('0_0_0_0_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>storage</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_4_1_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html" target="_self">InitFiles</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_4_0_" class="even"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html" target="_self">Storage</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_5_" class="arrow" onclick="toggleFolder('0_0_0_5_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>storage</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_1_" class="arrow" onclick="toggleFolder('0_0_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>tests</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_5_0_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html" target="_self">Storage</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_1_0_" class="arrow" onclick="toggleFolder('0_0_0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>config_test</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>tests</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_0_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html" target="_self">TestConfig</a></td><td class="desc"></td></tr> <tr id="row_0_0_1_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_1_0_" class="arrow" onclick="toggleFolder('0_0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>config_test</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span id="arr_0_0_0_1_1_" class="arrow" onclick="toggleFolder('0_0_0_1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>library_test</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html" target="_self">TestConfig</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_1_0_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html" target="_self">Test_Catalogue</a></td><td class="desc"></td></tr> <tr id="row_0_0_1_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_1_1_" class="arrow" onclick="toggleFolder('0_0_1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>library_test</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_1_1_" class="even"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html" target="_self">Test_Config</a></td><td class="desc"></td></tr> <tr id="row_0_0_1_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html" target="_self">Test_Catalogue</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_1_2_"><td class="entry"><span style="width:96px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html" target="_self">TestCatalogue</a></td><td class="desc"></td></tr> <tr id="row_0_0_1_1_1_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html" target="_self">Test_Config</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_1_2_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html" target="_self">TestCatalogue</a></td><td class="desc"></td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -48,32 +48,33 @@ $(function() {
<table class="classindex"> <table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table> <tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td> </td>
<td valign="top"><a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a> (pyShelf.src.backend.lib.config)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a> (src.backend.lib.config)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table> <td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td> </td>
<td valign="top"><a class="el" href="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a> (pyShelf.src.backend.tests.library_test)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a> (src.backend.tests.library_test)&#160;&#160;&#160;</td>
</tr> </tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table> <tr><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
</td> </td>
<td valign="top"><a class="el" href="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a> (pyShelf.src.backend.tests.library_test)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a> (src.backend.tests.library_test)&#160;&#160;&#160;</td>
</tr> </tr>
<tr><td valign="top"><a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">BookDisplay</a> (pyShelf.src.backend.lib.pyShelf)&#160;&#160;&#160;</td> <tr><td valign="top"><a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">BookDisplay</a> (src.backend.lib.pyShelf)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a> (pyShelf.src.backend.lib.storage)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a> (src.backend.lib.storage)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a> (pyShelf.src.backend.tests.config_test)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a> (src.backend.tests.library_test)&#160;&#160;&#160;</td>
</tr> </tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table> <tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
</td> </td>
<td valign="top"><a class="el" href="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a> (pyShelf.src.backend.lib.api_hooks)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a> (src.backend.lib.api_hooks)&#160;&#160;&#160;</td>
<td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table> <td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
</td> </td>
<td></td></tr> <td valign="top"><a class="el" href="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a> (src.backend.tests.config_test)&#160;&#160;&#160;</td>
</tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table> <tr><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
</td> </td>
<td></td></tr> <td></td></tr>
<tr><td valign="top"><a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a> (pyShelf.src.backend.lib.library)&#160;&#160;&#160;</td> <tr><td valign="top"><a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a> (src.backend.lib.library)&#160;&#160;&#160;</td>
<td valign="top"><a class="el" href="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a> (pyShelf.src.backend.tests.library_test)&#160;&#160;&#160;</td> <td valign="top"><a class="el" href="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">TerminalDisplay</a> (src.backend.lib.display)&#160;&#160;&#160;</td>
<td></td></tr> <td></td></tr>
<tr><td></td><td valign="top"><a class="el" href="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a> (pyShelf.src.backend.lib.pyShelf)&#160;&#160;&#160;</td> <tr><td></td><td valign="top"><a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a> (src.backend.lib.pyShelf)&#160;&#160;&#160;</td>
<td></td><td></td></tr> <td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr> <tr><td></td><td></td><td></td><td></td></tr>
</table> </table>
@@ -81,7 +82,7 @@ $(function() {
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.display.TerminalDisplay Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>display</b></li><li class="navelem"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">TerminalDisplay</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.display.TerminalDisplay Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:afa49942e24c6223e64ad758e0e802205"><td class="memItemLeft" align="right" valign="top"><a id="afa49942e24c6223e64ad758e0e802205"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self)</td></tr>
<tr class="separator:afa49942e24c6223e64ad758e0e802205"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a376e07b942f20d36f2900fb06027a69f"><td class="memItemLeft" align="right" valign="top"><a id="a376e07b942f20d36f2900fb06027a69f"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>screen</b> (self)</td></tr>
<tr class="separator:a376e07b942f20d36f2900fb06027a69f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d2e9f5cc0d5db6d1e555d2d7fab739e"><td class="memItemLeft" align="right" valign="top"><a id="a4d2e9f5cc0d5db6d1e555d2d7fab739e"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>installer</b> (self)</td></tr>
<tr class="separator:a4d2e9f5cc0d5db6d1e555d2d7fab739e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16f310fe8107fdc0f4fdedb8aa352706"><td class="memItemLeft" align="right" valign="top"><a id="a16f310fe8107fdc0f4fdedb8aa352706"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>prompt</b> (self, questions)</td></tr>
<tr class="separator:a16f310fe8107fdc0f4fdedb8aa352706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbbc7d41750aebbffbc66f60ab6d33b5"><td class="memItemLeft" align="right" valign="top"><a id="acbbc7d41750aebbffbc66f60ab6d33b5"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>h_rule</b> (self)</td></tr>
<tr class="separator:acbbc7d41750aebbffbc66f60ab6d33b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7389f9d61e403d76f2e0d2bc42d3163a"><td class="memItemLeft" align="right" valign="top"><a id="a7389f9d61e403d76f2e0d2bc42d3163a"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>banner</b> (self)</td></tr>
<tr class="separator:a7389f9d61e403d76f2e0d2bc42d3163a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8812bd27f26cd449da9cb4852c1354a4"><td class="memItemLeft" align="right" valign="top"><a id="a8812bd27f26cd449da9cb4852c1354a4"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>banner_render</b> (self)</td></tr>
<tr class="separator:a8812bd27f26cd449da9cb4852c1354a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ad670c8e3b4b1fe421da2e5e32c3a342f"><td class="memItemLeft" align="right" valign="top"><a id="ad670c8e3b4b1fe421da2e5e32c3a342f"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
<tr class="separator:ad670c8e3b4b1fe421da2e5e32c3a342f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a641edfb4f048817b6cf5af9910b27263"><td class="memItemLeft" align="right" valign="top"><a id="a641edfb4f048817b6cf5af9910b27263"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>term</b></td></tr>
<tr class="separator:a641edfb4f048817b6cf5af9910b27263"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe0023ccbaa31a36b71ba213272ae6b4"><td class="memItemLeft" align="right" valign="top"><a id="abe0023ccbaa31a36b71ba213272ae6b4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>y</b></td></tr>
<tr class="separator:abe0023ccbaa31a36b71ba213272ae6b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7224c987c7c257100380b535434d82f1"><td class="memItemLeft" align="right" valign="top"><a id="a7224c987c7c257100380b535434d82f1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>home</b></td></tr>
<tr class="separator:a7224c987c7c257100380b535434d82f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac489b64a131d1ecc8e3e05d49a1e5c0a"><td class="memItemLeft" align="right" valign="top"><a id="ac489b64a131d1ecc8e3e05d49a1e5c0a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>user</b></td></tr>
<tr class="separator:ac489b64a131d1ecc8e3e05d49a1e5c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a816b86bc765288caf928a9373ac7fcac"><td class="memItemLeft" align="right" valign="top"><a id="a816b86bc765288caf928a9373ac7fcac"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>version</b></td></tr>
<tr class="separator:a816b86bc765288caf928a9373ac7fcac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d6c3740b8803ea3e4ce00b6447def57"><td class="memItemLeft" align="right" valign="top"><a id="a4d6c3740b8803ea3e4ce00b6447def57"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>slogan</b></td></tr>
<tr class="separator:a4d6c3740b8803ea3e4ce00b6447def57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bfa93a859e2b58d66ff859a22b0113a"><td class="memItemLeft" align="right" valign="top"><a id="a8bfa93a859e2b58d66ff859a22b0113a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>green</b></td></tr>
<tr class="separator:a8bfa93a859e2b58d66ff859a22b0113a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a042bb80ababcc1a33ad92a8f0e09394a"><td class="memItemLeft" align="right" valign="top"><a id="a042bb80ababcc1a33ad92a8f0e09394a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>blue</b></td></tr>
<tr class="separator:a042bb80ababcc1a33ad92a8f0e09394a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5091b937d9e7b5ab91a0c3d0de280a5e"><td class="memItemLeft" align="right" valign="top"><a id="a5091b937d9e7b5ab91a0c3d0de280a5e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>clr_term</b></td></tr>
<tr class="separator:a5091b937d9e7b5ab91a0c3d0de280a5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">display.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,64 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>pyShelf</b></li><li class="navelem"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.pyShelf.InitFiles Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">src.backend.lib.pyShelf.InitFiles</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self, file_array) (defined in <a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">src.backend.lib.pyShelf.InitFiles</a>)</td><td class="entry"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">src.backend.lib.pyShelf.InitFiles</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab6c693e30b5a121168f831aece10f07e">CreateFile</a>(self, _pointer)</td><td class="entry"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">src.backend.lib.pyShelf.InitFiles</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,167 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Config Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.tests.library_test.Test_Config Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for src.backend.tests.library_test.Test_Config:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png" usemap="#src.backend.tests.library_5Ftest.Test_5FConfig_map" alt=""/>
<map id="src.backend.tests.library_5Ftest.Test_5FConfig_map" name="src.backend.tests.library_5Ftest.Test_5FConfig_map">
<area href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html" alt="src.backend.lib.config.Config" shape="rect" coords="0,0,249,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5a4b3d09c4ca0533571ad25590558042"><td class="memItemLeft" align="right" valign="top"><a id="a5a4b3d09c4ca0533571ad25590558042"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self)</td></tr>
<tr class="separator:a5a4b3d09c4ca0533571ad25590558042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03e5a6c59bffd93c1e81ddc52a84254f"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f">open_file</a> (self, root=&quot;config.json&quot;)</td></tr>
<tr class="separator:a03e5a6c59bffd93c1e81ddc52a84254f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memItemLeft" align="right" valign="top"><a id="a73eef160e0fbb7d27b35af88f9a08e3b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_path</b></td></tr>
<tr class="separator:a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbff70657f2e68abd8dec5a497e22019"><td class="memItemLeft" align="right" valign="top"><a id="adbff70657f2e68abd8dec5a497e22019"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TITLE</b></td></tr>
<tr class="separator:adbff70657f2e68abd8dec5a497e22019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60406233a916d5bc4c26f178081b811d"><td class="memItemLeft" align="right" valign="top"><a id="a60406233a916d5bc4c26f178081b811d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>VERSION</b></td></tr>
<tr class="separator:a60406233a916d5bc4c26f178081b811d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32df23365f00a8014d8bafd797da06d0"><td class="memItemLeft" align="right" valign="top"><a id="a32df23365f00a8014d8bafd797da06d0"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_shelf</b></td></tr>
<tr class="separator:a32df23365f00a8014d8bafd797da06d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24163ce536b9b86d2020cd00e04d096"><td class="memItemLeft" align="right" valign="top"><a id="ae24163ce536b9b86d2020cd00e04d096"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>catalogue_db</b></td></tr>
<tr class="separator:ae24163ce536b9b86d2020cd00e04d096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a672d2e335f4f85f64b0416f5886b282f"><td class="memItemLeft" align="right" valign="top"><a id="a672d2e335f4f85f64b0416f5886b282f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>user</b></td></tr>
<tr class="separator:a672d2e335f4f85f64b0416f5886b282f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a301b1324af2ae076e8782fcea79cd7f9"><td class="memItemLeft" align="right" valign="top"><a id="a301b1324af2ae076e8782fcea79cd7f9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>password</b></td></tr>
<tr class="separator:a301b1324af2ae076e8782fcea79cd7f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa119c468373043e4c74783c224b5a79e"><td class="memItemLeft" align="right" valign="top"><a id="aa119c468373043e4c74783c224b5a79e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_host</b></td></tr>
<tr class="separator:aa119c468373043e4c74783c224b5a79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa859d999451eba07b8d0885665925a7e"><td class="memItemLeft" align="right" valign="top"><a id="aa859d999451eba07b8d0885665925a7e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_port</b></td></tr>
<tr class="separator:aa859d999451eba07b8d0885665925a7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bb596f51b0097c836cd6307dd03583f"><td class="memItemLeft" align="right" valign="top"><a id="a6bb596f51b0097c836cd6307dd03583f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>file_array</b></td></tr>
<tr class="separator:a6bb596f51b0097c836cd6307dd03583f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a905c0db0851be868400284fa30e79e96"><td class="memItemLeft" align="right" valign="top"><a id="a905c0db0851be868400284fa30e79e96"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root</b></td></tr>
<tr class="separator:a905c0db0851be868400284fa30e79e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0ad7dbde42874a86718469d772d2e32"><td class="memItemLeft" align="right" valign="top"><a id="af0ad7dbde42874a86718469d772d2e32"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>auto_scan</b></td></tr>
<tr class="separator:af0ad7dbde42874a86718469d772d2e32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1caead108725ffe2edd4a1b7b8ab86"><td class="memItemLeft" align="right" valign="top"><a id="abd1caead108725ffe2edd4a1b7b8ab86"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>allowed_hosts</b></td></tr>
<tr class="separator:abd1caead108725ffe2edd4a1b7b8ab86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memItemLeft" align="right" valign="top"><a id="a088b23bf4d560c3e29bc63ac2d97bb22"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_user</b></td></tr>
<tr class="separator:a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15420665376e4aab800b46e9785a5a95"><td class="memItemLeft" align="right" valign="top"><a id="a15420665376e4aab800b46e9785a5a95"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_pass</b></td></tr>
<tr class="separator:a15420665376e4aab800b46e9785a5a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a03e5a6c59bffd93c1e81ddc52a84254f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03e5a6c59bffd93c1e81ddc52a84254f">&#9670;&nbsp;</a></span>open_file()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.tests.library_test.Test_Config.open_file </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_cp</em> = <code>&quot;config.json&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens config.json and reads in configuration options
</pre>
<p>Reimplemented from <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb">src.backend.lib.config.Config</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/tests/<a class="el" href="../../">library_test.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>config</b></li><li class="navelem"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.config.Config Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8">__init__</a>(self, root)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>allowed_hosts</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>auto_scan</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>book_path</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book_shelf</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>catalogue_db</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_host</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_pass</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_port</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_user</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>file_array</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb">open_file</a>(self, _cp)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>password</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>root</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TITLE</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>user</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>VERSION</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.tests.library_test.TestCatalogue Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a>)</td><td class="entry"><a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>root</b> (defined in <a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a>)</td><td class="entry"><a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_filter_books</b>(self) (defined in <a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a>)</td><td class="entry"><a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">src.backend.tests.library_test.TestCatalogue</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>display</b></li><li class="navelem"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">TerminalDisplay</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.display.TerminalDisplay Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>banner</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>banner_render</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>blue</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>clr_term</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>green</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>h_rule</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>home</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>installer</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prompt</b>(self, questions) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>screen</b>(self) (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>slogan</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>term</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>user</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>version</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>y</b> (defined in <a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a>)</td><td class="entry"><a class="el" href="../../d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html">src.backend.lib.display.TerminalDisplay</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,407 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.library.Catalogue Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>library</b></li><li class="navelem"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.library.Catalogue Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for src.backend.lib.library.Catalogue:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png" usemap="#src.backend.lib.library.Catalogue_map" alt=""/>
<map id="src.backend.lib.library.Catalogue_map" name="src.backend.lib.library.Catalogue_map">
<area href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html" alt="src.backend.tests.library_test.Test_Catalogue" shape="rect" coords="0,56,269,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7f0522c779279e7dd88c95edb34e3d25"><td class="memItemLeft" align="right" valign="top"><a id="a7f0522c779279e7dd88c95edb34e3d25"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self, config)</td></tr>
<tr class="separator:a7f0522c779279e7dd88c95edb34e3d25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a204c5171b7de8ddd199563fd1b252032"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">scan_folder</a> (self, _path=None)</td></tr>
<tr class="separator:a204c5171b7de8ddd199563fd1b252032"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dec8499f181aee506861142004d002d"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">filter_books</a> (self)</td></tr>
<tr class="separator:a9dec8499f181aee506861142004d002d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abab8649249ef71103f314aa29644a739"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">extract_metadata</a> (self, book)</td></tr>
<tr class="separator:abab8649249ef71103f314aa29644a739"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="separator:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="separator:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1c3b416586faaabb37515705588a89"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="separator:abd1c3b416586faaabb37515705588a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">compare_shelf_current</a> (self)</td></tr>
<tr class="separator:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56675f98c8db93b6ca8c6731fde8e45"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">import_books</a> (self, list=None)</td></tr>
<tr class="separator:af56675f98c8db93b6ca8c6731fde8e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aedf70ab79105f8251d36848fb790fb9f"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">process_book</a> (book)</td></tr>
<tr class="separator:aedf70ab79105f8251d36848fb790fb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memItemLeft" align="right" valign="top"><a id="ac443ee74f10c7e2e128ddb2f0dfe045e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>file_list</b></td></tr>
<tr class="separator:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top"><a id="a2026c090be4f55cfe941d16a01b4ea75"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>opf_regx</b></td></tr>
<tr class="separator:a2026c090be4f55cfe941d16a01b4ea75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top"><a id="a576649115ba3717c475d60eae96f6204"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cover_regx</b></td></tr>
<tr class="separator:a576649115ba3717c475d60eae96f6204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top"><a id="a686b224643b060423a49a017d4a7abd8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>html_regx</b></td></tr>
<tr class="separator:a686b224643b060423a49a017d4a7abd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top"><a id="a3e5edca4ab942e3f71958c90b5c45023"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root_dir</b></td></tr>
<tr class="separator:a3e5edca4ab942e3f71958c90b5c45023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top"><a id="a340d869b8f7c16007773de40a24005ce"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_folder</b></td></tr>
<tr class="separator:a340d869b8f7c16007773de40a24005ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9aa7df0cf04a8e747a2efae24727d51"><td class="memItemLeft" align="right" valign="top"><a id="ad9aa7df0cf04a8e747a2efae24727d51"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_shelf</b></td></tr>
<tr class="separator:ad9aa7df0cf04a8e747a2efae24727d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top"><a id="a1129571b5c1a358e71d125cc47f9bf36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>books</b></td></tr>
<tr class="separator:a1129571b5c1a358e71d125cc47f9bf36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top"><a id="acd6cb62aae1221ee590734b70f76888a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_pointer</b></td></tr>
<tr class="separator:acd6cb62aae1221ee590734b70f76888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top"><a id="afb43be37337c74fc1bfe1415ded423f9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b></td></tr>
<tr class="separator:afb43be37337c74fc1bfe1415ded423f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Decodes book metadata for storage
</pre> </div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a75b4d33e6dee46d4d18e6623d30f6dd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b4d33e6dee46d4d18e6623d30f6dd2">&#9670;&nbsp;</a></span>compare_shelf_current()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls storage system, gets list of books stored and compares against files on disk
</pre>
</div>
</div>
<a id="a0993bce2b4fe64a46d96a5eba1d5af50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0993bce2b4fe64a46d96a5eba1d5af50">&#9670;&nbsp;</a></span>extract_content()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching opf_regx
</pre>
</div>
</div>
<a id="abcf0dc2d816393afbfb07ea9f5c152f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcf0dc2d816393afbfb07ea9f5c152f9">&#9670;&nbsp;</a></span>extract_cover_html()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching html_regx
</pre>
</div>
</div>
<a id="abd1c3b416586faaabb37515705588a89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1c3b416586faaabb37515705588a89">&#9670;&nbsp;</a></span>extract_cover_image()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching cover_regx
</pre>
</div>
</div>
<a id="abab8649249ef71103f314aa29644a739"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abab8649249ef71103f314aa29644a739">&#9670;&nbsp;</a></span>extract_metadata()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_metadata </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata and cover picture
book['path'] == Full path to ebook file
book['files'] == list of files from self.process_book(book)
</pre>
</div>
</div>
<a id="a9dec8499f181aee506861142004d002d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dec8499f181aee506861142004d002d">&#9670;&nbsp;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files
Proceeds to call process_book
:returns self._book_list_expanded: json string containing all book metadata
</pre>
<p>Reimplemented in <a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">src.backend.tests.library_test.Test_Catalogue</a>.</p>
</div>
</div>
<a id="af56675f98c8db93b6ca8c6731fde8e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af56675f98c8db93b6ca8c6731fde8e45">&#9670;&nbsp;</a></span>import_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.import_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>list</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Main entry point for import operations.
Gets a list of new files via compare_shelf_current.
Iterates over list and inserts new books into database.
</pre>
</div>
</div>
<a id="aedf70ab79105f8251d36848fb790fb9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedf70ab79105f8251d36848fb790fb9f">&#9670;&nbsp;</a></span>process_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.process_book </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a204c5171b7de8ddd199563fd1b252032"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a204c5171b7de8ddd199563fd1b252032">&#9670;&nbsp;</a></span>scan_folder()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.scan_folder </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">library.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.tests.library_test.Test_Config Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">src.backend.tests.library_test.Test_Config</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self) (defined in <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">src.backend.tests.library_test.Test_Config</a>)</td><td class="entry"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">src.backend.tests.library_test.Test_Config</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8">src::backend::lib::config::Config.__init__</a>(self, root)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allowed_hosts</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>auto_scan</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book_path</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>book_shelf</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>catalogue_db</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_host</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_pass</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_port</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_user</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>file_array</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f">open_file</a>(self, root=&quot;config.json&quot;)</td><td class="entry"><a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">src.backend.tests.library_test.Test_Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>password</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>root</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>TITLE</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>user</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>VERSION</b> (defined in <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a>)</td><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">src.backend.lib.config.Config</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>config_test</b></li><li class="navelem"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.tests.config_test.TestConfig Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>config</b> (defined in <a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a>)</td><td class="entry"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>test_book_dir</b>(self) (defined in <a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a>)</td><td class="entry"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>test_title</b>(self) (defined in <a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a>)</td><td class="entry"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>test_version</b>(self) (defined in <a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a>)</td><td class="entry"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">src.backend.tests.config_test.TestConfig</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>library</b></li><li class="navelem"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.library.Catalogue Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self, config) (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>book_folder</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book_shelf</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>books</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">compare_shelf_current</a>(self)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cover_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_pointer</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">extract_content</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">extract_cover_html</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">extract_cover_image</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">extract_metadata</a>(self, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>file_list</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">filter_books</a>(self)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>html_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">import_books</a>(self, list=None)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>opf_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">process_book</a>(book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>root_dir</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">scan_folder</a>(self, _path=None)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,220 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.storage.Storage Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>storage</b></li><li class="navelem"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.storage.Storage Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0ed6b941570b53aa8666104204fdd3b6"><td class="memItemLeft" align="right" valign="top"><a id="a0ed6b941570b53aa8666104204fdd3b6"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self, config)</td></tr>
<tr class="separator:a0ed6b941570b53aa8666104204fdd3b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41c3c4f5708364ac134cef63fe54c221"><td class="memItemLeft" align="right" valign="top"><a id="a41c3c4f5708364ac134cef63fe54c221"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>check_ownership</b> (self, table=None)</td></tr>
<tr class="separator:a41c3c4f5708364ac134cef63fe54c221"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0fdacb661febbfa3cba95e578ad2112"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae0fdacb661febbfa3cba95e578ad2112">create_tables</a> (self)</td></tr>
<tr class="separator:ae0fdacb661febbfa3cba95e578ad2112"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a912a5030c1277bb9b635eb4bb5c97c40"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a912a5030c1277bb9b635eb4bb5c97c40">insert_book</a> (self, book)</td></tr>
<tr class="separator:a912a5030c1277bb9b635eb4bb5c97c40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5c8e584946dd5e4ff6e9b1379bc3c6b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa5c8e584946dd5e4ff6e9b1379bc3c6b">book_paths_list</a> (self)</td></tr>
<tr class="separator:aa5c8e584946dd5e4ff6e9b1379bc3c6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a394cfed178f5fd150ed5f1bca13dfc05"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a394cfed178f5fd150ed5f1bca13dfc05">commit</a> (self)</td></tr>
<tr class="separator:a394cfed178f5fd150ed5f1bca13dfc05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a112f9b3fbb18b9475fdeba6245d90fdf"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a112f9b3fbb18b9475fdeba6245d90fdf">close</a> (self)</td></tr>
<tr class="separator:a112f9b3fbb18b9475fdeba6245d90fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a590a49f74a9d7afac613ee447e8056d7"><td class="memItemLeft" align="right" valign="top"><a id="a590a49f74a9d7afac613ee447e8056d7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>sql</b></td></tr>
<tr class="separator:a590a49f74a9d7afac613ee447e8056d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8163ce045eb3cf6e2ac26797ec712b7d"><td class="memItemLeft" align="right" valign="top"><a id="a8163ce045eb3cf6e2ac26797ec712b7d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>user</b></td></tr>
<tr class="separator:a8163ce045eb3cf6e2ac26797ec712b7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dd09d87e35603506a37b61a68c98d43"><td class="memItemLeft" align="right" valign="top"><a id="a5dd09d87e35603506a37b61a68c98d43"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>password</b></td></tr>
<tr class="separator:a5dd09d87e35603506a37b61a68c98d43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1f7326b0de7f089d60564af42311aa1"><td class="memItemLeft" align="right" valign="top"><a id="aa1f7326b0de7f089d60564af42311aa1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_host</b></td></tr>
<tr class="separator:aa1f7326b0de7f089d60564af42311aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26ddd4bc23e668c5cba6473366e1e107"><td class="memItemLeft" align="right" valign="top"><a id="a26ddd4bc23e668c5cba6473366e1e107"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_port</b></td></tr>
<tr class="separator:a26ddd4bc23e668c5cba6473366e1e107"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaa876b609e0c23b0433b7fad92fcdde"><td class="memItemLeft" align="right" valign="top"><a id="acaa876b609e0c23b0433b7fad92fcdde"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db</b></td></tr>
<tr class="separator:acaa876b609e0c23b0433b7fad92fcdde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a289524152eea2c6f87ebe75b57702f8e"><td class="memItemLeft" align="right" valign="top"><a id="a289524152eea2c6f87ebe75b57702f8e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b></td></tr>
<tr class="separator:a289524152eea2c6f87ebe75b57702f8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26daf3e02f41856cbab2c4a0a2ac392c"><td class="memItemLeft" align="right" valign="top"><a id="a26daf3e02f41856cbab2c4a0a2ac392c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cursor</b></td></tr>
<tr class="separator:a26daf3e02f41856cbab2c4a0a2ac392c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Contains all methods for system storage</pre> </div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa5c8e584946dd5e4ff6e9b1379bc3c6b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5c8e584946dd5e4ff6e9b1379bc3c6b">&#9670;&nbsp;</a></span>book_paths_list()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.storage.Storage.book_paths_list </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get file paths from database for comparison to system files
</pre>
</div>
</div>
<a id="a112f9b3fbb18b9475fdeba6245d90fdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a112f9b3fbb18b9475fdeba6245d90fdf">&#9670;&nbsp;</a></span>close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.storage.Storage.close </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Close database connection
</pre>
</div>
</div>
<a id="a394cfed178f5fd150ed5f1bca13dfc05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a394cfed178f5fd150ed5f1bca13dfc05">&#9670;&nbsp;</a></span>commit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.storage.Storage.commit </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Commit database transactions
</pre>
</div>
</div>
<a id="ae0fdacb661febbfa3cba95e578ad2112"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0fdacb661febbfa3cba95e578ad2112">&#9670;&nbsp;</a></span>create_tables()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.storage.Storage.create_tables </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Create table structure</pre>
</div>
</div>
<a id="a912a5030c1277bb9b635eb4bb5c97c40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a912a5030c1277bb9b635eb4bb5c97c40">&#9670;&nbsp;</a></span>insert_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.storage.Storage.insert_book </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Insert book in database
:returns: True if succeeds False if not
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">storage.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,72 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>pyShelf</b></li><li class="navelem"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">BookDisplay</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.pyShelf.BookDisplay Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a854cd5d2a24a7ffcd97d080ac0b394c7">__init__</a>(self, **kwargs)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>books_per_page</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a8525b4f683d1d19e23f78e72c3b2984a">booksPerPage</a>(self, screen_size)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>current_page</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5dd3965776e63d09dfb0f887f88a9582">nextPage</a>(self)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a59098e1427ae89dba07ea0790dd8e0ed">previousPage</a>(self)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>screen_size</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>thumbnail_scale</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thumbnail_size</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>total_pages</b> (defined in <a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a>)</td><td class="entry"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">src.backend.lib.pyShelf.BookDisplay</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,113 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.api_hooks.DuckDuckGo Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>api_hooks</b></li><li class="navelem"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.api_hooks.DuckDuckGo Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5ce9895f664e0e33260f2ab91d6a28ca"><td class="memItemLeft" align="right" valign="top"><a id="a5ce9895f664e0e33260f2ab91d6a28ca"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self)</td></tr>
<tr class="separator:a5ce9895f664e0e33260f2ab91d6a28ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeba433d4d2462604ddc498aaa22968a3"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aeba433d4d2462604ddc498aaa22968a3">image_result</a> (self, query)</td></tr>
<tr class="separator:aeba433d4d2462604ddc498aaa22968a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a41e688e2982f3079f49fe09fa8791011"><td class="memItemLeft" align="right" valign="top"><a id="a41e688e2982f3079f49fe09fa8791011"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>url</b></td></tr>
<tr class="separator:a41e688e2982f3079f49fe09fa8791011"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">duckduckgo related searching</pre> </div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aeba433d4d2462604ddc498aaa22968a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeba433d4d2462604ddc498aaa22968a3">&#9670;&nbsp;</a></span>image_result()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.api_hooks.DuckDuckGo.image_result </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>query</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Returns json containing url to image
:param _key: &amp;t=h_&amp;iar=images&amp;iax=images&amp;ia=images&amp;format=json&amp;pretty=1
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">api_hooks.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.tests.library_test.TestCatalogue Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.tests.library_test.TestCatalogue Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0edf6f7b2123e6ce8b21e049ec44f36e"><td class="memItemLeft" align="right" valign="top"><a id="a0edf6f7b2123e6ce8b21e049ec44f36e"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>test_filter_books</b> (self)</td></tr>
<tr class="separator:a0edf6f7b2123e6ce8b21e049ec44f36e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a32161d12b7ebe948a169edf36315bcd8"><td class="memItemLeft" align="right" valign="top"><a id="a32161d12b7ebe948a169edf36315bcd8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root</b> = os.path.abspath(os.path.curdir)</td></tr>
<tr class="separator:a32161d12b7ebe948a169edf36315bcd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35dc3a5637fb18c85b31aecfbff8bf95"><td class="memItemLeft" align="right" valign="top"><a id="a35dc3a5637fb18c85b31aecfbff8bf95"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b> = <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a>()</td></tr>
<tr class="separator:a35dc3a5637fb18c85b31aecfbff8bf95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/tests/<a class="el" href="../../">library_test.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,197 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.config.Config Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>config</b></li><li class="navelem"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.config.Config Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for src.backend.lib.config.Config:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png" usemap="#src.backend.lib.config.Config_map" alt=""/>
<map id="src.backend.lib.config.Config_map" name="src.backend.lib.config.Config_map">
<area href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html" alt="src.backend.tests.library_test.Test_Config" shape="rect" coords="0,56,249,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a282f5cb33ebce51fdefdb20b571b7ee8"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8">__init__</a> (self, root)</td></tr>
<tr class="separator:a282f5cb33ebce51fdefdb20b571b7ee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a99caf1885585c5baeacad038272fdb"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb">open_file</a> (self, _cp)</td></tr>
<tr class="separator:a2a99caf1885585c5baeacad038272fdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memItemLeft" align="right" valign="top"><a id="a73eef160e0fbb7d27b35af88f9a08e3b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_path</b></td></tr>
<tr class="separator:a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbff70657f2e68abd8dec5a497e22019"><td class="memItemLeft" align="right" valign="top"><a id="adbff70657f2e68abd8dec5a497e22019"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TITLE</b></td></tr>
<tr class="separator:adbff70657f2e68abd8dec5a497e22019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60406233a916d5bc4c26f178081b811d"><td class="memItemLeft" align="right" valign="top"><a id="a60406233a916d5bc4c26f178081b811d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>VERSION</b></td></tr>
<tr class="separator:a60406233a916d5bc4c26f178081b811d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32df23365f00a8014d8bafd797da06d0"><td class="memItemLeft" align="right" valign="top"><a id="a32df23365f00a8014d8bafd797da06d0"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_shelf</b></td></tr>
<tr class="separator:a32df23365f00a8014d8bafd797da06d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24163ce536b9b86d2020cd00e04d096"><td class="memItemLeft" align="right" valign="top"><a id="ae24163ce536b9b86d2020cd00e04d096"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>catalogue_db</b></td></tr>
<tr class="separator:ae24163ce536b9b86d2020cd00e04d096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a672d2e335f4f85f64b0416f5886b282f"><td class="memItemLeft" align="right" valign="top"><a id="a672d2e335f4f85f64b0416f5886b282f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>user</b></td></tr>
<tr class="separator:a672d2e335f4f85f64b0416f5886b282f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a301b1324af2ae076e8782fcea79cd7f9"><td class="memItemLeft" align="right" valign="top"><a id="a301b1324af2ae076e8782fcea79cd7f9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>password</b></td></tr>
<tr class="separator:a301b1324af2ae076e8782fcea79cd7f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa119c468373043e4c74783c224b5a79e"><td class="memItemLeft" align="right" valign="top"><a id="aa119c468373043e4c74783c224b5a79e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_host</b></td></tr>
<tr class="separator:aa119c468373043e4c74783c224b5a79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa859d999451eba07b8d0885665925a7e"><td class="memItemLeft" align="right" valign="top"><a id="aa859d999451eba07b8d0885665925a7e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_port</b></td></tr>
<tr class="separator:aa859d999451eba07b8d0885665925a7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bb596f51b0097c836cd6307dd03583f"><td class="memItemLeft" align="right" valign="top"><a id="a6bb596f51b0097c836cd6307dd03583f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>file_array</b></td></tr>
<tr class="separator:a6bb596f51b0097c836cd6307dd03583f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a905c0db0851be868400284fa30e79e96"><td class="memItemLeft" align="right" valign="top"><a id="a905c0db0851be868400284fa30e79e96"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root</b></td></tr>
<tr class="separator:a905c0db0851be868400284fa30e79e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0ad7dbde42874a86718469d772d2e32"><td class="memItemLeft" align="right" valign="top"><a id="af0ad7dbde42874a86718469d772d2e32"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>auto_scan</b></td></tr>
<tr class="separator:af0ad7dbde42874a86718469d772d2e32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1caead108725ffe2edd4a1b7b8ab86"><td class="memItemLeft" align="right" valign="top"><a id="abd1caead108725ffe2edd4a1b7b8ab86"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>allowed_hosts</b></td></tr>
<tr class="separator:abd1caead108725ffe2edd4a1b7b8ab86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memItemLeft" align="right" valign="top"><a id="a088b23bf4d560c3e29bc63ac2d97bb22"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_user</b></td></tr>
<tr class="separator:a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15420665376e4aab800b46e9785a5a95"><td class="memItemLeft" align="right" valign="top"><a id="a15420665376e4aab800b46e9785a5a95"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_pass</b></td></tr>
<tr class="separator:a15420665376e4aab800b46e9785a5a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Main System Configuration
</pre> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a282f5cb33ebce51fdefdb20b571b7ee8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a282f5cb33ebce51fdefdb20b571b7ee8">&#9670;&nbsp;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.config.Config.__init__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>root</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize main configuration options
</pre>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a2a99caf1885585c5baeacad038272fdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a99caf1885585c5baeacad038272fdb">&#9670;&nbsp;</a></span>open_file()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.config.Config.open_file </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_cp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens config.json and reads in configuration options
</pre>
<p>Reimplemented in <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f">src.backend.tests.library_test.Test_Config</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">config.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.InitFiles Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>pyShelf</b></li><li class="navelem"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.pyShelf.InitFiles Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a702bff756979fb9f345074b292a8af7d"><td class="memItemLeft" align="right" valign="top"><a id="a702bff756979fb9f345074b292a8af7d"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self, file_array)</td></tr>
<tr class="separator:a702bff756979fb9f345074b292a8af7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6c693e30b5a121168f831aece10f07e"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab6c693e30b5a121168f831aece10f07e">CreateFile</a> (self, _pointer)</td></tr>
<tr class="separator:ab6c693e30b5a121168f831aece10f07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">First run file creation operations</pre> </div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ab6c693e30b5a121168f831aece10f07e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6c693e30b5a121168f831aece10f07e">&#9670;&nbsp;</a></span>CreateFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.pyShelf.InitFiles.CreateFile </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_pointer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Checks if file exists and creates it if not
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">pyShelf.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,206 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.BookDisplay Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>pyShelf</b></li><li class="navelem"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html">BookDisplay</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.lib.pyShelf.BookDisplay Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a854cd5d2a24a7ffcd97d080ac0b394c7"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a854cd5d2a24a7ffcd97d080ac0b394c7">__init__</a> (self, **kwargs)</td></tr>
<tr class="separator:a854cd5d2a24a7ffcd97d080ac0b394c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dd3965776e63d09dfb0f887f88a9582"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5dd3965776e63d09dfb0f887f88a9582">nextPage</a> (self)</td></tr>
<tr class="separator:a5dd3965776e63d09dfb0f887f88a9582"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59098e1427ae89dba07ea0790dd8e0ed"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a59098e1427ae89dba07ea0790dd8e0ed">previousPage</a> (self)</td></tr>
<tr class="separator:a59098e1427ae89dba07ea0790dd8e0ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8525b4f683d1d19e23f78e72c3b2984a"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a8525b4f683d1d19e23f78e72c3b2984a">booksPerPage</a> (self, screen_size)</td></tr>
<tr class="separator:a8525b4f683d1d19e23f78e72c3b2984a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ab3ed4a51611e62f837670050fba50f72"><td class="memItemLeft" align="right" valign="top"><a id="ab3ed4a51611e62f837670050fba50f72"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>books_per_page</b></td></tr>
<tr class="separator:ab3ed4a51611e62f837670050fba50f72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cd137b2812c7dd6dc01e025425aa3c2"><td class="memItemLeft" align="right" valign="top"><a id="a5cd137b2812c7dd6dc01e025425aa3c2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>current_page</b></td></tr>
<tr class="separator:a5cd137b2812c7dd6dc01e025425aa3c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc9d22b4da0f3b95767bbd6db24474eb"><td class="memItemLeft" align="right" valign="top"><a id="afc9d22b4da0f3b95767bbd6db24474eb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>thumbnail_size</b></td></tr>
<tr class="separator:afc9d22b4da0f3b95767bbd6db24474eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc3581b0c9e98113fd0f071b0d37b920"><td class="memItemLeft" align="right" valign="top"><a id="afc3581b0c9e98113fd0f071b0d37b920"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>thumbnail_scale</b></td></tr>
<tr class="separator:afc3581b0c9e98113fd0f071b0d37b920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdd26912d13cb3d2b55517611d5abbeb"><td class="memItemLeft" align="right" valign="top"><a id="acdd26912d13cb3d2b55517611d5abbeb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>total_pages</b></td></tr>
<tr class="separator:acdd26912d13cb3d2b55517611d5abbeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80548fcafdac195c9b097b10ff4a28f2"><td class="memItemLeft" align="right" valign="top"><a id="a80548fcafdac195c9b097b10ff4a28f2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>screen_size</b></td></tr>
<tr class="separator:a80548fcafdac195c9b097b10ff4a28f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">All functions related to displaying book information in the HTML UI</pre> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a854cd5d2a24a7ffcd97d080ac0b394c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a854cd5d2a24a7ffcd97d080ac0b394c7">&#9670;&nbsp;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.pyShelf.BookDisplay.__init__ </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**&#160;</td>
<td class="paramname"><em>kwargs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize class variables
:return: None
</pre>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a8525b4f683d1d19e23f78e72c3b2984a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8525b4f683d1d19e23f78e72c3b2984a">&#9670;&nbsp;</a></span>booksPerPage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.pyShelf.BookDisplay.booksPerPage </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>screen_size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">## TODO Remove me
Set books per page
:param screen_size: Array containing x,y pixel sizes
:return: self.books_per_page
</pre>
</div>
</div>
<a id="a5dd3965776e63d09dfb0f887f88a9582"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5dd3965776e63d09dfb0f887f88a9582">&#9670;&nbsp;</a></span>nextPage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.pyShelf.BookDisplay.nextPage </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">## TODO Remove me
Goto next book page
:return: new current_page
</pre>
</div>
</div>
<a id="a59098e1427ae89dba07ea0790dd8e0ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59098e1427ae89dba07ea0790dd8e0ed">&#9670;&nbsp;</a></span>previousPage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.pyShelf.BookDisplay.previousPage </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">## TODO Remove me
Goto previous book page
:return: new current_page
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="../../">pyShelf.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>storage</b></li><li class="navelem"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.storage.Storage Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self, config) (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa5c8e584946dd5e4ff6e9b1379bc3c6b">book_paths_list</a>(self)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>check_ownership</b>(self, table=None) (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a112f9b3fbb18b9475fdeba6245d90fdf">close</a>(self)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a394cfed178f5fd150ed5f1bca13dfc05">commit</a>(self)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae0fdacb661febbfa3cba95e578ad2112">create_tables</a>(self)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>cursor</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>db_host</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_port</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a912a5030c1277bb9b635eb4bb5c97c40">insert_book</a>(self, book)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>password</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>sql</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>user</b> (defined in <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a>)</td><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">src.backend.lib.storage.Storage</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,462 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Catalogue Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.tests.library_test.Test_Catalogue Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for src.backend.tests.library_test.Test_Catalogue:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png" usemap="#src.backend.tests.library_5Ftest.Test_5FCatalogue_map" alt=""/>
<map id="src.backend.tests.library_5Ftest.Test_5FCatalogue_map" name="src.backend.tests.library_5Ftest.Test_5FCatalogue_map">
<area href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html" alt="src.backend.lib.library.Catalogue" shape="rect" coords="0,0,269,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8e47e8b49226d58e6eaedeba65d16308"><td class="memItemLeft" align="right" valign="top"><a id="a8e47e8b49226d58e6eaedeba65d16308"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self)</td></tr>
<tr class="separator:a8e47e8b49226d58e6eaedeba65d16308"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad708c5a24143ca6fb38733f62396ee21"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">filter_books</a> (self)</td></tr>
<tr class="separator:ad708c5a24143ca6fb38733f62396ee21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a204c5171b7de8ddd199563fd1b252032"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">scan_folder</a> (self, _path=None)</td></tr>
<tr class="separator:a204c5171b7de8ddd199563fd1b252032"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abab8649249ef71103f314aa29644a739"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">extract_metadata</a> (self, book)</td></tr>
<tr class="separator:abab8649249ef71103f314aa29644a739"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="separator:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="separator:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1c3b416586faaabb37515705588a89"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="separator:abd1c3b416586faaabb37515705588a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">compare_shelf_current</a> (self)</td></tr>
<tr class="separator:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56675f98c8db93b6ca8c6731fde8e45"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">import_books</a> (self, list=None)</td></tr>
<tr class="separator:af56675f98c8db93b6ca8c6731fde8e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aedf70ab79105f8251d36848fb790fb9f"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">process_book</a> (book)</td></tr>
<tr class="separator:aedf70ab79105f8251d36848fb790fb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ae45671c4e95d835b38bb83002ec8dd54"><td class="memItemLeft" align="right" valign="top"><a id="ae45671c4e95d835b38bb83002ec8dd54"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_shelf</b></td></tr>
<tr class="separator:ae45671c4e95d835b38bb83002ec8dd54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memItemLeft" align="right" valign="top"><a id="ac443ee74f10c7e2e128ddb2f0dfe045e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>file_list</b></td></tr>
<tr class="separator:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top"><a id="a2026c090be4f55cfe941d16a01b4ea75"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>opf_regx</b></td></tr>
<tr class="separator:a2026c090be4f55cfe941d16a01b4ea75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top"><a id="a576649115ba3717c475d60eae96f6204"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cover_regx</b></td></tr>
<tr class="separator:a576649115ba3717c475d60eae96f6204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top"><a id="a686b224643b060423a49a017d4a7abd8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>html_regx</b></td></tr>
<tr class="separator:a686b224643b060423a49a017d4a7abd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top"><a id="a3e5edca4ab942e3f71958c90b5c45023"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root_dir</b></td></tr>
<tr class="separator:a3e5edca4ab942e3f71958c90b5c45023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top"><a id="a340d869b8f7c16007773de40a24005ce"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_folder</b></td></tr>
<tr class="separator:a340d869b8f7c16007773de40a24005ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top"><a id="a1129571b5c1a358e71d125cc47f9bf36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>books</b></td></tr>
<tr class="separator:a1129571b5c1a358e71d125cc47f9bf36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top"><a id="acd6cb62aae1221ee590734b70f76888a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_pointer</b></td></tr>
<tr class="separator:acd6cb62aae1221ee590734b70f76888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top"><a id="afb43be37337c74fc1bfe1415ded423f9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b></td></tr>
<tr class="separator:afb43be37337c74fc1bfe1415ded423f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a75b4d33e6dee46d4d18e6623d30f6dd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b4d33e6dee46d4d18e6623d30f6dd2">&#9670;&nbsp;</a></span>compare_shelf_current()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls storage system, gets list of books stored and compares against files on disk
</pre>
</div>
</div>
<a id="a0993bce2b4fe64a46d96a5eba1d5af50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0993bce2b4fe64a46d96a5eba1d5af50">&#9670;&nbsp;</a></span>extract_content()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching opf_regx
</pre>
</div>
</div>
<a id="abcf0dc2d816393afbfb07ea9f5c152f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcf0dc2d816393afbfb07ea9f5c152f9">&#9670;&nbsp;</a></span>extract_cover_html()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching html_regx
</pre>
</div>
</div>
<a id="abd1c3b416586faaabb37515705588a89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1c3b416586faaabb37515705588a89">&#9670;&nbsp;</a></span>extract_cover_image()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching cover_regx
</pre>
</div>
</div>
<a id="abab8649249ef71103f314aa29644a739"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abab8649249ef71103f314aa29644a739">&#9670;&nbsp;</a></span>extract_metadata()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_metadata </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata and cover picture
book['path'] == Full path to ebook file
book['files'] == list of files from self.process_book(book)
</pre>
</div>
</div>
<a id="ad708c5a24143ca6fb38733f62396ee21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad708c5a24143ca6fb38733f62396ee21">&#9670;&nbsp;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.tests.library_test.Test_Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files
Proceeds to call process_book
:returns self._book_list_expanded: json string containing all book metadata
</pre>
<p>Reimplemented from <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">src.backend.lib.library.Catalogue</a>.</p>
</div>
</div>
<a id="af56675f98c8db93b6ca8c6731fde8e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af56675f98c8db93b6ca8c6731fde8e45">&#9670;&nbsp;</a></span>import_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.import_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>list</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Main entry point for import operations.
Gets a list of new files via compare_shelf_current.
Iterates over list and inserts new books into database.
</pre>
</div>
</div>
<a id="aedf70ab79105f8251d36848fb790fb9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedf70ab79105f8251d36848fb790fb9f">&#9670;&nbsp;</a></span>process_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.process_book </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a204c5171b7de8ddd199563fd1b252032"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a204c5171b7de8ddd199563fd1b252032">&#9670;&nbsp;</a></span>scan_folder()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.scan_folder </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/tests/<a class="el" href="../../">library_test.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

View File

@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.tests.library_test.Test_Catalogue Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self) (defined in <a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a>)</td><td class="entry"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>__init__</b>(self, config) (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book_folder</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>book_shelf</b> (defined in <a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a>)</td><td class="entry"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>books</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">compare_shelf_current</a>(self)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>cover_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>db_pointer</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">extract_content</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">extract_cover_html</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">extract_cover_image</a>(self, book_zip, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">extract_metadata</a>(self, book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>file_list</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">filter_books</a>(self)</td><td class="entry"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">src.backend.tests.library_test.Test_Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>html_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">import_books</a>(self, list=None)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>opf_regx</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">process_book</a>(book)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>root_dir</b> (defined in <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a>)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">scan_folder</a>(self, _path=None)</td><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">src.backend.lib.library.Catalogue</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>lib</b></li><li class="navelem"><b>api_hooks</b></li><li class="navelem"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src.backend.lib.api_hooks.DuckDuckGo Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__init__</b>(self) (defined in <a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a>)</td><td class="entry"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aeba433d4d2462604ddc498aaa22968a3">image_result</a>(self, query)</td><td class="entry"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>url</b> (defined in <a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a>)</td><td class="entry"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">src.backend.lib.api_hooks.DuckDuckGo</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.tests.config_test.TestConfig Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>config_test</b></li><li class="navelem"><a class="el" href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.tests.config_test.TestConfig Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6633d1f032be23ccdb59d01a3a7568fb"><td class="memItemLeft" align="right" valign="top"><a id="a6633d1f032be23ccdb59d01a3a7568fb"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>test_book_dir</b> (self)</td></tr>
<tr class="separator:a6633d1f032be23ccdb59d01a3a7568fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5f1fc044ca72b5e98b62a973863d29b"><td class="memItemLeft" align="right" valign="top"><a id="ad5f1fc044ca72b5e98b62a973863d29b"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>test_title</b> (self)</td></tr>
<tr class="separator:ad5f1fc044ca72b5e98b62a973863d29b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f806e5eab45097ad20b12611f96ca21"><td class="memItemLeft" align="right" valign="top"><a id="a9f806e5eab45097ad20b12611f96ca21"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>test_version</b> (self)</td></tr>
<tr class="separator:a9f806e5eab45097ad20b12611f96ca21"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:aca12cc41778750762ea81d24236cfd6e"><td class="memItemLeft" align="right" valign="top"><a id="aca12cc41778750762ea81d24236cfd6e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b> = <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a>(os.path.abspath(os.path.curdir))</td></tr>
<tr class="separator:aca12cc41778750762ea81d24236cfd6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/tests/<a class="el" href="../../">config_test.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -51,7 +51,7 @@ $(function() {
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -55,7 +55,7 @@ Directories</h2></td></tr>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -55,7 +55,7 @@ Directories</h2></td></tr>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -51,7 +51,7 @@ $(function() {
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

23
docs/html/files.html vendored
View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -52,21 +52,22 @@ $(function() {
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>api_hooks.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>api_hooks.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>config.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>config.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>library.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>display.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>pyShelf.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>library.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>storage.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_0_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>pyShelf.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span id="img_0_0_1_" class="iconfopen" onclick="toggleFolder('0_0_1_')">&#160;</span><a class="el" href="dir_9020577e2da81c4cf5a5554c26431f94.html" target="_self">tests</a></td><td class="desc"></td></tr> <tr id="row_0_0_0_6_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>storage.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span id="img_0_0_1_" class="iconfopen" onclick="toggleFolder('0_0_1_')">&#160;</span><a class="el" href="dir_9020577e2da81c4cf5a5554c26431f94.html" target="_self">tests</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_1_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>config_test.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_2_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>library_test.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>config_test.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_1_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>library_test.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>pyShelf_ScanLibrary.py</b></td><td class="desc"></td></tr> <tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=".html"><span class="icondoc"></span></a><b>pyShelf_ScanLibrary.py</b></td><td class="desc"></td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -42,76 +42,76 @@ $(function() {
<div class="contents"> <div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul> <div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>__init__() <li>__init__()
: <a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#acc3a283ef348aaf2fc0dbaa4bd1ad3c9">pyShelf.src.backend.lib.config.Config</a> : <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8">src.backend.lib.config.Config</a>
, <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a0498af17fbd47db504acada242b14fad">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> , <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a854cd5d2a24a7ffcd97d080ac0b394c7">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>book_paths_list() <li>book_paths_list()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a27348bc85856956bade10ec39d51b77e">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa5c8e584946dd5e4ff6e9b1379bc3c6b">src.backend.lib.storage.Storage</a>
</li> </li>
<li>booksPerPage() <li>booksPerPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#ac41a7eaf5b19bc7fcbd37c3a82fbcfc9">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a8525b4f683d1d19e23f78e72c3b2984a">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>close() <li>close()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#aea7868ca9c943e107e2454871c730555">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a112f9b3fbb18b9475fdeba6245d90fdf">src.backend.lib.storage.Storage</a>
</li> </li>
<li>commit() <li>commit()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a92c651d41e130c97e73703eb608c82c4">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a394cfed178f5fd150ed5f1bca13dfc05">src.backend.lib.storage.Storage</a>
</li> </li>
<li>compare_shelf_current() <li>compare_shelf_current()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1463e646d864f5ee4710bec71990995a">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>create_tables() <li>create_tables()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a7532f4b2a2af0f7100253642f8af4597">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae0fdacb661febbfa3cba95e578ad2112">src.backend.lib.storage.Storage</a>
</li> </li>
<li>CreateFile() <li>CreateFile()
: <a class="el" href="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#a614e5bc5f38f75680bba3f1b103c9bb4">pyShelf.src.backend.lib.pyShelf.InitFiles</a> : <a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab6c693e30b5a121168f831aece10f07e">src.backend.lib.pyShelf.InitFiles</a>
</li> </li>
<li>extract_content() <li>extract_content()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa292917545d1569ddb8caf65577a8a57">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_cover_html() <li>extract_cover_html()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c306bfe05990039b81731992b6f31d6">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_cover_image() <li>extract_cover_image()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abeffa733c446b5a367a4225d6a6b5a1e">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_metadata() <li>extract_metadata()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a97f42f90efb06225637e28555b37ca01">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>filter_books() <li>filter_books()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ab4ba5b4c097789855ded4e7cb05ee0db">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">src.backend.lib.library.Catalogue</a>
, <a class="el" href="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa2a6c936f7902c6e9287f551fa274edf">pyShelf.src.backend.tests.library_test.Test_Catalogue</a> , <a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">src.backend.tests.library_test.Test_Catalogue</a>
</li> </li>
<li>image_result() <li>image_result()
: <a class="el" href="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#a9ecf411b77aca69bee4e1c619b37e521">pyShelf.src.backend.lib.api_hooks.DuckDuckGo</a> : <a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aeba433d4d2462604ddc498aaa22968a3">src.backend.lib.api_hooks.DuckDuckGo</a>
</li> </li>
<li>import_books() <li>import_books()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a10be990c40894e3ec45b475e2d89fe96">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>insert_book() <li>insert_book()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad08ae5682a3e3e66658eee723084fe2a">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a912a5030c1277bb9b635eb4bb5c97c40">src.backend.lib.storage.Storage</a>
</li> </li>
<li>nextPage() <li>nextPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a7a6ed64b1b2f5de6d4b3b21674d61ce2">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5dd3965776e63d09dfb0f887f88a9582">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>open_file() <li>open_file()
: <a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a9dbecd1e259e7bd71ab24b55d4093513">pyShelf.src.backend.lib.config.Config</a> : <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb">src.backend.lib.config.Config</a>
, <a class="el" href="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ae3bfa4633a2bf86c86d40151b56688b8">pyShelf.src.backend.tests.library_test.Test_Config</a> , <a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f">src.backend.tests.library_test.Test_Config</a>
</li> </li>
<li>previousPage() <li>previousPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a614c79a2ed8f5c5b0f184858dfebc71e">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a59098e1427ae89dba07ea0790dd8e0ed">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>process_book() <li>process_book()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a84b765167953466756502d0071c69331">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>scan_folder() <li>scan_folder()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5a18784d69536167a50258ce9b1737b1">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">src.backend.lib.library.Catalogue</a>
</li> </li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -42,76 +42,76 @@ $(function() {
<div class="contents"> <div class="contents">
&#160;<ul> &#160;<ul>
<li>__init__() <li>__init__()
: <a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#acc3a283ef348aaf2fc0dbaa4bd1ad3c9">pyShelf.src.backend.lib.config.Config</a> : <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8">src.backend.lib.config.Config</a>
, <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a0498af17fbd47db504acada242b14fad">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> , <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a854cd5d2a24a7ffcd97d080ac0b394c7">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>book_paths_list() <li>book_paths_list()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a27348bc85856956bade10ec39d51b77e">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa5c8e584946dd5e4ff6e9b1379bc3c6b">src.backend.lib.storage.Storage</a>
</li> </li>
<li>booksPerPage() <li>booksPerPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#ac41a7eaf5b19bc7fcbd37c3a82fbcfc9">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a8525b4f683d1d19e23f78e72c3b2984a">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>close() <li>close()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#aea7868ca9c943e107e2454871c730555">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a112f9b3fbb18b9475fdeba6245d90fdf">src.backend.lib.storage.Storage</a>
</li> </li>
<li>commit() <li>commit()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a92c651d41e130c97e73703eb608c82c4">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a394cfed178f5fd150ed5f1bca13dfc05">src.backend.lib.storage.Storage</a>
</li> </li>
<li>compare_shelf_current() <li>compare_shelf_current()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1463e646d864f5ee4710bec71990995a">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>create_tables() <li>create_tables()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a7532f4b2a2af0f7100253642f8af4597">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae0fdacb661febbfa3cba95e578ad2112">src.backend.lib.storage.Storage</a>
</li> </li>
<li>CreateFile() <li>CreateFile()
: <a class="el" href="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#a614e5bc5f38f75680bba3f1b103c9bb4">pyShelf.src.backend.lib.pyShelf.InitFiles</a> : <a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab6c693e30b5a121168f831aece10f07e">src.backend.lib.pyShelf.InitFiles</a>
</li> </li>
<li>extract_content() <li>extract_content()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa292917545d1569ddb8caf65577a8a57">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_cover_html() <li>extract_cover_html()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c306bfe05990039b81731992b6f31d6">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_cover_image() <li>extract_cover_image()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abeffa733c446b5a367a4225d6a6b5a1e">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>extract_metadata() <li>extract_metadata()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a97f42f90efb06225637e28555b37ca01">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>filter_books() <li>filter_books()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ab4ba5b4c097789855ded4e7cb05ee0db">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">src.backend.lib.library.Catalogue</a>
, <a class="el" href="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa2a6c936f7902c6e9287f551fa274edf">pyShelf.src.backend.tests.library_test.Test_Catalogue</a> , <a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">src.backend.tests.library_test.Test_Catalogue</a>
</li> </li>
<li>image_result() <li>image_result()
: <a class="el" href="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#a9ecf411b77aca69bee4e1c619b37e521">pyShelf.src.backend.lib.api_hooks.DuckDuckGo</a> : <a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aeba433d4d2462604ddc498aaa22968a3">src.backend.lib.api_hooks.DuckDuckGo</a>
</li> </li>
<li>import_books() <li>import_books()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a10be990c40894e3ec45b475e2d89fe96">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>insert_book() <li>insert_book()
: <a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad08ae5682a3e3e66658eee723084fe2a">pyShelf.src.backend.lib.storage.Storage</a> : <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a912a5030c1277bb9b635eb4bb5c97c40">src.backend.lib.storage.Storage</a>
</li> </li>
<li>nextPage() <li>nextPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a7a6ed64b1b2f5de6d4b3b21674d61ce2">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5dd3965776e63d09dfb0f887f88a9582">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>open_file() <li>open_file()
: <a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a9dbecd1e259e7bd71ab24b55d4093513">pyShelf.src.backend.lib.config.Config</a> : <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb">src.backend.lib.config.Config</a>
, <a class="el" href="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ae3bfa4633a2bf86c86d40151b56688b8">pyShelf.src.backend.tests.library_test.Test_Config</a> , <a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f">src.backend.tests.library_test.Test_Config</a>
</li> </li>
<li>previousPage() <li>previousPage()
: <a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a614c79a2ed8f5c5b0f184858dfebc71e">pyShelf.src.backend.lib.pyShelf.BookDisplay</a> : <a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a59098e1427ae89dba07ea0790dd8e0ed">src.backend.lib.pyShelf.BookDisplay</a>
</li> </li>
<li>process_book() <li>process_book()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a84b765167953466756502d0071c69331">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">src.backend.lib.library.Catalogue</a>
</li> </li>
<li>scan_folder() <li>scan_folder()
: <a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5a18784d69536167a50258ce9b1737b1">pyShelf.src.backend.lib.library.Catalogue</a> : <a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">src.backend.lib.library.Catalogue</a>
</li> </li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -46,22 +46,23 @@ $(function() {
<div class="contents"> <div class="contents">
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory"> <div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html" target="_self">pyShelf.src.backend.lib.pyShelf.BookDisplay</a></td><td class="desc"></td></tr> <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html" target="_self">src.backend.lib.pyShelf.BookDisplay</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html" target="_self">pyShelf.src.backend.lib.library.Catalogue</a></td><td class="desc"></td></tr> <tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html" target="_self">src.backend.lib.library.Catalogue</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html" target="_self">pyShelf.src.backend.tests.library_test.Test_Catalogue</a></td><td class="desc"></td></tr> <tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html" target="_self">src.backend.tests.library_test.Test_Catalogue</a></td><td class="desc"></td></tr>
<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html" target="_self">pyShelf.src.backend.lib.config.Config</a></td><td class="desc"></td></tr> <tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html" target="_self">src.backend.lib.config.Config</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html" target="_self">pyShelf.src.backend.tests.library_test.Test_Config</a></td><td class="desc"></td></tr> <tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html" target="_self">src.backend.tests.library_test.Test_Config</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html" target="_self">pyShelf.src.backend.lib.api_hooks.DuckDuckGo</a></td><td class="desc"></td></tr> <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html" target="_self">src.backend.lib.api_hooks.DuckDuckGo</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html" target="_self">pyShelf.src.backend.lib.pyShelf.InitFiles</a></td><td class="desc"></td></tr> <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html" target="_self">src.backend.lib.pyShelf.InitFiles</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html" target="_self">pyShelf.src.backend.lib.storage.Storage</a></td><td class="desc"></td></tr> <tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html" target="_self">src.backend.lib.storage.Storage</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html" target="_self">pyShelf.src.backend.tests.library_test.TestCatalogue</a></td><td class="desc"></td></tr> <tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html" target="_self">src.backend.lib.display.TerminalDisplay</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html" target="_self">pyShelf.src.backend.tests.config_test.TestConfig</a></td><td class="desc"></td></tr> <tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html" target="_self">src.backend.tests.library_test.TestCatalogue</a></td><td class="desc"></td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html" target="_self">src.backend.tests.config_test.TestConfig</a></td><td class="desc"></td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

345
docs/html/index.hhc vendored
View File

@@ -8,165 +8,192 @@
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class List"><param name="Local" value="annotated.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Class List"><param name="Local" value="annotated.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="backend"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="backend"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="api_hooks"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="api_hooks"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="DuckDuckGo"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DuckDuckGo"><param name="Local" value="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#a5ce9895f664e0e33260f2ab91d6a28ca"><param name="ImageNumber" value="11"></OBJECT>
<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="image_result"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aeba433d4d2462604ddc498aaa22968a3"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aa8a19ecca0cc92a3d617ab85ec251043"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="url"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#a41e688e2982f3079f49fe09fa8791011"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="image_result"><param name="Local" value="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#a9ecf411b77aca69bee4e1c619b37e521"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="url"><param name="Local" value="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#aa034dc54a6c85f0311e35c32242e4884"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Config"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#acc3a283ef348aaf2fc0dbaa4bd1ad3c9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="open_file"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a9dbecd1e259e7bd71ab24b55d4093513"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="auto_scan"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a9f39a470c9963035a112acca935b29fc"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_path"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a7454c270924a276016f903e369b829a5"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#aebb4cc0414b96bc1f8868da69b669706"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="catalogue_db"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#acee8b31f64a0ea29907c0b36b884c8c0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a01f7ce652a23290596d81e8048ab5bad"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#ad8e332f443a740092cfd73bd61d02e36"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_array"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#abc103fb3d969e1e6ada5c1d39ec92e21"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a973054b07100dc03a1ecf8f759e8b663"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a477a1b22bada1944ba5d8ac5bfca0567"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TITLE"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a3a1fefa92e72aa11ec4438faba2f7feb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#acc37158cf6f6f0c7dc9d5f51e6d9b405"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="VERSION"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html#a6feb1951a00ca1fc82a70634bacbd558"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="library"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Catalogue"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c31e22a5646223f0964c560d5b4eb28"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compare_shelf_current"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1463e646d864f5ee4710bec71990995a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_content"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa292917545d1569ddb8caf65577a8a57"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_html"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c306bfe05990039b81731992b6f31d6"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_image"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abeffa733c446b5a367a4225d6a6b5a1e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a97f42f90efb06225637e28555b37ca01"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="filter_books"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ab4ba5b4c097789855ded4e7cb05ee0db"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="import_books"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a10be990c40894e3ec45b475e2d89fe96"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="scan_folder"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5a18784d69536167a50258ce9b1737b1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_folder"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a519afd6144e843d57172d7aad5020919"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a04708cf94a0d4391d125b932200b9a79"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a159ee5951ae71faeae71a52b662f502c"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a603e0c7f6f867b54cb8255c2b0bb650b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="cover_regx"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acbffe01e963e4ece27a608da5fb49e32"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_pointer"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1064beb1ffc07daf754eab4ca59d2575"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_list"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1f3ebef642b34188c7ad49cff076db55"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="html_regx"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad2891f397d927169a8650847f615d402"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="opf_regx"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a2b23b2c4bfa2d4bb2e2b369cbf8833f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root_dir"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac8b3da5a79b942fb03f151d65c673a8f"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="BookDisplay"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a0498af17fbd47db504acada242b14fad"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="booksPerPage"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#ac41a7eaf5b19bc7fcbd37c3a82fbcfc9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="nextPage"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a7a6ed64b1b2f5de6d4b3b21674d61ce2"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="previousPage"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a614c79a2ed8f5c5b0f184858dfebc71e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books_per_page"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a55b877b6e4829d5d0f78b04d387c0dc1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="current_page"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a16bb6fea5df0b3b8a23869a2b241bf88"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="screen_size"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a9e5a5d1040bdef41c3e0f479bdc0ce5b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="thumbnail_scale"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#aa75542dcf41aa0bd5fedc1c59aaa4c55"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="thumbnail_size"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a2fc686651865b7185e783c4e98c0dac9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="total_pages"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a036a667c977eb35eb659ca570d1b5c28"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="InitFiles"><param name="Local" value="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#af7310746dd1535ada6891e35bbcffb99"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="CreateFile"><param name="Local" value="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#a614e5bc5f38f75680bba3f1b103c9bb4"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="storage"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Storage"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a91cd4a032d59e27f251602767663ba8c"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_paths_list"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a27348bc85856956bade10ec39d51b77e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="close"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#aea7868ca9c943e107e2454871c730555"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="commit"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a92c651d41e130c97e73703eb608c82c4"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="create_tables"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a7532f4b2a2af0f7100253642f8af4597"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="insert_book"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad08ae5682a3e3e66658eee723084fe2a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="cursor"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1c6f8923f7accceb114495cb783a3216"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae09691f51c6080036606130d45e342e8"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a7ec30ede190deb5ac506353296ee1688"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a5ebe78f76f168a704bfc1db557498dbc"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8b6ec6036bc242c1071bf5a7e5bb9a2f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="sql"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a75fe7e19d117f581ab9c64e8c8222117"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html#a0d5ef3dbb0c2098218ef827c1f802d95"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL> </UL>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="tests"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config_test"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Config"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TestConfig"><param name="Local" value="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a282f5cb33ebce51fdefdb20b571b7ee8"><param name="ImageNumber" value="11"></OBJECT>
<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="open_file"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2a99caf1885585c5baeacad038272fdb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_book_dir"><param name="Local" value="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#ad2e05b99a3bddefae99d2b662493fbf1"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="allowed_hosts"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#abd1caead108725ffe2edd4a1b7b8ab86"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_title"><param name="Local" value="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#aed92bfe91cd38930be701e0f53da31f5"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="auto_scan"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#af0ad7dbde42874a86718469d772d2e32"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_version"><param name="Local" value="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#a8aa7edab0a5bb64c12be3772d8946113"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="book_path"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a73eef160e0fbb7d27b35af88f9a08e3b"><param name="ImageNumber" value="11"></OBJECT>
</UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a32df23365f00a8014d8bafd797da06d0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="catalogue_db"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ae24163ce536b9b86d2020cd00e04d096"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#aa119c468373043e4c74783c224b5a79e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_pass"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a15420665376e4aab800b46e9785a5a95"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#aa859d999451eba07b8d0885665925a7e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_user"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a088b23bf4d560c3e29bc63ac2d97bb22"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_array"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a6bb596f51b0097c836cd6307dd03583f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a301b1324af2ae076e8782fcea79cd7f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a905c0db0851be868400284fa30e79e96"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TITLE"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#adbff70657f2e68abd8dec5a497e22019"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a672d2e335f4f85f64b0416f5886b282f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="VERSION"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a60406233a916d5bc4c26f178081b811d"><param name="ImageNumber" value="11"></OBJECT>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="library_test"><param name="ImageNumber" value="1"></OBJECT> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="display"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TerminalDisplay"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Test_Catalogue"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#afa49942e24c6223e64ad758e0e802205"><param name="ImageNumber" value="11"></OBJECT>
<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="banner"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a7389f9d61e403d76f2e0d2bc42d3163a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a1efda7a2db594af425f24b186f7a39b0"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="banner_render"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a8812bd27f26cd449da9cb4852c1354a4"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compare_shelf_current"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a1463e646d864f5ee4710bec71990995a"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="h_rule"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#acbbc7d41750aebbffbc66f60ab6d33b5"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_content"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa292917545d1569ddb8caf65577a8a57"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="installer"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a4d2e9f5cc0d5db6d1e555d2d7fab739e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_html"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a4c306bfe05990039b81731992b6f31d6"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="prompt"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a16f310fe8107fdc0f4fdedb8aa352706"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_image"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#abeffa733c446b5a367a4225d6a6b5a1e"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="screen"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a376e07b942f20d36f2900fb06027a69f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a97f42f90efb06225637e28555b37ca01"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="blue"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a042bb80ababcc1a33ad92a8f0e09394a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="filter_books"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa2a6c936f7902c6e9287f551fa274edf"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="clr_term"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a5091b937d9e7b5ab91a0c3d0de280a5e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="import_books"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a10be990c40894e3ec45b475e2d89fe96"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="green"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a8bfa93a859e2b58d66ff859a22b0113a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="scan_folder"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a5a18784d69536167a50258ce9b1737b1"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="home"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a7224c987c7c257100380b535434d82f1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_folder"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a519afd6144e843d57172d7aad5020919"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="slogan"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a4d6c3740b8803ea3e4ce00b6447def57"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#afc2ac20fb58c372546c69df0e5556a5d"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="term"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a641edfb4f048817b6cf5af9910b27263"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a159ee5951ae71faeae71a52b662f502c"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#ac489b64a131d1ecc8e3e05d49a1e5c0a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a603e0c7f6f867b54cb8255c2b0bb650b"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="version"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#a816b86bc765288caf928a9373ac7fcac"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="cover_regx"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#acbffe01e963e4ece27a608da5fb49e32"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="y"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html#abe0023ccbaa31a36b71ba213272ae6b4"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_pointer"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a1064beb1ffc07daf754eab4ca59d2575"><param name="ImageNumber" value="11"></OBJECT> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_list"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a1f3ebef642b34188c7ad49cff076db55"><param name="ImageNumber" value="11"></OBJECT> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="html_regx"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad2891f397d927169a8650847f615d402"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="library"><param name="ImageNumber" value="1"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="opf_regx"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a2b23b2c4bfa2d4bb2e2b369cbf8833f9"><param name="ImageNumber" value="11"></OBJECT> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root_dir"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ac8b3da5a79b942fb03f151d65c673a8f"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Catalogue"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="ImageNumber" value="1"></OBJECT>
</UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Test_Config"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a7f0522c779279e7dd88c95edb34e3d25"><param name="ImageNumber" value="11"></OBJECT>
<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="compare_shelf_current"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a70f3ba260f8af27a7db86141dc27085e"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="extract_content"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="open_file"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ae3bfa4633a2bf86c86d40151b56688b8"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_html"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="auto_scan"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a9f39a470c9963035a112acca935b29fc"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_image"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_path"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a7454c270924a276016f903e369b829a5"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#aebb4cc0414b96bc1f8868da69b669706"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="filter_books"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="catalogue_db"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#acee8b31f64a0ea29907c0b36b884c8c0"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="import_books"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a01f7ce652a23290596d81e8048ab5bad"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="scan_folder"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad8e332f443a740092cfd73bd61d02e36"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="book_folder"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a340d869b8f7c16007773de40a24005ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_array"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#abc103fb3d969e1e6ada5c1d39ec92e21"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad9aa7df0cf04a8e747a2efae24727d51"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a973054b07100dc03a1ecf8f759e8b663"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="books"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1129571b5c1a358e71d125cc47f9bf36"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a477a1b22bada1944ba5d8ac5bfca0567"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#afb43be37337c74fc1bfe1415ded423f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TITLE"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a3a1fefa92e72aa11ec4438faba2f7feb"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="cover_regx"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a576649115ba3717c475d60eae96f6204"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#acc37158cf6f6f0c7dc9d5f51e6d9b405"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="db_pointer"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acd6cb62aae1221ee590734b70f76888a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="VERSION"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a6feb1951a00ca1fc82a70634bacbd558"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="file_list"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac443ee74f10c7e2e128ddb2f0dfe045e"><param name="ImageNumber" value="11"></OBJECT>
</UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="html_regx"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a686b224643b060423a49a017d4a7abd8"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TestCatalogue"><param name="Local" value="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="opf_regx"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a2026c090be4f55cfe941d16a01b4ea75"><param name="ImageNumber" value="11"></OBJECT>
<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="root_dir"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3e5edca4ab942e3f71958c90b5c45023"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_filter_books"><param name="Local" value="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html#a65ea548a48e1b220dcb5f43a13d4f95d"><param name="ImageNumber" value="11"></OBJECT> </UL>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="BookDisplay"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a854cd5d2a24a7ffcd97d080ac0b394c7"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="booksPerPage"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a8525b4f683d1d19e23f78e72c3b2984a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="nextPage"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5dd3965776e63d09dfb0f887f88a9582"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="previousPage"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a59098e1427ae89dba07ea0790dd8e0ed"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books_per_page"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#ab3ed4a51611e62f837670050fba50f72"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="current_page"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a5cd137b2812c7dd6dc01e025425aa3c2"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="screen_size"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#a80548fcafdac195c9b097b10ff4a28f2"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="thumbnail_scale"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#afc3581b0c9e98113fd0f071b0d37b920"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="thumbnail_size"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#afc9d22b4da0f3b95767bbd6db24474eb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="total_pages"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html#acdd26912d13cb3d2b55517611d5abbeb"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="InitFiles"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#a702bff756979fb9f345074b292a8af7d"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="CreateFile"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab6c693e30b5a121168f831aece10f07e"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="storage"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Storage"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a0ed6b941570b53aa8666104204fdd3b6"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_paths_list"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa5c8e584946dd5e4ff6e9b1379bc3c6b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="check_ownership"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a41c3c4f5708364ac134cef63fe54c221"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="close"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a112f9b3fbb18b9475fdeba6245d90fdf"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="commit"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a394cfed178f5fd150ed5f1bca13dfc05"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="create_tables"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae0fdacb661febbfa3cba95e578ad2112"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="insert_book"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a912a5030c1277bb9b635eb4bb5c97c40"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a289524152eea2c6f87ebe75b57702f8e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="cursor"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a26daf3e02f41856cbab2c4a0a2ac392c"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acaa876b609e0c23b0433b7fad92fcdde"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa1f7326b0de7f089d60564af42311aa1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a26ddd4bc23e668c5cba6473366e1e107"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a5dd09d87e35603506a37b61a68c98d43"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="sql"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a590a49f74a9d7afac613ee447e8056d7"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8163ce045eb3cf6e2ac26797ec712b7d"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="tests"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config_test"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TestConfig"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_book_dir"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#a6633d1f032be23ccdb59d01a3a7568fb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_title"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#ad5f1fc044ca72b5e98b62a973863d29b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_version"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html#a9f806e5eab45097ad20b12611f96ca21"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="library_test"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Test_Catalogue"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a8e47e8b49226d58e6eaedeba65d16308"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compare_shelf_current"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_content"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_html"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_image"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#abd1c3b416586faaabb37515705588a89"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#abab8649249ef71103f314aa29644a739"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="filter_books"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="import_books"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="scan_folder"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a204c5171b7de8ddd199563fd1b252032"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_folder"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a340d869b8f7c16007773de40a24005ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae45671c4e95d835b38bb83002ec8dd54"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a1129571b5c1a358e71d125cc47f9bf36"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#afb43be37337c74fc1bfe1415ded423f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="cover_regx"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a576649115ba3717c475d60eae96f6204"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_pointer"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#acd6cb62aae1221ee590734b70f76888a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_list"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ac443ee74f10c7e2e128ddb2f0dfe045e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="html_regx"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a686b224643b060423a49a017d4a7abd8"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="opf_regx"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a2026c090be4f55cfe941d16a01b4ea75"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root_dir"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a3e5edca4ab942e3f71958c90b5c45023"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Test_Config"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a5a4b3d09c4ca0533571ad25590558042"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="open_file"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a03e5a6c59bffd93c1e81ddc52a84254f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="allowed_hosts"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#abd1caead108725ffe2edd4a1b7b8ab86"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="auto_scan"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#af0ad7dbde42874a86718469d772d2e32"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_path"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a73eef160e0fbb7d27b35af88f9a08e3b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_shelf"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a32df23365f00a8014d8bafd797da06d0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="catalogue_db"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ae24163ce536b9b86d2020cd00e04d096"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_host"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#aa119c468373043e4c74783c224b5a79e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_pass"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a15420665376e4aab800b46e9785a5a95"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_port"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#aa859d999451eba07b8d0885665925a7e"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="db_user"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a088b23bf4d560c3e29bc63ac2d97bb22"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="file_array"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a6bb596f51b0097c836cd6307dd03583f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="password"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a301b1324af2ae076e8782fcea79cd7f9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="root"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a905c0db0851be868400284fa30e79e96"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TITLE"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#adbff70657f2e68abd8dec5a497e22019"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="user"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a672d2e335f4f85f64b0416f5886b282f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="VERSION"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a60406233a916d5bc4c26f178081b811d"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="TestCatalogue"><param name="Local" value="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="test_filter_books"><param name="Local" value="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html#a0edf6f7b2123e6ce8b21e049ec44f36e"><param name="ImageNumber" value="11"></OBJECT>
</UL> </UL>
</UL> </UL>
</UL> </UL>
@@ -176,20 +203,21 @@
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Index"><param name="Local" value="classes.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Class Index"><param name="Local" value="classes.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Hierarchy"><param name="Local" value="hierarchy.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Class Hierarchy"><param name="Local" value="hierarchy.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.pyShelf.BookDisplay"><param name="Local" value="d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.pyShelf.BookDisplay"><param name="Local" value="db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.library.Catalogue"><param name="Local" value="d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.library.Catalogue"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.tests.library_test.Test_Catalogue"><param name="Local" value="d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.tests.library_test.Test_Catalogue"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="ImageNumber" value="11"></OBJECT>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.config.Config"><param name="Local" value="d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.config.Config"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.tests.library_test.Test_Config"><param name="Local" value="d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.tests.library_test.Test_Config"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="ImageNumber" value="11"></OBJECT>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.api_hooks.DuckDuckGo"><param name="Local" value="dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.api_hooks.DuckDuckGo"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.pyShelf.InitFiles"><param name="Local" value="dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.pyShelf.InitFiles"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.lib.storage.Storage"><param name="Local" value="d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.storage.Storage"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.tests.library_test.TestCatalogue"><param name="Local" value="d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.display.TerminalDisplay"><param name="Local" value="d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.src.backend.tests.config_test.TestConfig"><param name="Local" value="df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.tests.library_test.TestCatalogue"><param name="Local" value="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.tests.config_test.TestConfig"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"><param name="ImageNumber" value="11"></OBJECT>
</UL> </UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Members"><param name="Local" value="functions.html"><param name="ImageNumber" value="1"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="Class Members"><param name="Local" value="functions.html"><param name="ImageNumber" value="1"></OBJECT>
<UL> <UL>
@@ -210,6 +238,7 @@
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="__init__.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="api_hooks.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="api_hooks.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="config.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="display.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="library.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="library.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="storage.py"><param name="ImageNumber" value="11"></OBJECT> <LI><OBJECT type="text/sitemap"><param name="Name" value="storage.py"><param name="ImageNumber" value="11"></OBJECT>

850
docs/html/index.hhk vendored

File diff suppressed because it is too large Load Diff

50
docs/html/index.hhp vendored
View File

@@ -14,26 +14,28 @@ Title=pyShelf Open Source Ebook Server
main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0 main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0
[FILES] [FILES]
dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html
dc/deb/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html
d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html
d1/d06/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config-members.html d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html
d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html
da/d1e/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html
d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html
dd/df7/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html
dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html
da/de5/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html
d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html
dc/d11/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage-members.html d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html
df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html
dd/df1/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html
d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html
d7/d7c/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html
d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html
d1/d44/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html
d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html
d5/d74/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html
d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html
d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html
dir_3f615ade772d23cefe5e20dcb18424a2.html dir_3f615ade772d23cefe5e20dcb18424a2.html
dir_1c7294442ce83d360610449d04c9d7fc.html dir_1c7294442ce83d360610449d04c9d7fc.html
dir_68267d1309a1af8e8297ef4c3efbcdba.html dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -58,7 +60,7 @@ open.png
bdwn.png bdwn.png
sync_on.png sync_on.png
sync_off.png sync_off.png
d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.png d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png
d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.png d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png
d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png
d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png

View File

@@ -19,7 +19,7 @@
<tr style="height: 56px;"> <tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server <div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.3.0</span> &#160;<span id="projectnumber">0.4.0</span>
</div> </div>
<div id="projectbrief">Open source, console based E-book server</div> <div id="projectbrief">Open source, console based E-book server</div>
</td> </td>
@@ -47,7 +47,7 @@ $(function() {
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 15 2019 12:54:07 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16 </a> 1.8.16
</small></address> </small></address>

View File

@@ -0,0 +1,50 @@
.TH "src.backend.lib.api_hooks.DuckDuckGo" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.api_hooks.DuckDuckGo
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self)"
.br
.ti -1c
.RI "def \fBimage_result\fP (self, query)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBurl\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
duckduckgo related searching
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.image_result ( self, query)"
.PP
.nf
Returns json containing url to image
:param _key: &t=h_&iar=images&iax=images&ia=images&format=json&pretty=1
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,107 @@
.TH "src.backend.lib.config.Config" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.config.Config
.SH SYNOPSIS
.br
.PP
.PP
Inherited by \fBsrc\&.backend\&.tests\&.library_test\&.Test_Config\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self, root)"
.br
.ti -1c
.RI "def \fBopen_file\fP (self, _cp)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBbook_path\fP"
.br
.ti -1c
.RI "\fBTITLE\fP"
.br
.ti -1c
.RI "\fBVERSION\fP"
.br
.ti -1c
.RI "\fBbook_shelf\fP"
.br
.ti -1c
.RI "\fBcatalogue_db\fP"
.br
.ti -1c
.RI "\fBuser\fP"
.br
.ti -1c
.RI "\fBpassword\fP"
.br
.ti -1c
.RI "\fBdb_host\fP"
.br
.ti -1c
.RI "\fBdb_port\fP"
.br
.ti -1c
.RI "\fBfile_array\fP"
.br
.ti -1c
.RI "\fBroot\fP"
.br
.ti -1c
.RI "\fBauto_scan\fP"
.br
.ti -1c
.RI "\fBallowed_hosts\fP"
.br
.ti -1c
.RI "\fBdb_user\fP"
.br
.ti -1c
.RI "\fBdb_pass\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Main System Configuration
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "def src\&.backend\&.lib\&.config\&.Config\&.__init__ ( self, root)"
.PP
.nf
Initialize main configuration options
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.config\&.Config\&.open_file ( self, _cp)"
.PP
.nf
Opens config.json and reads in configuration options
.fi
.PP
.PP
Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Config\fP\&.
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,78 @@
.TH "src.backend.lib.display.TerminalDisplay" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.display.TerminalDisplay
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self)"
.br
.ti -1c
.RI "def \fBscreen\fP (self)"
.br
.ti -1c
.RI "def \fBinstaller\fP (self)"
.br
.ti -1c
.RI "def \fBprompt\fP (self, questions)"
.br
.ti -1c
.RI "def \fBh_rule\fP (self)"
.br
.ti -1c
.RI "def \fBbanner\fP (self)"
.br
.ti -1c
.RI "def \fBbanner_render\fP (self)"
.br
.in -1c
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "def \fBclear\fP ()"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBterm\fP"
.br
.ti -1c
.RI "\fBy\fP"
.br
.ti -1c
.RI "\fBhome\fP"
.br
.ti -1c
.RI "\fBuser\fP"
.br
.ti -1c
.RI "\fBversion\fP"
.br
.ti -1c
.RI "\fBslogan\fP"
.br
.ti -1c
.RI "\fBgreen\fP"
.br
.ti -1c
.RI "\fBblue\fP"
.br
.ti -1c
.RI "\fBclr_term\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,187 @@
.TH "src.backend.lib.library.Catalogue" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.library.Catalogue
.SH SYNOPSIS
.br
.PP
.PP
Inherited by \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self, config)"
.br
.ti -1c
.RI "def \fBscan_folder\fP (self, _path=None)"
.br
.ti -1c
.RI "def \fBfilter_books\fP (self)"
.br
.ti -1c
.RI "def \fBextract_metadata\fP (self, book)"
.br
.ti -1c
.RI "def \fBextract_content\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBextract_cover_html\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBextract_cover_image\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBcompare_shelf_current\fP (self)"
.br
.ti -1c
.RI "def \fBimport_books\fP (self, list=None)"
.br
.in -1c
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "def \fBprocess_book\fP (book)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBfile_list\fP"
.br
.ti -1c
.RI "\fBopf_regx\fP"
.br
.ti -1c
.RI "\fBcover_regx\fP"
.br
.ti -1c
.RI "\fBhtml_regx\fP"
.br
.ti -1c
.RI "\fBroot_dir\fP"
.br
.ti -1c
.RI "\fBbook_folder\fP"
.br
.ti -1c
.RI "\fBbook_shelf\fP"
.br
.ti -1c
.RI "\fBbooks\fP"
.br
.ti -1c
.RI "\fBdb_pointer\fP"
.br
.ti -1c
.RI "\fBconfig\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Decodes book metadata for storage
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)"
.PP
.nf
Calls storage system, gets list of books stored and compares against files on disk
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching opf_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching html_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching cover_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata ( self, book)"
.PP
.nf
Return extracted metadata and cover picture
book['path'] == Full path to ebook file
book['files'] == list of files from self.process_book(book)
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)"
.PP
.nf
Calls scan_folder and filters out book files
Proceeds to call process_book
:returns self._book_list_expanded: json string containing all book metadata
.fi
.PP
.PP
Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&.
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fCNone\fP)"
.PP
.nf
Main entry point for import operations.
Gets a list of new files via compare_shelf_current.
Iterates over list and inserts new books into database.
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.process_book ( book)\fC [static]\fP"
.PP
.nf
Return dictionary of epub file contents
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fCNone\fP)"
.PP
.nf
Scan folder by _path, allows recurisive scanning
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,107 @@
.TH "src.backend.lib.pyShelf.BookDisplay" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.pyShelf.BookDisplay
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self, **kwargs)"
.br
.ti -1c
.RI "def \fBnextPage\fP (self)"
.br
.ti -1c
.RI "def \fBpreviousPage\fP (self)"
.br
.ti -1c
.RI "def \fBbooksPerPage\fP (self, screen_size)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBbooks_per_page\fP"
.br
.ti -1c
.RI "\fBcurrent_page\fP"
.br
.ti -1c
.RI "\fBthumbnail_size\fP"
.br
.ti -1c
.RI "\fBthumbnail_scale\fP"
.br
.ti -1c
.RI "\fBtotal_pages\fP"
.br
.ti -1c
.RI "\fBscreen_size\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
All functions related to displaying book information in the HTML UI
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "def src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.__init__ ( self, ** kwargs)"
.PP
.nf
Initialize class variables
:return: None
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.booksPerPage ( self, screen_size)"
.PP
.nf
## TODO Remove me
Set books per page
:param screen_size: Array containing x,y pixel sizes
:return: self.books_per_page
.fi
.PP
.SS "def src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.nextPage ( self)"
.PP
.nf
## TODO Remove me
Goto next book page
:return: new current_page
.fi
.PP
.SS "def src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.previousPage ( self)"
.PP
.nf
## TODO Remove me
Goto previous book page
:return: new current_page
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,42 @@
.TH "src.backend.lib.pyShelf.InitFiles" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.pyShelf.InitFiles
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self, file_array)"
.br
.ti -1c
.RI "def \fBCreateFile\fP (self, _pointer)"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
First run file creation operations
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.pyShelf\&.InitFiles\&.CreateFile ( self, _pointer)"
.PP
.nf
Checks if file exists and creates it if not
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,121 @@
.TH "src.backend.lib.storage.Storage" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.storage.Storage
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self, config)"
.br
.ti -1c
.RI "def \fBcheck_ownership\fP (self, table=None)"
.br
.ti -1c
.RI "def \fBcreate_tables\fP (self)"
.br
.ti -1c
.RI "def \fBinsert_book\fP (self, book)"
.br
.ti -1c
.RI "def \fBbook_paths_list\fP (self)"
.br
.ti -1c
.RI "def \fBcommit\fP (self)"
.br
.ti -1c
.RI "def \fBclose\fP (self)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBsql\fP"
.br
.ti -1c
.RI "\fBuser\fP"
.br
.ti -1c
.RI "\fBpassword\fP"
.br
.ti -1c
.RI "\fBdb_host\fP"
.br
.ti -1c
.RI "\fBdb_port\fP"
.br
.ti -1c
.RI "\fBdb\fP"
.br
.ti -1c
.RI "\fBconfig\fP"
.br
.ti -1c
.RI "\fBcursor\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Contains all methods for system storage
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.storage\&.Storage\&.book_paths_list ( self)"
.PP
.nf
Get file paths from database for comparison to system files
.fi
.PP
.SS "def src\&.backend\&.lib\&.storage\&.Storage\&.close ( self)"
.PP
.nf
Close database connection
.fi
.PP
.SS "def src\&.backend\&.lib\&.storage\&.Storage\&.commit ( self)"
.PP
.nf
Commit database transactions
.fi
.PP
.SS "def src\&.backend\&.lib\&.storage\&.Storage\&.create_tables ( self)"
.PP
.nf
Create table structure
.fi
.PP
.SS "def src\&.backend\&.lib\&.storage\&.Storage\&.insert_book ( self, book)"
.PP
.nf
Insert book in database
:returns: True if succeeds False if not
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,35 @@
.TH "src.backend.tests.config_test.TestConfig" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.tests.config_test.TestConfig
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fBtest_book_dir\fP (self)"
.br
.ti -1c
.RI "def \fBtest_title\fP (self)"
.br
.ti -1c
.RI "def \fBtest_version\fP (self)"
.br
.in -1c
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "\fBconfig\fP = \fBConfig\fP(os\&.path\&.abspath(os\&.path\&.curdir))"
.br
.in -1c
.SH "Detailed Description"
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,32 @@
.TH "src.backend.tests.library_test.TestCatalogue" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.tests.library_test.TestCatalogue
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fBtest_filter_books\fP (self)"
.br
.in -1c
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "\fBroot\fP = os\&.path\&.abspath(os\&.path\&.curdir)"
.br
.ti -1c
.RI "\fBconfig\fP = \fBTest_Config\fP()"
.br
.in -1c
.SH "Detailed Description"
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,179 @@
.TH "src.backend.tests.library_test.Test_Catalogue" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.tests.library_test.Test_Catalogue
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self)"
.br
.ti -1c
.RI "def \fBfilter_books\fP (self)"
.br
.ti -1c
.RI "def \fBscan_folder\fP (self, _path=None)"
.br
.ti -1c
.RI "def \fBextract_metadata\fP (self, book)"
.br
.ti -1c
.RI "def \fBextract_content\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBextract_cover_html\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBextract_cover_image\fP (self, book_zip, book)"
.br
.ti -1c
.RI "def \fBcompare_shelf_current\fP (self)"
.br
.ti -1c
.RI "def \fBimport_books\fP (self, list=None)"
.br
.in -1c
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "def \fBprocess_book\fP (book)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBbook_shelf\fP"
.br
.ti -1c
.RI "\fBfile_list\fP"
.br
.ti -1c
.RI "\fBopf_regx\fP"
.br
.ti -1c
.RI "\fBcover_regx\fP"
.br
.ti -1c
.RI "\fBhtml_regx\fP"
.br
.ti -1c
.RI "\fBroot_dir\fP"
.br
.ti -1c
.RI "\fBbook_folder\fP"
.br
.ti -1c
.RI "\fBbooks\fP"
.br
.ti -1c
.RI "\fBdb_pointer\fP"
.br
.ti -1c
.RI "\fBconfig\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)\fC [inherited]\fP"
.PP
.nf
Calls storage system, gets list of books stored and compares against files on disk
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)\fC [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching opf_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)\fC [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching html_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)\fC [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching cover_regx
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata ( self, book)\fC [inherited]\fP"
.PP
.nf
Return extracted metadata and cover picture
book['path'] == Full path to ebook file
book['files'] == list of files from self.process_book(book)
.fi
.PP
.SS "def src\&.backend\&.tests\&.library_test\&.Test_Catalogue\&.filter_books ( self)"
.PP
.nf
Calls scan_folder and filters out book files
Proceeds to call process_book
:returns self._book_list_expanded: json string containing all book metadata
.fi
.PP
.PP
Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&.
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fCNone\fP)\fC [inherited]\fP"
.PP
.nf
Main entry point for import operations.
Gets a list of new files via compare_shelf_current.
Iterates over list and inserts new books into database.
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.process_book ( book)\fC [static]\fP, \fC [inherited]\fP"
.PP
.nf
Return dictionary of epub file contents
.fi
.PP
.SS "def src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fCNone\fP)\fC [inherited]\fP"
.PP
.nf
Scan folder by _path, allows recurisive scanning
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,88 @@
.TH "src.backend.tests.library_test.Test_Config" 3 "Wed Jan 1 2020" "Version 0.4.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.tests.library_test.Test_Config
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.config\&.Config\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "def \fB__init__\fP (self)"
.br
.ti -1c
.RI "def \fBopen_file\fP (self, root='config\&.json')"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBbook_path\fP"
.br
.ti -1c
.RI "\fBTITLE\fP"
.br
.ti -1c
.RI "\fBVERSION\fP"
.br
.ti -1c
.RI "\fBbook_shelf\fP"
.br
.ti -1c
.RI "\fBcatalogue_db\fP"
.br
.ti -1c
.RI "\fBuser\fP"
.br
.ti -1c
.RI "\fBpassword\fP"
.br
.ti -1c
.RI "\fBdb_host\fP"
.br
.ti -1c
.RI "\fBdb_port\fP"
.br
.ti -1c
.RI "\fBfile_array\fP"
.br
.ti -1c
.RI "\fBroot\fP"
.br
.ti -1c
.RI "\fBauto_scan\fP"
.br
.ti -1c
.RI "\fBallowed_hosts\fP"
.br
.ti -1c
.RI "\fBdb_user\fP"
.br
.ti -1c
.RI "\fBdb_pass\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.SH "Member Function Documentation"
.PP
.SS "def src\&.backend\&.tests\&.library_test\&.Test_Config\&.open_file ( self, _cp = \fC'config\&.json'\fP)"
.PP
.nf
Opens config.json and reads in configuration options
.fi
.PP
.PP
Reimplemented from \fBsrc\&.backend\&.lib\&.config\&.Config\fP\&.
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

238
docs/warn.log vendored
View File

@@ -1,106 +1,132 @@
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:19: warning: Compound pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:9: warning: Compound src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:28: warning: Compound pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:19: warning: Compound src::backend::tests::library_test::Test_Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:6: warning: Compound pyShelf::src::backend::tests::config_test::TestConfig is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:8: warning: Compound src::backend::tests::library_test::Test_Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:8: warning: Compound pyShelf::src::backend::tests::library_test::Test_Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:28: warning: Compound src::backend::tests::library_test::TestCatalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:12: warning: Member __init__(self) (function) of class pyShelf::src::backend::lib::api_hooks::DuckDuckGo is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:6: warning: Compound src::backend::tests::config_test::TestConfig is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:13: warning: Member url (variable) of class pyShelf::src::backend::lib::api_hooks::DuckDuckGo is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:12: warning: Member __init__(self) (function) of class src::backend::lib::api_hooks::DuckDuckGo is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:15: warning: return type of member pyShelf.src.backend.lib.api_hooks.DuckDuckGo.image_result is not documented /home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:13: warning: Member url (variable) of class src::backend::lib::api_hooks::DuckDuckGo is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:15: warning: return type of member src.backend.lib.api_hooks.DuckDuckGo.image_result is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member catalogue_db (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member user (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:25: warning: Member catalogue_db (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member password (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:26: warning: Member user (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member db_host (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member password (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:31: warning: Member db_port (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member db_host (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:32: warning: Member file_array (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member db_port (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member root (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member file_array (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member auto_scan (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:33: warning: Member root (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:39: warning: return type of member pyShelf.src.backend.lib.config.Config.open_file is not documented /home/raelon/Projects/pyShelf/src/backend/lib/config.py:34: warning: Member auto_scan (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:22: warning: Member __init__(self, config) (function) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member allowed_hosts (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member db_user (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:38: warning: Member db_pass (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/config.py:40: warning: return type of member src.backend.lib.config.Config.open_file is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:10: warning: Member __init__(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:21: warning: Member screen(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:24: warning: Member installer(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:29: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:82: warning: Member prompt(self, questions) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:93: warning: Member h_rule(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:96: warning: Member banner(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:106: warning: Member banner_render(self) (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.compare_shelf_current is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:79: warning: Member clear() (function) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_content is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:11: warning: Member term (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_html is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:12: warning: Member y (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_image is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:13: warning: Member home (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_metadata is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:14: warning: Member user (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:52: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.filter_books is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:15: warning: Member version (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.import_books is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:16: warning: Member slogan (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.process_book is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:17: warning: Member green (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.scan_folder is not documented /home/raelon/Projects/pyShelf/src/backend/lib/display.py:18: warning: Member blue (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:45: warning: Member books_per_page (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/display.py:19: warning: Member clr_term (variable) of class src::backend::lib::display::TerminalDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:46: warning: Member current_page (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:22: warning: Member __init__(self, config) (function) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:47: warning: Member thumbnail_size (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:48: warning: Member thumbnail_scale (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:49: warning: Member total_pages (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:51: warning: Member screen_size (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:40: warning: parameters of member pyShelf.src.backend.lib.pyShelf.BookDisplay.__init__ are not (all) documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:73: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.booksPerPage is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:55: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.nextPage is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:29: warning: Member book_shelf (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:64: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.previousPage is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:15: warning: Member __init__(self, file_array) (function) of class pyShelf::src::backend::lib::pyShelf::InitFiles is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:27: warning: return type of member pyShelf.src.backend.lib.pyShelf.InitFiles.CreateFile is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:15: warning: Member __init__(self, db_pointer, config) (function) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member src.backend.lib.library.Catalogue.compare_shelf_current is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:17: warning: Member sql (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member src.backend.lib.library.Catalogue.extract_content is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:18: warning: Member user (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member src.backend.lib.library.Catalogue.extract_cover_html is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:19: warning: Member password (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member src.backend.lib.library.Catalogue.extract_cover_image is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:20: warning: Member db_host (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member src.backend.lib.library.Catalogue.extract_metadata is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:21: warning: Member db_port (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:52: warning: return type of member src.backend.lib.library.Catalogue.filter_books is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:22: warning: Member db (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member src.backend.lib.library.Catalogue.import_books is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:25: warning: Member cursor (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member src.backend.lib.library.Catalogue.process_book is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:58: warning: return type of member pyShelf.src.backend.lib.storage.Storage.book_paths_list is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member src.backend.lib.library.Catalogue.scan_folder is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:81: warning: return type of member pyShelf.src.backend.lib.storage.Storage.close is not documented /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:45: warning: Member books_per_page (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:71: warning: return type of member pyShelf.src.backend.lib.storage.Storage.commit is not documented /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:46: warning: Member current_page (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:28: warning: return type of member pyShelf.src.backend.lib.storage.Storage.create_tables is not documented /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:47: warning: Member thumbnail_size (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:39: warning: return type of member pyShelf.src.backend.lib.storage.Storage.insert_book is not documented /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:48: warning: Member thumbnail_scale (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:9: warning: Member test_book_dir(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:49: warning: Member total_pages (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:12: warning: Member test_title(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:51: warning: Member screen_size (variable) of class src::backend::lib::pyShelf::BookDisplay is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:15: warning: Member test_version(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:40: warning: parameters of member src.backend.lib.pyShelf.BookDisplay.__init__ are not (all) documented
/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:7: warning: Member config (variable) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:73: warning: return type of member src.backend.lib.pyShelf.BookDisplay.booksPerPage is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:20: warning: Member __init__(self) (function) of class pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:55: warning: return type of member src.backend.lib.pyShelf.BookDisplay.nextPage is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:64: warning: return type of member src.backend.lib.pyShelf.BookDisplay.previousPage is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:15: warning: Member __init__(self, file_array) (function) of class src::backend::lib::pyShelf::InitFiles is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:27: warning: return type of member src.backend.lib.pyShelf.InitFiles.CreateFile is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:15: warning: Member __init__(self, config) (function) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:27: warning: Member check_ownership(self, table=None) (function) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:16: warning: Member sql (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:17: warning: Member user (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:18: warning: Member password (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:19: warning: Member db_host (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:20: warning: Member db_port (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.compare_shelf_current is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:21: warning: Member db (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_content is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:24: warning: Member config (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_html is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:25: warning: Member cursor (variable) of class src::backend::lib::storage::Storage is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_image is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:76: warning: return type of member src.backend.lib.storage.Storage.book_paths_list is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_metadata is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:99: warning: return type of member src.backend.lib.storage.Storage.close is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:23: warning: return type of member pyShelf.src.backend.tests.library_test.Test_Catalogue.filter_books is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:89: warning: return type of member src.backend.lib.storage.Storage.commit is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.import_books is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:46: warning: return type of member src.backend.lib.storage.Storage.create_tables is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.process_book is not documented /home/raelon/Projects/pyShelf/src/backend/lib/storage.py:57: warning: return type of member src.backend.lib.storage.Storage.insert_book is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.scan_folder is not documented /home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:9: warning: Member test_book_dir(self) (function) of class src::backend::tests::config_test::TestConfig is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:9: warning: Member __init__(self) (function) of class pyShelf::src::backend::tests::library_test::Test_Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:12: warning: Member test_title(self) (function) of class src::backend::tests::config_test::TestConfig is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:15: warning: Member test_version(self) (function) of class src::backend::tests::config_test::TestConfig is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:7: warning: Member config (variable) of class src::backend::tests::config_test::TestConfig is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:20: warning: Member __init__(self) (function) of class src::backend::tests::library_test::Test_Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:24: warning: Member book_shelf (variable) of class src::backend::tests::library_test::Test_Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member catalogue_db (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member user (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member password (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member db_host (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:31: warning: Member db_port (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:32: warning: Member file_array (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member root (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member auto_scan (variable) of class pyShelf::src::backend::lib::config::Config is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:13: warning: return type of member pyShelf.src.backend.tests.library_test.Test_Config.open_file is not documented /home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class src::backend::lib::library::Catalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:32: warning: Member test_filter_books(self) (function) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member src.backend.lib.library.Catalogue.compare_shelf_current is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:29: warning: Member root (variable) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member src.backend.lib.library.Catalogue.extract_content is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:30: warning: Member config (variable) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. /home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member src.backend.lib.library.Catalogue.extract_cover_html is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member src.backend.lib.library.Catalogue.extract_cover_image is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member src.backend.lib.library.Catalogue.extract_metadata is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:23: warning: return type of member src.backend.tests.library_test.Test_Catalogue.filter_books is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member src.backend.lib.library.Catalogue.import_books is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member src.backend.lib.library.Catalogue.process_book is not documented
/home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member src.backend.lib.library.Catalogue.scan_folder is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:9: warning: Member __init__(self) (function) of class src::backend::tests::library_test::Test_Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:25: warning: Member catalogue_db (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:26: warning: Member user (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member password (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member db_host (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member db_port (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member file_array (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:33: warning: Member root (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:34: warning: Member auto_scan (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member allowed_hosts (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member db_user (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/lib/config.py:38: warning: Member db_pass (variable) of class src::backend::lib::config::Config is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:13: warning: return type of member src.backend.tests.library_test.Test_Config.open_file is not documented
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:32: warning: Member test_filter_books(self) (function) of class src::backend::tests::library_test::TestCatalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:29: warning: Member root (variable) of class src::backend::tests::library_test::TestCatalogue is not documented.
/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:30: warning: Member config (variable) of class src::backend::tests::library_test::TestCatalogue is not documented.

2
doxygen.conf vendored
View File

@@ -38,7 +38,7 @@ PROJECT_NAME = "pyShelf Open Source Ebook Server"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 0.3.0 PROJECT_NUMBER = 0.4.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

1
importBooks vendored
View File

@@ -3,6 +3,7 @@
import pathlib import pathlib
import sys import sys
from src.backend.lib.storage import Storage
from src.backend.pyShelf_ScanLibrary import execute_scan from src.backend.pyShelf_ScanLibrary import execute_scan
PRG_PATH = pathlib.Path.cwd() PRG_PATH = pathlib.Path.cwd()

4
install.sh vendored Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env bash
eval "pip install -r requirements.txt"
eval python3 installer

357
installer vendored Normal file
View File

@@ -0,0 +1,357 @@
#!/usr/bin/python3
import json
import os
import pathlib
import platform
import pprint
import subprocess as sp
import sys
from shutil import copyfile
import psutil
from src.backend.lib.display import TerminalDisplay
log_file = "installer.log"
messages = []
class Configuration:
def __init__(self):
self._cp = pathlib.Path("config.json")
self._data = self.open_file()
self.system = platform.system()
def open_file(self):
"""
Try to open and then backup the configuration file.
Fail and return false if initial configuration is not found.
# TODO: More specific error handling
"""
try:
with open(str(self._cp), "r") as read_file:
data = json.load(read_file)
with open("config.backup.json", "w") as backup_file:
json.dump(data, backup_file)
return data
except Exception as e:
print(e)
return False
def write_file(self, data):
"""
Write the provided data to the new configuration file
"""
with open(str(self._cp), "w") as write_file:
json.dump(data, write_file)
return True
class RequiredServices:
def check_ps(self, service_list):
"""
Check service_list against running processes
by calling self.process_list, remove found
services from the list and return
"""
# Get the matched processes
_matches = self.process_list().intersection(set(service_list))
for r in _matches:
service_list.remove(r)
return service_list
@staticmethod
def process_list():
"""
Iterate running processes returning the name of each
make it a set and return
"""
_processes = []
for p in psutil.process_iter():
_processes.append(p.name())
return set(_processes)
@staticmethod
def web_server_found(service_list):
# Determine whether or not both possible webservers are missing
_c = 0
for r in service_list:
if r == "nginx" or r == "httpd":
_c = _c + 1
if _c > 1:
return False # Return false if neither are found
else:
return True # Return true if one is found
@staticmethod
def db_server_found(service_list):
_c = 0
for r in service_list:
if r == "postgres":
_c = _c + 1
if _c > 0:
return False
else:
return True
class SystemInstaller:
def __init__(self):
self.bin = self.get()
self.site_dirs = ["/etc/nginx/sites-available", "/etc/nginx/sites-enabled"]
self.nginx_conf = "pyshelf_nginx.conf"
def get(self):
platfrm = platform.platform().split("-")
if platfrm[0].lower() == "linux":
installers = [
{"bin": "apt", "options": [], "search": "search", "install": "install"},
{"bin": "pacman", "options": [], "search": "-Ss", "install": "-S"},
{"bin": "yum", "options": [], "search": "search", "install": "install"},
{"bin": "docker", "options": []},
]
_paths = os.environ["PATH"].split(":")
for p in _paths:
for _installer in installers:
_fp = p + "/" + str(_installer["bin"])
if os.path.isfile(_fp):
global messages
messages = messages + [
"Found system installer binary " + str(_installer["bin"])
]
return _installer
def copy_config(self, _file=None, _dirs=None):
if _file is None:
_file = self.nginx_conf
if _dirs is None:
_dirs = self.site_dirs
outfile = "/%s" % _file.__str__()
if os.path.isdir(_dirs[0]):
os.system("sudo cp %s %s" % (_file, _dirs[0] + outfile))
else:
os.system("sudo mkdir %s" % _dirs[0])
os.system("sudo cp %s %s" % (_file, _dirs[0] + outfile))
try:
if os.path.isdir(_dirs[1]):
ln_string = str(_dirs[0] + outfile + " " + _dirs[1] + outfile)
os.system("sudo ln -s %s" % ln_string)
except Exception as e:
pass
return True
def make_nginx_config(self, answers):
root = os.path.abspath(".")
_fp = "pyshelf_nginx.conf"
for r in answers:
if r["name"] == "hostname":
hostname = r["answer"]
elif r["name"] == "webport":
port = r["answer"]
elif r["name"] == "wsgiport":
wsgiport = r["answer"]
nginx_conf_str = """
# pyshelf_nginx.conf
upstream django {server unix://%s/pyshelf_wsgi.sock;}
server {
listen %s;
server_name %s;
access_log /var/log/nginx/pyshelf.access.log;
error_log /var/log/nginx/pyshelf.error.log;
charset utf-8;
client_max_body_size 75M;
location /media {root %s/src/interface;}
location /static {root %s/src/interface;}
location /books {internal; alias %s;}
location / {uwsgi_pass django; include %s/uwsgi_params;}
}
""" % (
root,
port,
hostname,
root,
root,
root,
root,
)
with open(_fp, "w") as write_file:
write_file.write(nginx_conf_str)
global messages
messages = messages + ["Generated new pyshelf_nginx.conf", nginx_conf_str]
def make_wsgi_config(self, answers):
root = os.path.abspath(".")
_fp = "uwsgi.ini"
for r in answers:
if r["name"] == "hostname":
hostname = r["answer"]
elif r["name"] == "wsgiport":
wsgiport = r["answer"]
wsgi_conf_str = """
[uwsgi]
chdir=%s/src
module=frontend.wsgi
master=True
pidfile=/tmp/pyShelf.pid
vacuum=True
socket=%s/pyshelf_wsgi.sock
chmod-socket=666
""" % (
root,
root
)
with open(_fp, "w") as write_file:
write_file.write(wsgi_conf_str)
global messages
messages = messages + ["Generated uwsgi.ini", wsgi_conf_str]
def log(self):
global log_file
global messages
with open(log_file, "w") as write_file:
write_file.write(TerminalDisplay().banner_render())
for message in messages:
write_file.write(message + "\n")
messages = messages + ["Log file written to " + log_file.__str__()]
config = Configuration().open_file()
sysinstall = SystemInstaller()
installer = sysinstall.bin
# Get user configuration options
install_answers = TerminalDisplay().installer()
for key in install_answers:
config[key["name"]] = key["answer"]
config["USER"] = os.environ["USER"]
# Write configuration
Configuration().write_file(config)
# Start checking for our list of required services
service_list = ["postgres", "nginx", "httpd", "test"]
req = RequiredServices().check_ps(service_list)
# Does user have either nginx || apache?
if RequiredServices().web_server_found(req) is False:
web_prompt = [
{
"message": " You must have either apache or nginx\n would you like us to try and install nginx now? > ",
"options": "nginx",
"name": "NGINX",
"answer": None,
"default": "no",
}
]
install_prompt = TerminalDisplay().prompt(web_prompt)
if install_prompt[0]["answer"] == "yes":
if installer is None:
installer = SystemInstaller().bin
if installer["bin"] == "pacman":
package = "nginx-mainline"
else:
package = "nginx"
options = ""
for o in installer["options"]:
options = options + " " + o
cmd = (
"sudo "
+ installer["bin"]
+ " "
+ installer["install"]
+ " "
+ options
+ package
)
install_status = os.system(cmd)
os.system("sudo systemctl start nginx")
messages = messages + [
"Nginx installed and started",
"To enable autostart you must run",
" sudo systemctl enable nginx",
"\n",
]
# Does user have postgreSQL?
if RequiredServices().db_server_found(req) is False:
db_prompt = [
{
"message": " You must have PostgreSQL\n would you like us to try and install it now? > ",
"options": "postgres",
"name": "postgresql",
"answer": None,
"default": "no",
}
]
install_prompt = TerminalDisplay().prompt(db_prompt)
if install_prompt[0]["answer"] == "yes":
if installer is None:
installer = SystemInstaller().bin
options = ""
for o in installer["options"]:
options = options + " " + o
package = "postgresql postgresql-contrib"
cmd = (
"sudo "
+ installer["bin"]
+ " "
+ installer["install"]
+ " "
+ options
+ package
)
install_status = os.system(cmd)
for r in install_answers:
if r["name"] == "PASSWORD": sql_pass = r["answer"]
sql_user = config["USER"]
db_name = "pyshelf"
psql_cmd = """
CREATE DATABASE %s;
CREATE USER %s WITH PASSWORD \'%s\';
GRANT ALL PRIVILEGES ON DATABASE %s TO %s;
""" % (db_name, sql_user, sql_pass, db_name, sql_user)
_sql_file = "create_db.sql"
with open(_sql_file, "w") as sql_file_open:
sql_file_open.write(psql_cmd)
sql_file_open.close()
os.system("sudo systemctl start postgresql")
os.system("sudo -u postgres initdb --locale=en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data")
os.system("sudo -u postgres psql -f %s"%_sql_file)
messages = messages + [
"PostgreSQL installed and started",
"To enable autostart you must run",
" sudo systemctl enable nginx",
"\n",
"Database cluster initialized at /var/lib/postgres",
"pyShelf database and user created",
psql_cmd
]
# Post install configurations
sysinstall.make_nginx_config(install_answers)
try:
os.chdir("src/")
os.system("python manage.py makemigrations")
os.system("python manage.py makemigrations interface")
os.system("python manage.py migrate")
os.system("python manage.py migrate interface")
os.chdir("../")
except Exception as e:
print("-"*80)
print(" E:"+e)
try:
copy_config = sysinstall.copy_config()
if copy_config:
messages = messages + ["pyShelf site config copied to sites-available, and symlinked to sites-enabled"]
except Exception as e:
messages = messages + ["nginx site config not copied", "A nginx config for your install has been created \"pyshelf_nginx.conf\""]
sysinstall.make_wsgi_config(install_answers)
messages = messages + ["You should now import your books by running importBooks", "You can then start the interface with uwsgi --ini uwsgi.ini"]
# Display end screen
sysinstall.log()
TerminalDisplay().clear()
TerminalDisplay().banner()
for message in messages:
print(" "+message)
print()
TerminalDisplay().h_rule()

2
pyproject.toml vendored
View File

@@ -7,4 +7,4 @@ use_parentheses = true
# NOTE: the known_third_party setting is managed by # NOTE: the known_third_party setting is managed by
# seed-isort-config and should not be modified directly. # seed-isort-config and should not be modified directly.
# Any changes made to this setting will be overwritten. # Any changes made to this setting will be overwritten.
known_third_party = ["bs4", "django", "interface", "psycopg2", "requests"] known_third_party = ["backend", "bs4", "django", "interface", "prompt_toolkit", "psycopg2", "pyfiglet", "requests"]

40
pyshelf_nginx.conf vendored
View File

@@ -1,40 +0,0 @@
# mysite_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name 127.0.0.1; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /home/raelon/Projects/pyShelf/frontend/interface/media; # your Django project's media files - amend as required
}
location /static {
alias /home/raelon/Projects/pyShelf/frontend/interface/static; # your Django project's static files - amend as required
}
location /books {
internal;
alias /home/raelon/Projects/pyShelf/books;
# Absolute location of your ebook files
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /home/raelon/Projects/pyShelf/uwsgi_params; # the uwsgi_params file you installed
}
}

3
requirements.txt vendored
View File

@@ -15,3 +15,6 @@ toml
uwsgi uwsgi
django-debug-toolbar django-debug-toolbar
psycopg2-binary psycopg2-binary
prompt_toolkit
psutil
pyfiglet

View File

@@ -22,8 +22,6 @@ class Config:
self.VERSION = _data["VERSION"] self.VERSION = _data["VERSION"]
self.TITLE = self.TITLE + " ver " + self.VERSION self.TITLE = self.TITLE + " ver " + self.VERSION
self.book_shelf = _data["BOOKSHELF"] self.book_shelf = _data["BOOKSHELF"]
# self.catalogue_db = "data/catalogue.db"
# self.catalogue_db = str(root) + "/" + _data["DATABASE"]
self.catalogue_db = _data["DATABASE"] self.catalogue_db = _data["DATABASE"]
self.user = _data["USER"] self.user = _data["USER"]
self.password = _data["PASSWORD"] self.password = _data["PASSWORD"]
@@ -31,11 +29,14 @@ class Config:
self.db_port = _data["DB_PORT"] self.db_port = _data["DB_PORT"]
self.file_array = [ self.file_array = [
self.book_shelf, self.book_shelf,
# self.catalogue_db,
] ]
self.root = root self.root = root
self.auto_scan = True self.auto_scan = True
self.allowed_hosts = _data["ALLOWED_HOSTS"]
self.db_user = _data["USER"]
self.db_pass = _data["PASSWORD"]
def open_file(self, _cp): def open_file(self, _cp):
""" """
Opens config.json and reads in configuration options Opens config.json and reads in configuration options

116
src/backend/lib/display.py Normal file
View File

@@ -0,0 +1,116 @@
from __future__ import unicode_literals
import os
import pyfiglet
from prompt_toolkit import prompt as prm
class TerminalDisplay:
def __init__(self):
self.term = True
self.w, self.y = os.get_terminal_size()[0], os.get_terminal_size()[1]
self.home = os.environ["HOME"]
self.user = os.environ["USER"]
self.version = "0.4.0"
self.slogan = "The Installer Initiative"
self.green = "\033[1;32m"
self.blue = "\033[94m"
self.clr_term = "\033[m"
def screen(self):
return self.term
def installer(self):
questions = [
{
"message": ' Input the absolute path to your ebooks\n Enter for default "~/Books" > ',
"options": "",
"name": "BOOKPATH",
"answer": None,
"default": self.home + "/Books",
},
{
"message": ' Input your PostgreSQL server ip\n Enter for default "localhost" > ',
"options": "localhost",
"name": "DB_HOST",
"answer": None,
"default": "localhost",
},
{
"message": ' Input your PostgreSQL server port\n Enter for default "5432" > ',
"options": "5432",
"name": "DB_PORT",
"answer": None,
"default": "5432",
},
{
"message": ' Input your PostgreSQL password\n Enter for default "pyshelf" > ',
"options": "pyshelf",
"name": "PASSWORD",
"answer": None,
"default": "pyshelf",
},
{
"message": ' Web ui hostname/ip\n Enter for default "localhost" > ',
"options": "localhost",
"name": "hostname",
"answer": None,
"default": "localhost",
},
{
"message": ' Web ui port\n Enter for default "8000" > ',
"options": "8000",
"name": "webport",
"answer": None,
"default": "8000",
},
{
"message": ' wsgi port\n Enter for default "8001 > ',
"options": "8001",
"name": "wsgiport",
"answer": None,
"default": "8001",
},
]
return self.prompt(questions)
@staticmethod
def clear():
os.system("cls" if os.name == "nt" else "clear")
def prompt(self, questions):
self.clear()
answers = questions
for answer in answers:
self.banner()
answer["answer"] = prm(answer["message"])
if answer["answer"] == "":
answer["answer"] = answer["default"]
self.clear()
return answers
def h_rule(self):
print("\u2501" * self.w)
def banner(self):
self.h_rule()
title = pyfiglet.Figlet(font="cyberlarge")
print(self.green + title.renderText("pyShelf") + self.clr_term)
print(
self.blue + " version " + self.version + self.clr_term + " " + self.slogan
)
self.h_rule()
print()
def banner_render(self):
title = pyfiglet.Figlet(font="cyberlarge")
_banner = (
title.renderText("pyShelf")
+ "\nversion "
+ self.version
+ " "
+ self.slogan
+ "\n"
)
return _banner

View File

@@ -141,7 +141,7 @@ class Catalogue:
""" """
Calls storage system, gets list of books stored and compares against files on disk Calls storage system, gets list of books stored and compares against files on disk
""" """
db = Storage(self.db_pointer, self.config) db = Storage(self.config)
stored = db.book_paths_list() stored = db.book_paths_list()
db.close() db.close()
if self.books is None: if self.books is None:
@@ -162,7 +162,7 @@ class Catalogue:
Iterates over list and inserts new books into database. Iterates over list and inserts new books into database.
""" """
book_list = self.compare_shelf_current() book_list = self.compare_shelf_current()
db = Storage(self.db_pointer, self.config) db = Storage(self.config)
for book in book_list: for book in book_list:
book = self.process_book(book) book = self.process_book(book)
extracted = self.extract_metadata(book) extracted = self.extract_metadata(book)

View File

@@ -12,8 +12,7 @@ from .config import Config
class Storage: class Storage:
"""Contains all methods for system storage""" """Contains all methods for system storage"""
def __init__(self, db_pointer, config): def __init__(self, config):
# self.db_file = db_pointer
self.sql = config.catalogue_db self.sql = config.catalogue_db
self.user = config.user self.user = config.user
self.password = config.password self.password = config.password
@@ -22,8 +21,27 @@ class Storage:
self.db = psycopg2.connect( self.db = psycopg2.connect(
database=self.sql, user=self.user, password=self.password, host=self.db_host database=self.sql, user=self.user, password=self.password, host=self.db_host
) )
self.config = config
self.cursor = self.db.cursor() self.cursor = self.db.cursor()
# self.create_tables()
def check_ownership(self, table=None):
if table is None:
table = "books"
_q = "SELECT * FROM books"
try:
self.cursor.execute(_q)
except Exception as e:
breakpoint()
if e.pgcode == "42501":
_q = """ALTER TABLE public.books OWNER to pyshelf;"""
self.close()
set_perms = Storage(self.config)
try:
set_perms.cursor.execute(_q)
set_perms.close()
except Exception as e:
print(e)
set_perms.close()
def create_tables(self): def create_tables(self):
"""Create table structure""" """Create table structure"""

View File

@@ -6,6 +6,7 @@ import time
from .lib.config import Config from .lib.config import Config
from .lib.library import Catalogue from .lib.library import Catalogue
from .lib.pyShelf import InitFiles from .lib.pyShelf import InitFiles
from .lib.storage import Storage
sys.path.append(os.path.abspath(".")) sys.path.append(os.path.abspath("."))
@@ -18,6 +19,8 @@ def execute_scan(root):
_t1 = time.time() _t1 = time.time()
config = Config(root) # Get configuration settings config = Config(root) # Get configuration settings
InitFiles(config.file_array) # Initialize file system InitFiles(config.file_array) # Initialize file system
Storage(config).check_ownership()
catalogue = Catalogue(config) # Open the Catalogue catalogue = Catalogue(config) # Open the Catalogue
catalogue.import_books() catalogue.import_books()
_t2 = time.time() _t2 = time.time()

View File

@@ -11,7 +11,17 @@ https://docs.djangoproject.com/en/2.2/ref/settings/
""" """
import os import os
import sys
from pathlib import Path
from backend.lib.config import Config
CUR_DIR = Path.cwd()
PRG_DIR = CUR_DIR.parts[0:-1]
PRG_DIR = Path(*PRG_DIR)
CONFIG = Config(PRG_DIR)
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -25,7 +35,7 @@ SECRET_KEY = "@(9b9jslgg41u1u=mr)-2*-n2x0vef0zsy39*z@sz18&tvow18"
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False DEBUG = False
ALLOWED_HOSTS = ["*"] ALLOWED_HOSTS = CONFIG.allowed_hosts
# Application definition # Application definition
@@ -82,7 +92,7 @@ WSGI_APPLICATION = "frontend.wsgi.application"
# Database # Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
"""
DATABASES = { DATABASES = {
"default": { "default": {
"ENGINE": "django.db.backends.postgresql", "ENGINE": "django.db.backends.postgresql",
@@ -92,7 +102,15 @@ DATABASES = {
# "NAME": os.path.join(BASE_DIR, "db.sqlite3"), # "NAME": os.path.join(BASE_DIR, "db.sqlite3"),
} }
} }
"""
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": CONFIG.catalogue_db,
"PASSWORD": CONFIG.password,
}
}
# Password validation # Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

View File

@@ -0,0 +1,14 @@
# Generated by Django 2.2.7 on 2020-01-01 04:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("interface", "0001_initial"),
]
operations = [
migrations.AlterModelOptions(name="books", options={"managed": False},),
]

View File

@@ -0,0 +1,14 @@
# Generated by Django 2.2.7 on 2020-01-01 04:47
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("interface", "0002_auto_20200101_0445"),
]
operations = [
migrations.AlterModelOptions(name="books", options={},),
]

View File

@@ -98,7 +98,8 @@
#changelist #toolbar form input[type="submit"] { #changelist #toolbar form input[type="submit"] {
border: 1px solid #ccc; border: 1px solid #ccc;
padding: 2px 10px; font-size: 13px;
padding: 4px 8px;
margin: 0; margin: 0;
vertical-align: middle; vertical-align: middle;
background: #fff; background: #fff;

View File

@@ -392,6 +392,10 @@ input[type="submit"], button {
color: #ccc; color: #ccc;
} }
.form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {
width: 75%;
}
.inline-group { .inline-group {
overflow: auto; overflow: auto;
} }

View File

@@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -118,12 +118,14 @@
.select2-hidden-accessible { .select2-hidden-accessible {
border: 0 !important; border: 0 !important;
clip: rect(0 0 0 0) !important; clip: rect(0 0 0 0) !important;
-webkit-clip-path: inset(50%) !important;
clip-path: inset(50%) !important;
height: 1px !important; height: 1px !important;
margin: -1px !important;
overflow: hidden !important; overflow: hidden !important;
padding: 0 !important; padding: 0 !important;
position: absolute !important; position: absolute !important;
width: 1px !important; } width: 1px !important;
white-space: nowrap !important; }
.select2-container--default .select2-selection--single { .select2-container--default .select2-selection--single {
background-color: #fff; background-color: #fff;
@@ -420,9 +422,7 @@
color: #555; } color: #555; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
float: right; } float: right;
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px; margin-left: 5px;
margin-right: auto; } margin-right: auto; }

File diff suppressed because one or more lines are too long

View File

@@ -263,7 +263,6 @@ p.datetime {
} }
.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { .datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {
min-width: 0;
margin-left: 5px; margin-left: 5px;
margin-bottom: 4px; margin-bottom: 4px;
} }

View File

@@ -179,11 +179,11 @@ Requires jQuery, core.js, and SelectBox.js.
// This is much faster in WebKit browsers than the fallback. // This is much faster in WebKit browsers than the fallback.
field.attr('required', 'required'); field.attr('required', 'required');
any_selected = field.is(':valid'); any_selected = field.is(':valid');
field.removeAttr('required');
} catch (e) { } catch (e) {
// Browsers that don't support :valid (IE < 10) // Browsers that don't support :valid (IE < 10)
any_selected = field.find('option:selected').length > 0; any_selected = field.find('option:selected').length > 0;
} }
field.removeAttr('required');
return any_selected; return any_selected;
}, },
refresh_icons: function(field_id) { refresh_icons: function(field_id) {

View File

@@ -1,4 +1,4 @@
/*global Calendar, findPosX, findPosY, getStyle, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/ /*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/
// Inserts shortcut buttons after all of the following: // Inserts shortcut buttons after all of the following:
// <input type="text" class="vDateField"> // <input type="text" class="vDateField">
// <input type="text" class="vTimeField"> // <input type="text" class="vTimeField">
@@ -197,7 +197,7 @@
// Recalculate the clockbox position // Recalculate the clockbox position
// is it left-to-right or right-to-left layout ? // is it left-to-right or right-to-left layout ?
if (getStyle(document.body, 'direction') !== 'rtl') { if (window.getComputedStyle(document.body).direction !== 'rtl') {
clock_box.style.left = findPosX(clock_link) + 17 + 'px'; clock_box.style.left = findPosX(clock_link) + 17 + 'px';
} }
else { else {
@@ -370,7 +370,7 @@
// Recalculate the clockbox position // Recalculate the clockbox position
// is it left-to-right or right-to-left layout ? // is it left-to-right or right-to-left layout ?
if (getStyle(document.body, 'direction') !== 'rtl') { if (window.getComputedStyle(document.body).direction !== 'rtl') {
cal_box.style.left = findPosX(cal_link) + 17 + 'px'; cal_box.style.left = findPosX(cal_link) + 17 + 'px';
} }
else { else {

View File

@@ -74,13 +74,7 @@ function findPosY(obj) {
(function() { (function() {
'use strict'; 'use strict';
Date.prototype.getTwelveHours = function() { Date.prototype.getTwelveHours = function() {
var hours = this.getHours(); return this.getHours() % 12 || 12;
if (hours === 0) {
return 12;
}
else {
return hours <= 12 ? hours : hours - 12;
}
}; };
Date.prototype.getTwoDigitMonth = function() { Date.prototype.getTwoDigitMonth = function() {
@@ -107,14 +101,6 @@ function findPosY(obj) {
return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
}; };
Date.prototype.getHourMinute = function() {
return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
};
Date.prototype.getHourMinuteSecond = function() {
return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
};
Date.prototype.getFullMonthName = function() { Date.prototype.getFullMonthName = function() {
return typeof window.CalendarNamespace === "undefined" return typeof window.CalendarNamespace === "undefined"
? this.getTwoDigitMonth() ? this.getTwoDigitMonth()
@@ -156,14 +142,6 @@ function findPosY(obj) {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// String object extensions // String object extensions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
String.prototype.pad_left = function(pad_length, pad_string) {
var new_string = this;
for (var i = 0; new_string.length < pad_length; i++) {
new_string = pad_string + new_string;
}
return new_string;
};
String.prototype.strptime = function(format) { String.prototype.strptime = function(format) {
var split_format = format.split(/[.\-/]/); var split_format = format.split(/[.\-/]/);
var date = this.split(/[.\-/]/); var date = this.split(/[.\-/]/);
@@ -193,20 +171,3 @@ function findPosY(obj) {
}; };
})(); })();
// ----------------------------------------------------------------------------
// Get the computed style for and element
// ----------------------------------------------------------------------------
function getStyle(oElm, strCssRule) {
'use strict';
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle) {
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
}
else if(oElm.currentStyle) {
strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) {
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}

View File

@@ -1,13 +1,10 @@
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(b,d,a){b instanceof String&&(b=String(b));for(var c=b.length,f=0;f<c;f++){var g=b[f];if(d.call(a,g,f,b))return{i:f,v:g}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(b,d,a){b!=Array.prototype&&b!=Object.prototype&&(b[d]=a.value)}; (function(b){b.fn.formset=function(c){var a=b.extend({},b.fn.formset.defaults,c),d=b(this);c=d.parent();var h=function(a,e,f){var c=new RegExp("("+e+"-(\\d+|__prefix__))");e=e+"-"+f;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(c,e));a.id&&(a.id=a.id.replace(c,e));a.name&&(a.name=a.name.replace(c,e))},g=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),k=parseInt(g.val(),10),e=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),f=""===e.val()||0<e.val()-g.val();
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,a,c){if(d){a=$jscomp.global;b=b.split(".");for(c=0;c<b.length-1;c++){var f=b[c];f in a||(a[f]={});a=a[f]}b=b[b.length-1];c=a[b];d=d(c);d!=c&&null!=d&&$jscomp.defineProperty(a,b,{configurable:!0,writable:!0,value:d})}}; d.each(function(e){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});if(d.length&&f){var m=a.addButton;null===m&&("TR"===d.prop("tagName")?(d=this.eq(-1).children().length,c.append('<tr class="'+a.addCssClass+'"><td colspan="'+d+'"><a href="#">'+a.addText+"</a></tr>"),m=c.find("tr:last a")):(d.filter(":last").after('<div class="'+a.addCssClass+'"><a href="#">'+a.addText+"</a></div>"),m=d.filter(":last").next().find("a")));m.on("click",function(f){f.preventDefault();f=b("#"+a.prefix+"-empty");
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,a){return $jscomp.findInternal(this,b,a).v}},"es6","es3"); var c=f.clone(!0);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+k);c.is("tr")?c.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></div>"):c.is("ul")||c.is("ol")?c.append('<li><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></li>"):c.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></span>");c.find("*").each(function(){h(this,a.prefix,g.val())});c.insertBefore(b(f));
(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),c=b(this);d=c.parent();var f=function(a,e,d){var c=new RegExp("("+e+"-(\\d+|__prefix__))");e=e+"-"+d;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(c,e));a.id&&(a.id=a.id.replace(c,e));a.name&&(a.name=a.name.replace(c,e))},g=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),h=parseInt(g.val(),10),e=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),m=""===e.val()||0<e.val()-g.val(); b(g).val(parseInt(g.val(),10)+1);k+=1;""!==e.val()&&0>=e.val()-g.val()&&m.parent().hide();c.find("a."+a.deleteCssClass).on("click",function(f){f.preventDefault();c.remove();--k;a.removed&&a.removed(c);b(document).trigger("formset:removed",[c,a.prefix]);f=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(f.length);(""===e.val()||0<e.val()-f.length)&&m.parent().show();var d,g=function(){h(this,a.prefix,l)};var l=0;for(d=f.length;l<d;l++)h(b(f).get(l),a.prefix,l),b(f.get(l)).find("*").each(g)});
c.each(function(e){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});if(c.length&&m){var l=a.addButton;null===l&&("TR"===c.prop("tagName")?(c=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+c+'"><a href="#">'+a.addText+"</a></tr>"),l=d.find("tr:last a")):(c.filter(":last").after('<div class="'+a.addCssClass+'"><a href="#">'+a.addText+"</a></div>"),l=c.filter(":last").next().find("a")));l.on("click",function(d){d.preventDefault();d=b("#"+a.prefix+"-empty"); a.added&&a.added(c);b(document).trigger("formset:added",[c,a.prefix])})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null,addButton:null};b.fn.tabularFormset=function(c,a){var d=b(this),h=function(a){b(c).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")},g=function(){"undefined"!==
var c=d.clone(!0);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+h);c.is("tr")?c.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></div>"):c.is("ul")||c.is("ol")?c.append('<li><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></li>"):c.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="#">'+a.deleteText+"</a></span>");c.find("*").each(function(){f(this,a.prefix,g.val())});c.insertBefore(b(d)); typeof SelectFilter&&(b(".selectfilter").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!0)}))},k=function(a){a.find(".prepopulated_field").each(function(){var c=b(this).find("input, select, textarea"),e=c.data("dependency_list")||[],d=[];b.each(e,function(b,c){d.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))});d.length&&c.prepopulate(d,
b(g).val(parseInt(g.val(),10)+1);h+=1;""!==e.val()&&0>=e.val()-g.val()&&l.parent().hide();c.find("a."+a.deleteCssClass).on("click",function(d){d.preventDefault();c.remove();--h;a.removed&&a.removed(c);b(document).trigger("formset:removed",[c,a.prefix]);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(""===e.val()||0<e.val()-d.length)&&l.parent().show();var m,g=function(){f(this,a.prefix,k)};var k=0;for(m=d.length;k<m;k++)f(b(d).get(k),a.prefix,k),b(d.get(k)).find("*").each(g)}); c.attr("maxlength"))})};d.formset({prefix:a.prefix,addText:a.addText,formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",removed:h,added:function(a){k(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());g();h(a)},addButton:a.addButton});return d};b.fn.stackedFormset=function(c,a){var d=b(this),h=function(a){b(c).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g,
a.added&&a.added(c);b(document).trigger("formset:added",[c,a.prefix])})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null,addButton:null};b.fn.tabularFormset=function(d,a){var c=b(this),f=function(a){b(d).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")},g=function(){"undefined"!== "#"+a))})},g=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!0)}))},k=function(a){a.find(".prepopulated_field").each(function(){var c=b(this).find("input, select, textarea"),d=c.data("dependency_list")||[],e=[];b.each(d,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))});
typeof SelectFilter&&(b(".selectfilter").each(function(b,a){b=a.name.split("-");SelectFilter.init(a.id,b[b.length-1],!1)}),b(".selectfilterstacked").each(function(b,a){b=a.name.split("-");SelectFilter.init(a.id,b[b.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var c=b(this).find("input, select, textarea"),d=c.data("dependency_list")||[],e=[];b.each(d,function(b,c){e.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))});e.length&&c.prepopulate(e, e.length&&c.prepopulate(e,c.attr("maxlength"))})};d.formset({prefix:a.prefix,addText:a.addText,formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",removed:h,added:function(a){k(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());g();h(a)},addButton:a.addButton});return d};b(document).ready(function(){b(".js-inline-admin-formset").each(function(){var c=b(this).data(),a=c.inlineFormset;
c.attr("maxlength"))})};c.formset({prefix:a.prefix,addText:a.addText,formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",removed:f,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());g();f(a)},addButton:a.addButton});return c};b.fn.stackedFormset=function(d,a){var c=b(this),f=function(a){b(d).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g, switch(c.inlineType){case "stacked":c=a.name+"-group .inline-related";b(c).stackedFormset(c,a.options);break;case "tabular":c=a.name+"-group .tabular.inline-related tbody:first > tr",b(c).tabularFormset(c,a.options)}})})})(django.jQuery);
"#"+a))})},g=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){a=b.name.split("-");SelectFilter.init(b.id,a[a.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var c=b(this).find("input, select, textarea"),d=c.data("dependency_list")||[],e=[];b.each(d,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))});
e.length&&c.prepopulate(e,c.attr("maxlength"))})};c.formset({prefix:a.prefix,addText:a.addText,formCssClass:"dynamic-"+a.prefix,deleteCssClass:"inline-deletelink",deleteText:a.deleteText,emptyCssClass:"empty-form",removed:f,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());g();f(a)},addButton:a.addButton});return c};b(document).ready(function(){b(".js-inline-admin-formset").each(function(){var d=b(this).data(),a=d.inlineFormset;
switch(d.inlineType){case "stacked":d=a.name+"-group .inline-related";b(d).stackedFormset(d,a.options);break;case "tabular":d=a.name+"-group .tabular.inline-related tbody:first > tr",b(d).tabularFormset(d,a.options)}})})})(django.jQuery);

View File

@@ -1,10 +1,4 @@
Copyright jQuery Foundation and other contributors, https://jquery.org/ Copyright JS Foundation and other contributors, https://js.foundation/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery
====
Permission is hereby granted, free of charge, to any person obtaining Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the a copy of this software and associated documentation files (the

View File

@@ -1,5 +1,5 @@
/*! /*!
* jQuery JavaScript Library v3.3.1 * jQuery JavaScript Library v3.4.1
* https://jquery.com/ * https://jquery.com/
* *
* Includes Sizzle.js * Includes Sizzle.js
@@ -9,7 +9,7 @@
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
* *
* Date: 2018-01-20T17:24Z * Date: 2019-05-01T21:04Z
*/ */
( function( global, factory ) { ( function( global, factory ) {
@@ -91,20 +91,33 @@ var isWindow = function isWindow( obj ) {
var preservedScriptAttributes = { var preservedScriptAttributes = {
type: true, type: true,
src: true, src: true,
nonce: true,
noModule: true noModule: true
}; };
function DOMEval( code, doc, node ) { function DOMEval( code, node, doc ) {
doc = doc || document; doc = doc || document;
var i, var i, val,
script = doc.createElement( "script" ); script = doc.createElement( "script" );
script.text = code; script.text = code;
if ( node ) { if ( node ) {
for ( i in preservedScriptAttributes ) { for ( i in preservedScriptAttributes ) {
if ( node[ i ] ) {
script[ i ] = node[ i ]; // Support: Firefox 64+, Edge 18+
// Some browsers don't support the "nonce" property on scripts.
// On the other hand, just using `getAttribute` is not enough as
// the `nonce` attribute is reset to an empty string whenever it
// becomes browsing-context connected.
// See https://github.com/whatwg/html/issues/2369
// See https://html.spec.whatwg.org/#nonce-attributes
// The `node.getAttribute` check was added for the sake of
// `jQuery.globalEval` so that it can fake a nonce-containing node
// via an object.
val = node[ i ] || node.getAttribute && node.getAttribute( i );
if ( val ) {
script.setAttribute( i, val );
} }
} }
} }
@@ -129,7 +142,7 @@ function toType( obj ) {
var var
version = "3.3.1", version = "3.4.1",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@@ -258,7 +271,6 @@ jQuery.extend = jQuery.fn.extend = function() {
// Extend the base object // Extend the base object
for ( name in options ) { for ( name in options ) {
src = target[ name ];
copy = options[ name ]; copy = options[ name ];
// Prevent Object.prototype pollution // Prevent Object.prototype pollution
@@ -270,14 +282,17 @@ jQuery.extend = jQuery.fn.extend = function() {
// Recurse if we're merging plain objects or arrays // Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject( copy ) || if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
( copyIsArray = Array.isArray( copy ) ) ) ) { ( copyIsArray = Array.isArray( copy ) ) ) ) {
src = target[ name ];
if ( copyIsArray ) { // Ensure proper type for the source value
copyIsArray = false; if ( copyIsArray && !Array.isArray( src ) ) {
clone = src && Array.isArray( src ) ? src : []; clone = [];
} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
clone = {};
} else { } else {
clone = src && jQuery.isPlainObject( src ) ? src : {}; clone = src;
} }
copyIsArray = false;
// Never move original objects, clone them // Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy ); target[ name ] = jQuery.extend( deep, clone, copy );
@@ -330,9 +345,6 @@ jQuery.extend( {
}, },
isEmptyObject: function( obj ) { isEmptyObject: function( obj ) {
/* eslint-disable no-unused-vars */
// See https://github.com/eslint/eslint/issues/6125
var name; var name;
for ( name in obj ) { for ( name in obj ) {
@@ -342,8 +354,8 @@ jQuery.extend( {
}, },
// Evaluates a script in a global context // Evaluates a script in a global context
globalEval: function( code ) { globalEval: function( code, options ) {
DOMEval( code ); DOMEval( code, { nonce: options && options.nonce } );
}, },
each: function( obj, callback ) { each: function( obj, callback ) {
@@ -499,14 +511,14 @@ function isArrayLike( obj ) {
} }
var Sizzle = var Sizzle =
/*! /*!
* Sizzle CSS Selector Engine v2.3.3 * Sizzle CSS Selector Engine v2.3.4
* https://sizzlejs.com/ * https://sizzlejs.com/
* *
* Copyright jQuery Foundation and other contributors * Copyright JS Foundation and other contributors
* Released under the MIT license * Released under the MIT license
* http://jquery.org/license * https://js.foundation/
* *
* Date: 2016-08-08 * Date: 2019-04-08
*/ */
(function( window ) { (function( window ) {
@@ -540,6 +552,7 @@ var i,
classCache = createCache(), classCache = createCache(),
tokenCache = createCache(), tokenCache = createCache(),
compilerCache = createCache(), compilerCache = createCache(),
nonnativeSelectorCache = createCache(),
sortOrder = function( a, b ) { sortOrder = function( a, b ) {
if ( a === b ) { if ( a === b ) {
hasDuplicate = true; hasDuplicate = true;
@@ -601,8 +614,7 @@ var i,
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
rdescend = new RegExp( whitespace + "|>" ),
rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
rpseudo = new RegExp( pseudos ), rpseudo = new RegExp( pseudos ),
ridentifier = new RegExp( "^" + identifier + "$" ), ridentifier = new RegExp( "^" + identifier + "$" ),
@@ -623,6 +635,7 @@ var i,
whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
}, },
rhtml = /HTML$/i,
rinputs = /^(?:input|select|textarea|button)$/i, rinputs = /^(?:input|select|textarea|button)$/i,
rheader = /^h\d$/i, rheader = /^h\d$/i,
@@ -677,9 +690,9 @@ var i,
setDocument(); setDocument();
}, },
disabledAncestor = addCombinator( inDisabledFieldset = addCombinator(
function( elem ) { function( elem ) {
return elem.disabled === true && ("form" in elem || "label" in elem); return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
}, },
{ dir: "parentNode", next: "legend" } { dir: "parentNode", next: "legend" }
); );
@@ -792,18 +805,22 @@ function Sizzle( selector, context, results, seed ) {
// Take advantage of querySelectorAll // Take advantage of querySelectorAll
if ( support.qsa && if ( support.qsa &&
!compilerCache[ selector + " " ] && !nonnativeSelectorCache[ selector + " " ] &&
(!rbuggyQSA || !rbuggyQSA.test( selector )) ) { (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
if ( nodeType !== 1 ) { // Support: IE 8 only
newContext = context;
newSelector = selector;
// qSA looks outside Element context, which is not what we want
// Thanks to Andrew Dupont for this workaround technique
// Support: IE <=8
// Exclude object elements // Exclude object elements
} else if ( context.nodeName.toLowerCase() !== "object" ) { (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
newSelector = selector;
newContext = context;
// qSA considers elements outside a scoping root when evaluating child or
// descendant combinators, which is not what we want.
// In such cases, we work around the behavior by prefixing every selector in the
// list with an ID selector referencing the scope context.
// Thanks to Andrew Dupont for this technique.
if ( nodeType === 1 && rdescend.test( selector ) ) {
// Capture the context ID, setting it first if necessary // Capture the context ID, setting it first if necessary
if ( (nid = context.getAttribute( "id" )) ) { if ( (nid = context.getAttribute( "id" )) ) {
@@ -825,17 +842,16 @@ function Sizzle( selector, context, results, seed ) {
context; context;
} }
if ( newSelector ) { try {
try { push.apply( results,
push.apply( results, newContext.querySelectorAll( newSelector )
newContext.querySelectorAll( newSelector ) );
); return results;
return results; } catch ( qsaError ) {
} catch ( qsaError ) { nonnativeSelectorCache( selector, true );
} finally { } finally {
if ( nid === expando ) { if ( nid === expando ) {
context.removeAttribute( "id" ); context.removeAttribute( "id" );
}
} }
} }
} }
@@ -999,7 +1015,7 @@ function createDisabledPseudo( disabled ) {
// Where there is no isDisabled, check manually // Where there is no isDisabled, check manually
/* jshint -W018 */ /* jshint -W018 */
elem.isDisabled !== !disabled && elem.isDisabled !== !disabled &&
disabledAncestor( elem ) === disabled; inDisabledFieldset( elem ) === disabled;
} }
return elem.disabled === disabled; return elem.disabled === disabled;
@@ -1056,10 +1072,13 @@ support = Sizzle.support = {};
* @returns {Boolean} True iff elem is a non-HTML XML node * @returns {Boolean} True iff elem is a non-HTML XML node
*/ */
isXML = Sizzle.isXML = function( elem ) { isXML = Sizzle.isXML = function( elem ) {
// documentElement is verified for cases where it doesn't yet exist var namespace = elem.namespaceURI,
// (such as loading iframes in IE - #4833) docElem = (elem.ownerDocument || elem).documentElement;
var documentElement = elem && (elem.ownerDocument || elem).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false; // Support: IE <=8
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
// https://bugs.jquery.com/ticket/4833
return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
}; };
/** /**
@@ -1481,11 +1500,8 @@ Sizzle.matchesSelector = function( elem, expr ) {
setDocument( elem ); setDocument( elem );
} }
// Make sure that attribute selectors are quoted
expr = expr.replace( rattributeQuotes, "='$1']" );
if ( support.matchesSelector && documentIsHTML && if ( support.matchesSelector && documentIsHTML &&
!compilerCache[ expr + " " ] && !nonnativeSelectorCache[ expr + " " ] &&
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
@@ -1499,7 +1515,9 @@ Sizzle.matchesSelector = function( elem, expr ) {
elem.document && elem.document.nodeType !== 11 ) { elem.document && elem.document.nodeType !== 11 ) {
return ret; return ret;
} }
} catch (e) {} } catch (e) {
nonnativeSelectorCache( expr, true );
}
} }
return Sizzle( expr, document, null, [ elem ] ).length > 0; return Sizzle( expr, document, null, [ elem ] ).length > 0;
@@ -1958,7 +1976,7 @@ Expr = Sizzle.selectors = {
"contains": markFunction(function( text ) { "contains": markFunction(function( text ) {
text = text.replace( runescape, funescape ); text = text.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
}; };
}), }),
@@ -2097,7 +2115,11 @@ Expr = Sizzle.selectors = {
}), }),
"lt": createPositionalPseudo(function( matchIndexes, length, argument ) { "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
var i = argument < 0 ? argument + length : argument; var i = argument < 0 ?
argument + length :
argument > length ?
length :
argument;
for ( ; --i >= 0; ) { for ( ; --i >= 0; ) {
matchIndexes.push( i ); matchIndexes.push( i );
} }
@@ -3147,18 +3169,18 @@ jQuery.each( {
return siblings( elem.firstChild ); return siblings( elem.firstChild );
}, },
contents: function( elem ) { contents: function( elem ) {
if ( nodeName( elem, "iframe" ) ) { if ( typeof elem.contentDocument !== "undefined" ) {
return elem.contentDocument; return elem.contentDocument;
} }
// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
// Treat the template element as a regular one in browsers that // Treat the template element as a regular one in browsers that
// don't support it. // don't support it.
if ( nodeName( elem, "template" ) ) { if ( nodeName( elem, "template" ) ) {
elem = elem.content || elem; elem = elem.content || elem;
} }
return jQuery.merge( [], elem.childNodes ); return jQuery.merge( [], elem.childNodes );
} }
}, function( name, fn ) { }, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) { jQuery.fn[ name ] = function( until, selector ) {
@@ -4467,6 +4489,26 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
var documentElement = document.documentElement;
var isAttached = function( elem ) {
return jQuery.contains( elem.ownerDocument, elem );
},
composed = { composed: true };
// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
// Check attachment across shadow DOM boundaries when possible (gh-3504)
// Support: iOS 10.0-10.2 only
// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
// leading to errors. We need to check for `getRootNode`.
if ( documentElement.getRootNode ) {
isAttached = function( elem ) {
return jQuery.contains( elem.ownerDocument, elem ) ||
elem.getRootNode( composed ) === elem.ownerDocument;
};
}
var isHiddenWithinTree = function( elem, el ) { var isHiddenWithinTree = function( elem, el ) {
// isHiddenWithinTree might be called from jQuery#filter function; // isHiddenWithinTree might be called from jQuery#filter function;
@@ -4481,7 +4523,7 @@ var isHiddenWithinTree = function( elem, el ) {
// Support: Firefox <=43 - 45 // Support: Firefox <=43 - 45
// Disconnected elements can have computed display: none, so first confirm that elem is // Disconnected elements can have computed display: none, so first confirm that elem is
// in the document. // in the document.
jQuery.contains( elem.ownerDocument, elem ) && isAttached( elem ) &&
jQuery.css( elem, "display" ) === "none"; jQuery.css( elem, "display" ) === "none";
}; };
@@ -4523,7 +4565,8 @@ function adjustCSS( elem, prop, valueParts, tween ) {
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
// Starting value computation is required for potential unit mismatches // Starting value computation is required for potential unit mismatches
initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && initialInUnit = elem.nodeType &&
( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
rcssNum.exec( jQuery.css( elem, prop ) ); rcssNum.exec( jQuery.css( elem, prop ) );
if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
@@ -4670,7 +4713,7 @@ jQuery.fn.extend( {
} ); } );
var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rcheckableType = ( /^(?:checkbox|radio)$/i );
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
@@ -4742,7 +4785,7 @@ function setGlobalEval( elems, refElements ) {
var rhtml = /<|&#?\w+;/; var rhtml = /<|&#?\w+;/;
function buildFragment( elems, context, scripts, selection, ignored ) { function buildFragment( elems, context, scripts, selection, ignored ) {
var elem, tmp, tag, wrap, contains, j, var elem, tmp, tag, wrap, attached, j,
fragment = context.createDocumentFragment(), fragment = context.createDocumentFragment(),
nodes = [], nodes = [],
i = 0, i = 0,
@@ -4806,13 +4849,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
continue; continue;
} }
contains = jQuery.contains( elem.ownerDocument, elem ); attached = isAttached( elem );
// Append to fragment // Append to fragment
tmp = getAll( fragment.appendChild( elem ), "script" ); tmp = getAll( fragment.appendChild( elem ), "script" );
// Preserve script evaluation history // Preserve script evaluation history
if ( contains ) { if ( attached ) {
setGlobalEval( tmp ); setGlobalEval( tmp );
} }
@@ -4855,8 +4898,6 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
div.innerHTML = "<textarea>x</textarea>"; div.innerHTML = "<textarea>x</textarea>";
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
} )(); } )();
var documentElement = document.documentElement;
var var
@@ -4872,8 +4913,19 @@ function returnFalse() {
return false; return false;
} }
// Support: IE <=9 - 11+
// focus() and blur() are asynchronous, except when they are no-op.
// So expect focus to be synchronous when the element is already active,
// and blur to be synchronous when the element is not already active.
// (focus and blur are always synchronous in other supported browsers,
// this just defines when we can count on it).
function expectSync( elem, type ) {
return ( elem === safeActiveElement() ) === ( type === "focus" );
}
// Support: IE <=9 only // Support: IE <=9 only
// See #13393 for more info // Accessing document.activeElement can throw unexpectedly
// https://bugs.jquery.com/ticket/13393
function safeActiveElement() { function safeActiveElement() {
try { try {
return document.activeElement; return document.activeElement;
@@ -5173,9 +5225,10 @@ jQuery.event = {
while ( ( handleObj = matched.handlers[ j++ ] ) && while ( ( handleObj = matched.handlers[ j++ ] ) &&
!event.isImmediatePropagationStopped() ) { !event.isImmediatePropagationStopped() ) {
// Triggered event must either 1) have no namespace, or 2) have namespace(s) // If the event is namespaced, then each handler is only invoked if it is
// a subset or equal to those in the bound event (both can have no namespace). // specially universal or its namespaces are a superset of the event's.
if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { if ( !event.rnamespace || handleObj.namespace === false ||
event.rnamespace.test( handleObj.namespace ) ) {
event.handleObj = handleObj; event.handleObj = handleObj;
event.data = handleObj.data; event.data = handleObj.data;
@@ -5299,39 +5352,51 @@ jQuery.event = {
// Prevent triggered image.load events from bubbling to window.load // Prevent triggered image.load events from bubbling to window.load
noBubble: true noBubble: true
}, },
focus: {
// Fire native event if possible so blur/focus sequence is correct
trigger: function() {
if ( this !== safeActiveElement() && this.focus ) {
this.focus();
return false;
}
},
delegateType: "focusin"
},
blur: {
trigger: function() {
if ( this === safeActiveElement() && this.blur ) {
this.blur();
return false;
}
},
delegateType: "focusout"
},
click: { click: {
// For checkbox, fire native event so checked state will be right // Utilize native event to ensure correct state for checkable inputs
trigger: function() { setup: function( data ) {
if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
this.click(); // For mutual compressibility with _default, replace `this` access with a local var.
return false; // `|| data` is dead code meant only to preserve the variable through minification.
var el = this || data;
// Claim the first handler
if ( rcheckableType.test( el.type ) &&
el.click && nodeName( el, "input" ) ) {
// dataPriv.set( el, "click", ... )
leverageNative( el, "click", returnTrue );
} }
// Return false to allow normal processing in the caller
return false;
},
trigger: function( data ) {
// For mutual compressibility with _default, replace `this` access with a local var.
// `|| data` is dead code meant only to preserve the variable through minification.
var el = this || data;
// Force setup before triggering a click
if ( rcheckableType.test( el.type ) &&
el.click && nodeName( el, "input" ) ) {
leverageNative( el, "click" );
}
// Return non-false to allow normal event-path propagation
return true;
}, },
// For cross-browser consistency, don't fire native .click() on links // For cross-browser consistency, suppress native .click() on links
// Also prevent it if we're currently inside a leveraged native-event stack
_default: function( event ) { _default: function( event ) {
return nodeName( event.target, "a" ); var target = event.target;
return rcheckableType.test( target.type ) &&
target.click && nodeName( target, "input" ) &&
dataPriv.get( target, "click" ) ||
nodeName( target, "a" );
} }
}, },
@@ -5348,6 +5413,93 @@ jQuery.event = {
} }
}; };
// Ensure the presence of an event listener that handles manually-triggered
// synthetic events by interrupting progress until reinvoked in response to
// *native* events that it fires directly, ensuring that state changes have
// already occurred before other listeners are invoked.
function leverageNative( el, type, expectSync ) {
// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
if ( !expectSync ) {
if ( dataPriv.get( el, type ) === undefined ) {
jQuery.event.add( el, type, returnTrue );
}
return;
}
// Register the controller as a special universal handler for all event namespaces
dataPriv.set( el, type, false );
jQuery.event.add( el, type, {
namespace: false,
handler: function( event ) {
var notAsync, result,
saved = dataPriv.get( this, type );
if ( ( event.isTrigger & 1 ) && this[ type ] ) {
// Interrupt processing of the outer synthetic .trigger()ed event
// Saved data should be false in such cases, but might be a leftover capture object
// from an async native handler (gh-4350)
if ( !saved.length ) {
// Store arguments for use when handling the inner native event
// There will always be at least one argument (an event object), so this array
// will not be confused with a leftover capture object.
saved = slice.call( arguments );
dataPriv.set( this, type, saved );
// Trigger the native event and capture its result
// Support: IE <=9 - 11+
// focus() and blur() are asynchronous
notAsync = expectSync( this, type );
this[ type ]();
result = dataPriv.get( this, type );
if ( saved !== result || notAsync ) {
dataPriv.set( this, type, false );
} else {
result = {};
}
if ( saved !== result ) {
// Cancel the outer synthetic event
event.stopImmediatePropagation();
event.preventDefault();
return result.value;
}
// If this is an inner synthetic event for an event with a bubbling surrogate
// (focus or blur), assume that the surrogate already propagated from triggering the
// native event and prevent that from happening again here.
// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
// bubbling surrogate propagates *after* the non-bubbling base), but that seems
// less bad than duplication.
} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
event.stopPropagation();
}
// If this is a native event triggered above, everything is now in order
// Fire an inner synthetic event with the original arguments
} else if ( saved.length ) {
// ...and capture the result
dataPriv.set( this, type, {
value: jQuery.event.trigger(
// Support: IE <=9 - 11+
// Extend with the prototype to reset the above stopImmediatePropagation()
jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
saved.slice( 1 ),
this
)
} );
// Abort handling of the native event
event.stopImmediatePropagation();
}
}
} );
}
jQuery.removeEvent = function( elem, type, handle ) { jQuery.removeEvent = function( elem, type, handle ) {
// This "if" is needed for plain objects // This "if" is needed for plain objects
@@ -5460,6 +5612,7 @@ jQuery.each( {
shiftKey: true, shiftKey: true,
view: true, view: true,
"char": true, "char": true,
code: true,
charCode: true, charCode: true,
key: true, key: true,
keyCode: true, keyCode: true,
@@ -5506,6 +5659,33 @@ jQuery.each( {
} }
}, jQuery.event.addProp ); }, jQuery.event.addProp );
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
jQuery.event.special[ type ] = {
// Utilize native event if possible so blur/focus sequence is correct
setup: function() {
// Claim the first handler
// dataPriv.set( this, "focus", ... )
// dataPriv.set( this, "blur", ... )
leverageNative( this, type, expectSync );
// Return false to allow normal processing in the caller
return false;
},
trigger: function() {
// Force setup before trigger
leverageNative( this, type );
// Return non-false to allow normal event-path propagation
return true;
},
delegateType: delegateType
};
} );
// Create mouseenter/leave events using mouseover/out and event-time checks // Create mouseenter/leave events using mouseover/out and event-time checks
// so that event delegation works in jQuery. // so that event delegation works in jQuery.
// Do the same for pointerenter/pointerleave and pointerover/pointerout // Do the same for pointerenter/pointerleave and pointerover/pointerout
@@ -5756,11 +5936,13 @@ function domManip( collection, args, callback, ignored ) {
if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
// Optional AJAX dependency, but won't run scripts if not present // Optional AJAX dependency, but won't run scripts if not present
if ( jQuery._evalUrl ) { if ( jQuery._evalUrl && !node.noModule ) {
jQuery._evalUrl( node.src ); jQuery._evalUrl( node.src, {
nonce: node.nonce || node.getAttribute( "nonce" )
} );
} }
} else { } else {
DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
} }
} }
} }
@@ -5782,7 +5964,7 @@ function remove( elem, selector, keepData ) {
} }
if ( node.parentNode ) { if ( node.parentNode ) {
if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { if ( keepData && isAttached( node ) ) {
setGlobalEval( getAll( node, "script" ) ); setGlobalEval( getAll( node, "script" ) );
} }
node.parentNode.removeChild( node ); node.parentNode.removeChild( node );
@@ -5800,7 +5982,7 @@ jQuery.extend( {
clone: function( elem, dataAndEvents, deepDataAndEvents ) { clone: function( elem, dataAndEvents, deepDataAndEvents ) {
var i, l, srcElements, destElements, var i, l, srcElements, destElements,
clone = elem.cloneNode( true ), clone = elem.cloneNode( true ),
inPage = jQuery.contains( elem.ownerDocument, elem ); inPage = isAttached( elem );
// Fix IE cloning issues // Fix IE cloning issues
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
@@ -6096,8 +6278,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
// Support: IE 9 only // Support: IE 9 only
// Detect overflow:scroll screwiness (gh-3699) // Detect overflow:scroll screwiness (gh-3699)
// Support: Chrome <=64
// Don't get tricked when zoom affects offsetWidth (gh-4029)
div.style.position = "absolute"; div.style.position = "absolute";
scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
documentElement.removeChild( container ); documentElement.removeChild( container );
@@ -6168,7 +6352,7 @@ function curCSS( elem, name, computed ) {
if ( computed ) { if ( computed ) {
ret = computed.getPropertyValue( name ) || computed[ name ]; ret = computed.getPropertyValue( name ) || computed[ name ];
if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name ); ret = jQuery.style( elem, name );
} }
@@ -6224,30 +6408,13 @@ function addGetHookIf( conditionFn, hookFn ) {
} }
var var cssPrefixes = [ "Webkit", "Moz", "ms" ],
emptyStyle = document.createElement( "div" ).style,
vendorProps = {};
// Swappable if display is none or starts with table // Return a vendor-prefixed property or undefined
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
fontWeight: "400"
},
cssPrefixes = [ "Webkit", "Moz", "ms" ],
emptyStyle = document.createElement( "div" ).style;
// Return a css property mapped to a potentially vendor prefixed property
function vendorPropName( name ) { function vendorPropName( name ) {
// Shortcut for names that are not vendor prefixed
if ( name in emptyStyle ) {
return name;
}
// Check for vendor prefixed names // Check for vendor prefixed names
var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
i = cssPrefixes.length; i = cssPrefixes.length;
@@ -6260,16 +6427,33 @@ function vendorPropName( name ) {
} }
} }
// Return a property mapped along what jQuery.cssProps suggests or to // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
// a vendor prefixed property.
function finalPropName( name ) { function finalPropName( name ) {
var ret = jQuery.cssProps[ name ]; var final = jQuery.cssProps[ name ] || vendorProps[ name ];
if ( !ret ) {
ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; if ( final ) {
return final;
} }
return ret; if ( name in emptyStyle ) {
return name;
}
return vendorProps[ name ] = vendorPropName( name ) || name;
} }
var
// Swappable if display is none or starts with table
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
fontWeight: "400"
};
function setPositiveNumber( elem, value, subtract ) { function setPositiveNumber( elem, value, subtract ) {
// Any relative (+/-) values have already been // Any relative (+/-) values have already been
@@ -6341,7 +6525,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
delta - delta -
extra - extra -
0.5 0.5
) );
// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
// Use an explicit zero to avoid NaN (gh-3964)
) ) || 0;
} }
return delta; return delta;
@@ -6351,9 +6538,16 @@ function getWidthOrHeight( elem, dimension, extra ) {
// Start with computed style // Start with computed style
var styles = getStyles( elem ), var styles = getStyles( elem ),
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
// Fake content-box until we know it's needed to know the true value.
boxSizingNeeded = !support.boxSizingReliable() || extra,
isBorderBox = boxSizingNeeded &&
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
valueIsBorderBox = isBorderBox,
val = curCSS( elem, dimension, styles ), val = curCSS( elem, dimension, styles ),
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
valueIsBorderBox = isBorderBox;
// Support: Firefox <=54 // Support: Firefox <=54
// Return a confounding non-pixel value or feign ignorance, as appropriate. // Return a confounding non-pixel value or feign ignorance, as appropriate.
@@ -6364,22 +6558,29 @@ function getWidthOrHeight( elem, dimension, extra ) {
val = "auto"; val = "auto";
} }
// Check for style in case a browser which returns unreliable values
// for getComputedStyle silently falls back to the reliable elem.style
valueIsBorderBox = valueIsBorderBox &&
( support.boxSizingReliable() || val === elem.style[ dimension ] );
// Fall back to offsetWidth/offsetHeight when value is "auto" // Fall back to offsetWidth/offsetHeight when value is "auto"
// This happens for inline elements with no explicit setting (gh-3571) // This happens for inline elements with no explicit setting (gh-3571)
// Support: Android <=4.1 - 4.3 only // Support: Android <=4.1 - 4.3 only
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
if ( val === "auto" || // Support: IE 9-11 only
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { // Also use offsetWidth/offsetHeight for when box sizing is unreliable
// We use getClientRects() to check for hidden/disconnected.
// In those cases, the computed value can be trusted to be border-box
if ( ( !support.boxSizingReliable() && isBorderBox ||
val === "auto" ||
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
elem.getClientRects().length ) {
val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
// offsetWidth/offsetHeight provide border-box values // Where available, offsetWidth/offsetHeight approximate border box dimensions.
valueIsBorderBox = true; // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
// retrieved value as a content box dimension.
valueIsBorderBox = offsetProp in elem;
if ( valueIsBorderBox ) {
val = elem[ offsetProp ];
}
} }
// Normalize "" and auto // Normalize "" and auto
@@ -6425,6 +6626,13 @@ jQuery.extend( {
"flexGrow": true, "flexGrow": true,
"flexShrink": true, "flexShrink": true,
"fontWeight": true, "fontWeight": true,
"gridArea": true,
"gridColumn": true,
"gridColumnEnd": true,
"gridColumnStart": true,
"gridRow": true,
"gridRowEnd": true,
"gridRowStart": true,
"lineHeight": true, "lineHeight": true,
"opacity": true, "opacity": true,
"order": true, "order": true,
@@ -6480,7 +6688,9 @@ jQuery.extend( {
} }
// If a number was passed in, add the unit (except for certain CSS properties) // If a number was passed in, add the unit (except for certain CSS properties)
if ( type === "number" ) { // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
// "px" to a few hardcoded values.
if ( type === "number" && !isCustomProp ) {
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
} }
@@ -6580,18 +6790,29 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) {
set: function( elem, value, extra ) { set: function( elem, value, extra ) {
var matches, var matches,
styles = getStyles( elem ), styles = getStyles( elem ),
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
subtract = extra && boxModelAdjustment( // Only read styles.position if the test has a chance to fail
elem, // to avoid forcing a reflow.
dimension, scrollboxSizeBuggy = !support.scrollboxSize() &&
extra, styles.position === "absolute",
isBorderBox,
styles // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
); boxSizingNeeded = scrollboxSizeBuggy || extra,
isBorderBox = boxSizingNeeded &&
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
subtract = extra ?
boxModelAdjustment(
elem,
dimension,
extra,
isBorderBox,
styles
) :
0;
// Account for unreliable border-box dimensions by comparing offset* to computed and // Account for unreliable border-box dimensions by comparing offset* to computed and
// faking a content-box to get border and padding (gh-3699) // faking a content-box to get border and padding (gh-3699)
if ( isBorderBox && support.scrollboxSize() === styles.position ) { if ( isBorderBox && scrollboxSizeBuggy ) {
subtract -= Math.ceil( subtract -= Math.ceil(
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
parseFloat( styles[ dimension ] ) - parseFloat( styles[ dimension ] ) -
@@ -6759,9 +6980,9 @@ Tween.propHooks = {
// Use .style if available and use plain properties where available. // Use .style if available and use plain properties where available.
if ( jQuery.fx.step[ tween.prop ] ) { if ( jQuery.fx.step[ tween.prop ] ) {
jQuery.fx.step[ tween.prop ]( tween ); jQuery.fx.step[ tween.prop ]( tween );
} else if ( tween.elem.nodeType === 1 && } else if ( tween.elem.nodeType === 1 && (
( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ||
jQuery.cssHooks[ tween.prop ] ) ) { tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
} else { } else {
tween.elem[ tween.prop ] = tween.now; tween.elem[ tween.prop ] = tween.now;
@@ -8468,6 +8689,10 @@ jQuery.param = function( a, traditional ) {
encodeURIComponent( value == null ? "" : value ); encodeURIComponent( value == null ? "" : value );
}; };
if ( a == null ) {
return "";
}
// If an array was passed in, assume that it is an array of form elements. // If an array was passed in, assume that it is an array of form elements.
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
@@ -8970,12 +9195,14 @@ jQuery.extend( {
if ( !responseHeaders ) { if ( !responseHeaders ) {
responseHeaders = {}; responseHeaders = {};
while ( ( match = rheaders.exec( responseHeadersString ) ) ) { while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
.concat( match[ 2 ] );
} }
} }
match = responseHeaders[ key.toLowerCase() ]; match = responseHeaders[ key.toLowerCase() + " " ];
} }
return match == null ? null : match; return match == null ? null : match.join( ", " );
}, },
// Raw string // Raw string
@@ -9364,7 +9591,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
} ); } );
jQuery._evalUrl = function( url ) { jQuery._evalUrl = function( url, options ) {
return jQuery.ajax( { return jQuery.ajax( {
url: url, url: url,
@@ -9374,7 +9601,16 @@ jQuery._evalUrl = function( url ) {
cache: true, cache: true,
async: false, async: false,
global: false, global: false,
"throws": true
// Only evaluate the response if it is successful (gh-4126)
// dataFilter is not invoked for failure responses, so using it instead
// of the default converter is kludgy but it works.
converters: {
"text script": function() {}
},
dataFilter: function( response ) {
jQuery.globalEval( response, options );
}
} ); } );
}; };
@@ -9657,24 +9893,21 @@ jQuery.ajaxPrefilter( "script", function( s ) {
// Bind script tag hack transport // Bind script tag hack transport
jQuery.ajaxTransport( "script", function( s ) { jQuery.ajaxTransport( "script", function( s ) {
// This transport only deals with cross domain requests // This transport only deals with cross domain or forced-by-attrs requests
if ( s.crossDomain ) { if ( s.crossDomain || s.scriptAttrs ) {
var script, callback; var script, callback;
return { return {
send: function( _, complete ) { send: function( _, complete ) {
script = jQuery( "<script>" ).prop( { script = jQuery( "<script>" )
charset: s.scriptCharset, .attr( s.scriptAttrs || {} )
src: s.url .prop( { charset: s.scriptCharset, src: s.url } )
} ).on( .on( "load error", callback = function( evt ) {
"load error",
callback = function( evt ) {
script.remove(); script.remove();
callback = null; callback = null;
if ( evt ) { if ( evt ) {
complete( evt.type === "error" ? 404 : 200, evt.type ); complete( evt.type === "error" ? 404 : 200, evt.type );
} }
} } );
);
// Use native DOM manipulation to avoid our domManip AJAX trickery // Use native DOM manipulation to avoid our domManip AJAX trickery
document.head.appendChild( script[ 0 ] ); document.head.appendChild( script[ 0 ] );

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -0,0 +1,3 @@
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Verwyders asseblief "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Voer asseblief "+t+" of meer karakters";return n},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var t="Kies asseblief net "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum;return"الرجاء حذف "+t+" عناصر"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"الرجاء إضافة "+t+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){return"تستطيع إختيار "+e.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),{define:e.define,require:e.require}})();

View File

@@ -0,0 +1,3 @@
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।";return t!=1&&(n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=t+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।";return n},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(e){var t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return e.maximum!=1&&(t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),t},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),{define:e.define,require:e.require}})();

View File

@@ -0,0 +1,3 @@
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bs",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadejte o jeden znak méně.":n<=4?"Prosím, zadejte o "+e(n,!0)+" znaky méně.":"Prosím, zadejte o "+n+" znaků méně."},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadejte ještě jeden znak.":n<=4?"Prosím, zadejte ještě další "+e(n,!0)+" znaky.":"Prosím, zadejte ještě dalších "+n+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku.":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky.":"Můžete zvolit maximálně "+n+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Gegenstände"}}}),{define:e.define,require:e.require}})();

View File

@@ -0,0 +1,3 @@
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/dsb",[],function(){var e=["znamuško","znamušce","znamuška","znamuškow"],t=["zapisk","zapiska","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Pšosym lašuj "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Pšosym zapódaj nanejmjenjej "+r+" "+n(r,e)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(e){return"Móžoš jano "+e.maximum+" "+n(e.maximum,t)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})();

View File

@@ -1,3 +1,3 @@
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ /*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),{define:e.define,require:e.require}})();

Some files were not shown because too many files have changed in this diff Show More