Updated Documentation and Readme

This commit is contained in:
2025-08-09 19:55:45 +00:00
parent 4d98ffa4cb
commit 337168e84e
109 changed files with 15102 additions and 124 deletions

38
docker/Dockerfile vendored
View File

@@ -1,38 +0,0 @@
# This file is used to build the Dockerhub image. To host pyShelf yourself for
# production, please use the official pyShelf image on
# https://hub.docker.com/r/pyshelf/pyshelf
# Use the following commands to build and push the docker image to Dockerhub:
#
# docker build -t pyshelf/pyshelf -f ./docker/Dockerfile .
# docker login
# docker push pyshelf/pyshelf
FROM ubuntu:latest
EXPOSE 8080
EXPOSE 1337
RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget \
libbz2-dev curl -y
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
RUN export NVM_DIR="$HOME/.nvm" ; \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" ; nvm install 14 npm
WORKDIR /tmp
RUN wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
RUN tar -xf Python-3.12.0.tgz
WORKDIR /tmp/Python-3.12.0/
RUN ./configure --enable-optimizations
RUN make -j 4
RUN make install
COPY . /pyshelf
COPY ./docker/config.json /pyshelf/config.json
COPY ./docker/requirements.txt /pyshelf/requirements.txt
WORKDIR /pyshelf/
RUN python3 -m pip install --no-cache-dir -r requirements.txt
ENTRYPOINT hatch run ./pyShelf.py

4
docker/README.md vendored
View File

@@ -1,4 +0,0 @@
Use `docker build -t pyshelf/pyshelf -f ./docker/Dockerfile .` in the project root to build the pyshelf image.
Make sure the following files are in sync:
* config.json

19
docker/config.json vendored
View File

@@ -1,19 +0,0 @@
{
"TITLE": "pyShelf E-Book Server",
"VERSION": "0.8.0",
"BOOKPATH": "/books",
"DB_HOST": "127.0.0.1",
"DB_PORT": "5433",
"DB_ENGINE": "sqlite",
"DATABASE": "pyshelf",
"USER": "pyshelf",
"PASSWORD": "pyshelf",
"BOOKSHELF": "data/shelf.json",
"ALLOWED_HOSTS": [
"localhost",
"127.0.0.1",
"[::1]",
"0.0.0.0"
],
"BUILD_MODE": "production"
}

View File

@@ -1,36 +0,0 @@
version: "3.7"
# This file is used to test the Dockerhub image. To host pyShelf yourself for
# production, please use the official pyShelf image on
# https://hub.docker.com/r/pyshelf/pyshelf
# For development, use the following command in the root folder:
#
# docker-compose -f ./docker/development.docker-compose.yml up --build
services:
# db:
# image: "postgres"
# environment:
# - "POSTGRES_PASSWORD=pyshelf"
# - "POSTGRES_USER=pyshelf"
# - "POSTGRES_DB=pyshelf"
# volumes:
# - "db_data:/var/lib/postgresql/data/"
# ports:
# - "5433:5432"
pyshelf:
build:
context: ..
dockerfile: ./docker/Dockerfile
ports:
- "8080:8000"
- "1337:1337"
volumes:
- "${LOCAL_BOOK_DIR}:/books"
# depends_on:
# - db
# volumes:
# db_data:

View File

@@ -1,26 +0,0 @@
version: "3.7"
services:
# db:
# image: "postgres"
# restart: always
# environment:
# - "POSTGRES_PASSWORD=pyshelf"
# - "POSTGRES_USER=pyshelf"
# - "POSTGRES_DB=pyshelf"
# volumes:
# - "db_data:/var/lib/postgresql/data/"
# ports:
# - "5433:5432"
pyshelf:
image: "pyshelf/pyshelf"
restart: always
ports:
- "8000:8000"
- "1337:1337"
volumes:
- "${LOCAL_BOOK_DIR}:/books"
# depends_on:
# - db
#volumes:
# db_data:

View File

@@ -1 +0,0 @@
hatch

View File

@@ -0,0 +1,104 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Class 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">Class List</div></div>
</div><!--header-->
<div class="contents">
<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:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span><span onclick="javascript:dynsection.toggleLevel(4);">4</span><span onclick="javascript:dynsection.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="dynsection.toggleFolder('0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><a class="el" href="d7/df9/namespaceDataHooks.html" target="_self">DataHooks</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><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="d9/d71/classDataHooks_1_1BookInterface.html" target="_self">BookInterface</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><a class="el" href="db/dd5/namespaceFastAPIServer.html" target="_self">FastAPIServer</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="odd"><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="dd/d22/classFastAPIServer_1_1FastAPIServer.html" target="_self">FastAPIServer</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><a class="el" href="df/d4c/namespaceobjects.html" target="_self">objects</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" class="odd"><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="d8/def/classobjects_1_1JSInterface.html" target="_self">JSInterface</a></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>src</b></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_3_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>backend</b></td><td class="desc"></td></tr>
<tr id="row_3_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_3_0_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>lib</b></td><td class="desc"></td></tr>
<tr id="row_3_0_0_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>api_hooks</b></td><td class="desc"></td></tr>
<tr id="row_3_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_3_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_1_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_1_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><a class="el" href="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html" target="_self">config</a></td><td class="desc"></td></tr>
<tr id="row_3_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_3_0_0_2_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_2_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_2_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>library</b></td><td class="desc"></td></tr>
<tr id="row_3_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="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_3_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_3_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_3_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>models</b></td><td class="desc"></td></tr>
<tr id="row_3_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="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" target="_self">Base</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_3_1_" class="odd"><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="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html" target="_self">Book</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_3_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="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html" target="_self">BookCollection</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_3_3_" class="odd"><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/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html" target="_self">Collection</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_3_4_" 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="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html" target="_self">User</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_4_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_4_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_4_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>overide</b></td><td class="desc"></td></tr>
<tr id="row_3_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="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html" target="_self">ACatalogue</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_5_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_5_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>pyShelf</b></td><td class="desc"></td></tr>
<tr id="row_3_0_0_5_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="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_3_0_0_5_1_" class="odd"><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/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html" target="_self">Server</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_0_6_" class="arrow" onclick="dynsection.toggleFolder('3_0_0_6_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><a class="el" href="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html" target="_self">storage</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_6_0_" class="odd"><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_3_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_3_0_1_" class="arrow" onclick="dynsection.toggleFolder('3_0_1_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>tests</b></td><td class="desc"></td></tr>
<tr id="row_3_0_1_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_1_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_1_0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>config_test</b></td><td class="desc"></td></tr>
<tr id="row_3_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_3_0_1_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_3_0_1_1_" class="arrow" onclick="dynsection.toggleFolder('3_0_1_1_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>library_test</b></td><td class="desc"></td></tr>
<tr id="row_3_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_3_0_1_1_1_" class="odd"><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_3_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>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Class Index</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">Class Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_J">J</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_A" name="letter_A">A</a></dt>
<dd><a class="el" href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">ACatalogue</a> (src.backend.lib.overide)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
<dd><a class="el" href="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html">Base</a> (src.backend.lib.models)</dd><dd><a class="el" href="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">Book</a> (src.backend.lib.models)</dd><dd><a class="el" href="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">BookCollection</a> (src.backend.lib.models)</dd><dd><a class="el" href="d9/d71/classDataHooks_1_1BookInterface.html">BookInterface</a> (<a class="el" href="d7/df9/namespaceDataHooks.html">DataHooks</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
<dd><a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a> (src.backend.lib.library)</dd><dd><a class="el" href="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">Collection</a> (src.backend.lib.models)</dd><dd><a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a> (<a class="el" href="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html">src.backend.lib.config</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_D" name="letter_D">D</a></dt>
<dd><a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a> (src.backend.lib.api_hooks)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
<dd><a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer</a> (<a class="el" href="db/dd5/namespaceFastAPIServer.html">FastAPIServer</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_I" name="letter_I">I</a></dt>
<dd><a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a> (src.backend.lib.pyShelf)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_J" name="letter_J">J</a></dt>
<dd><a class="el" href="d8/def/classobjects_1_1JSInterface.html">JSInterface</a> (<a class="el" href="df/d4c/namespaceobjects.html">objects</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">Server</a> (src.backend.lib.pyShelf)</dd><dd><a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a> (<a class="el" href="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html">src.backend.lib.storage</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
<dd><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)</dd><dd><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)</dd><dd><a class="el" href="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a> (src.backend.tests.library_test)</dd><dd><a class="el" href="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a> (src.backend.tests.config_test)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
<dd><a class="el" href="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">User</a> (src.backend.lib.models)</dd></dl>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">Collection</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.models.Collection Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book_collections</b> (defined in <a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a>)</td><td class="entry"><a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>id</b> (defined in <a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a>)</td><td class="entry"><a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a>)</td><td class="entry"><a class="el" href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">src.backend.lib.models.Collection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.config Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html">config</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.config Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:Config" id="r_Config"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Pyshelf's Configuration Object.</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 class="odd"><td class="entry"><a class="el" href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c">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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,76 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../df/d4c/namespaceobjects.html">objects</a></li><li class="navelem"><a href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">objects.JSInterface Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a">__init__</a>(self, Config config)</td><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a>)</td><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b">install</a>(self)</td><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>package_json</b> (defined in <a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a>)</td><td class="entry"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">objects.JSInterface</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,721 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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="#pro-attribs">Protected 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 class="dynheader">
Inheritance diagram for src.backend.tests.library_test.Test_Config:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png" usemap="#src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_5FConfig_map" alt=""/>
<map id="src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_5FConfig_map" name="src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a98aa05920de87c6dacede996efec5c32" id="r_a98aa05920de87c6dacede996efec5c32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a98aa05920de87c6dacede996efec5c32">__init__</a> (self)</td></tr>
<tr class="memitem:ad53ffb345a68555ab142ab09dc5e41dd" id="r_ad53ffb345a68555ab142ab09dc5e41dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad53ffb345a68555ab142ab09dc5e41dd">open_file</a> (self, root=&quot;config.json&quot;)</td></tr>
<tr class="memitem:aa381832049e2d0c7d25ed28dfc11f8e3" id="r_aa381832049e2d0c7d25ed28dfc11f8e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#aa381832049e2d0c7d25ed28dfc11f8e3">init_config</a> (self)</td></tr>
<tr class="memitem:a75d80e22d017818c0fc569220a7e45ff" id="r_a75d80e22d017818c0fc569220a7e45ff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff">get_logger</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a905c0db0851be868400284fa30e79e96" id="r_a905c0db0851be868400284fa30e79e96"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a905c0db0851be868400284fa30e79e96">root</a> = root</td></tr>
<tr class="memitem:a6bb47776af2fce4bd65c2c2b4eac5586" id="r_a6bb47776af2fce4bd65c2c2b4eac5586"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a6bb47776af2fce4bd65c2c2b4eac5586">config_structure</a></td></tr>
<tr class="memitem:a7dad8f79402b8cef8064937a820fb7a3" id="r_a7dad8f79402b8cef8064937a820fb7a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a7dad8f79402b8cef8064937a820fb7a3">logger</a> = self.get_logger()</td></tr>
<tr class="memitem:a73eef160e0fbb7d27b35af88f9a08e3b" id="r_a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a73eef160e0fbb7d27b35af88f9a08e3b">book_path</a> = env.get(&quot;BOOKPATH&quot;, self._data[&quot;BOOKPATH&quot;])</td></tr>
<tr class="memitem:a018e12d98de44bc319c4bdfbfc113cb8" id="r_a018e12d98de44bc319c4bdfbfc113cb8"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a018e12d98de44bc319c4bdfbfc113cb8">TITLE</a> = env.get(&quot;TITLE&quot;, self._data[&quot;TITLE&quot;])</td></tr>
<tr class="memitem:a60406233a916d5bc4c26f178081b811d" id="r_a60406233a916d5bc4c26f178081b811d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a60406233a916d5bc4c26f178081b811d">VERSION</a> = env.get(&quot;VERSION&quot;, self._data[&quot;VERSION&quot;])</td></tr>
<tr class="memitem:a32df23365f00a8014d8bafd797da06d0" id="r_a32df23365f00a8014d8bafd797da06d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a32df23365f00a8014d8bafd797da06d0">book_shelf</a> = env.get(&quot;BOOKSHELF&quot;, self._data[&quot;BOOKSHELF&quot;])</td></tr>
<tr class="memitem:ae24163ce536b9b86d2020cd00e04d096" id="r_ae24163ce536b9b86d2020cd00e04d096"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ae24163ce536b9b86d2020cd00e04d096">catalogue_db</a> = env.get(&quot;DATABASE&quot;, self._data[&quot;DATABASE&quot;])</td></tr>
<tr class="memitem:a672d2e335f4f85f64b0416f5886b282f" id="r_a672d2e335f4f85f64b0416f5886b282f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a672d2e335f4f85f64b0416f5886b282f">user</a> = self._data[&quot;USER&quot;]</td></tr>
<tr class="memitem:a301b1324af2ae076e8782fcea79cd7f9" id="r_a301b1324af2ae076e8782fcea79cd7f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a301b1324af2ae076e8782fcea79cd7f9">password</a> = self._data[&quot;PASSWORD&quot;]</td></tr>
<tr class="memitem:aa119c468373043e4c74783c224b5a79e" id="r_aa119c468373043e4c74783c224b5a79e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#aa119c468373043e4c74783c224b5a79e">db_host</a> = env.get(&quot;DB_HOST&quot;, self._data[&quot;DB_HOST&quot;])</td></tr>
<tr class="memitem:aa859d999451eba07b8d0885665925a7e" id="r_aa859d999451eba07b8d0885665925a7e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#aa859d999451eba07b8d0885665925a7e">db_port</a> = env.get(&quot;DB_PORT&quot;, self._data[&quot;DB_PORT&quot;])</td></tr>
<tr class="memitem:a036328bdcfae6df7b8876223938ecf8b" id="r_a036328bdcfae6df7b8876223938ecf8b"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a036328bdcfae6df7b8876223938ecf8b">file_array</a> = [self.book_shelf]</td></tr>
<tr class="memitem:a5d56701f2b82080734daf59680e3c430" id="r_a5d56701f2b82080734daf59680e3c430"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a5d56701f2b82080734daf59680e3c430">auto_scan</a> = True</td></tr>
<tr class="memitem:abd1caead108725ffe2edd4a1b7b8ab86" id="r_abd1caead108725ffe2edd4a1b7b8ab86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#abd1caead108725ffe2edd4a1b7b8ab86">allowed_hosts</a></td></tr>
<tr class="memitem:a2d85b28b78de56b9c0233f6f4ab3062c" id="r_a2d85b28b78de56b9c0233f6f4ab3062c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a2d85b28b78de56b9c0233f6f4ab3062c">db_engine</a> = env.get(&quot;DB_ENGINE&quot;, self._data[&quot;DB_ENGINE&quot;])</td></tr>
<tr class="memitem:a088b23bf4d560c3e29bc63ac2d97bb22" id="r_a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a088b23bf4d560c3e29bc63ac2d97bb22">db_user</a> = env.get(&quot;USER&quot;, self._data[&quot;USER&quot;])</td></tr>
<tr class="memitem:a15420665376e4aab800b46e9785a5a95" id="r_a15420665376e4aab800b46e9785a5a95"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a15420665376e4aab800b46e9785a5a95">db_pass</a> = env.get(&quot;PASSWORD&quot;, self._data[&quot;PASSWORD&quot;])</td></tr>
<tr class="memitem:a38798edf816107e93a2115fb6622926d" id="r_a38798edf816107e93a2115fb6622926d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a38798edf816107e93a2115fb6622926d">build_mode</a> = env.get(&quot;BUILD_MODE&quot;, self._data[&quot;BUILD_MODE&quot;])</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pro-attribs" class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:accfbfe0072f8f2c4fe643de4173e1a17" id="r_accfbfe0072f8f2c4fe643de4173e1a17"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#accfbfe0072f8f2c4fe643de4173e1a17">_fp</a> = &quot;config.json&quot;</td></tr>
<tr class="memitem:ab83f34bb88612425b1fb9bd501f802e9" id="r_ab83f34bb88612425b1fb9bd501f802e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ab83f34bb88612425b1fb9bd501f802e9">_cp</a> = Path.joinpath(root, self._fp)</td></tr>
<tr class="memitem:a1a5427e58ebb81e58b245ac97960d670" id="r_a1a5427e58ebb81e58b245ac97960d670"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a1a5427e58ebb81e58b245ac97960d670">_data</a> = self.init_config()</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"></div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a98aa05920de87c6dacede996efec5c32" name="a98aa05920de87c6dacede996efec5c32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98aa05920de87c6dacede996efec5c32">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.Test_Config.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a75d80e22d017818c0fc569220a7e45ff" name="a75d80e22d017818c0fc569220a7e45ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75d80e22d017818c0fc569220a7e45ff">&#9670;&#160;</a></span>get_logger()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.get_logger </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Instantiate logging system.</pre>
</div>
</div>
<a id="aa381832049e2d0c7d25ed28dfc11f8e3" name="aa381832049e2d0c7d25ed28dfc11f8e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa381832049e2d0c7d25ed28dfc11f8e3">&#9670;&#160;</a></span>init_config()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.init_config </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad53ffb345a68555ab142ab09dc5e41dd" name="ad53ffb345a68555ab142ab09dc5e41dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad53ffb345a68555ab142ab09dc5e41dd">&#9670;&#160;</a></span>open_file()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.Test_Config.open_file </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>root</em></span><span class="paramdefsep"> = </span><span class="paramdefval">&quot;config.json&quot;</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Open 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#a84421d323478317c86c1487669695aa4">src.backend.lib.config.Config</a>.</p>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="ab83f34bb88612425b1fb9bd501f802e9" name="ab83f34bb88612425b1fb9bd501f802e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab83f34bb88612425b1fb9bd501f802e9">&#9670;&#160;</a></span>_cp</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._cp = Path.joinpath(root, self._fp)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1a5427e58ebb81e58b245ac97960d670" name="a1a5427e58ebb81e58b245ac97960d670"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a5427e58ebb81e58b245ac97960d670">&#9670;&#160;</a></span>_data</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._data = self.init_config()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="accfbfe0072f8f2c4fe643de4173e1a17" name="accfbfe0072f8f2c4fe643de4173e1a17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accfbfe0072f8f2c4fe643de4173e1a17">&#9670;&#160;</a></span>_fp</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._fp = &quot;config.json&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abd1caead108725ffe2edd4a1b7b8ab86" name="abd1caead108725ffe2edd4a1b7b8ab86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1caead108725ffe2edd4a1b7b8ab86">&#9670;&#160;</a></span>allowed_hosts</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.allowed_hosts</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= env.get(<span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>,</div>
<div class="line"> self._data[<span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>])</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5d56701f2b82080734daf59680e3c430" name="a5d56701f2b82080734daf59680e3c430"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d56701f2b82080734daf59680e3c430">&#9670;&#160;</a></span>auto_scan</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool src.backend.lib.config.Config.auto_scan = True</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a73eef160e0fbb7d27b35af88f9a08e3b" name="a73eef160e0fbb7d27b35af88f9a08e3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73eef160e0fbb7d27b35af88f9a08e3b">&#9670;&#160;</a></span>book_path</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.book_path = env.get(&quot;BOOKPATH&quot;, self._data[&quot;BOOKPATH&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a32df23365f00a8014d8bafd797da06d0" name="a32df23365f00a8014d8bafd797da06d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32df23365f00a8014d8bafd797da06d0">&#9670;&#160;</a></span>book_shelf</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.book_shelf = env.get(&quot;BOOKSHELF&quot;, self._data[&quot;BOOKSHELF&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a38798edf816107e93a2115fb6622926d" name="a38798edf816107e93a2115fb6622926d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38798edf816107e93a2115fb6622926d">&#9670;&#160;</a></span>build_mode</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.build_mode = env.get(&quot;BUILD_MODE&quot;, self._data[&quot;BUILD_MODE&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae24163ce536b9b86d2020cd00e04d096" name="ae24163ce536b9b86d2020cd00e04d096"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae24163ce536b9b86d2020cd00e04d096">&#9670;&#160;</a></span>catalogue_db</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.catalogue_db = env.get(&quot;DATABASE&quot;, self._data[&quot;DATABASE&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6bb47776af2fce4bd65c2c2b4eac5586" name="a6bb47776af2fce4bd65c2c2b4eac5586"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bb47776af2fce4bd65c2c2b4eac5586">&#9670;&#160;</a></span>config_structure</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.config_structure</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&quot;TITLE&quot;</span>: <span class="stringliteral">&quot;pyShelf E-Book Server&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;VERSION&quot;</span>: <span class="stringliteral">&quot;0.7.0&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;BOOKPATH&quot;</span>: <span class="stringliteral">&quot;/mnt/books&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_HOST&quot;</span>: <span class="stringliteral">&quot;localhost&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_PORT&quot;</span>: <span class="stringliteral">&quot;5432&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_ENGINE&quot;</span>: <span class="stringliteral">&quot;sqlite&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DATABASE&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;USER&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;PASSWORD&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;BOOKSHELF&quot;</span>: <span class="stringliteral">&quot;data/shelf.json&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>: [</div>
<div class="line"> <span class="stringliteral">&quot;localhost&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;127.0.0.1&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;[::1]&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;0.0.0.0&quot;</span></div>
<div class="line"> ],</div>
<div class="line"> <span class="stringliteral">&quot;BUILD_MODE&quot;</span>: <span class="stringliteral">&quot;development&quot;</span></div>
<div class="line"> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a2d85b28b78de56b9c0233f6f4ab3062c" name="a2d85b28b78de56b9c0233f6f4ab3062c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d85b28b78de56b9c0233f6f4ab3062c">&#9670;&#160;</a></span>db_engine</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_engine = env.get(&quot;DB_ENGINE&quot;, self._data[&quot;DB_ENGINE&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa119c468373043e4c74783c224b5a79e" name="aa119c468373043e4c74783c224b5a79e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa119c468373043e4c74783c224b5a79e">&#9670;&#160;</a></span>db_host</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_host = env.get(&quot;DB_HOST&quot;, self._data[&quot;DB_HOST&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a15420665376e4aab800b46e9785a5a95" name="a15420665376e4aab800b46e9785a5a95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15420665376e4aab800b46e9785a5a95">&#9670;&#160;</a></span>db_pass</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_pass = env.get(&quot;PASSWORD&quot;, self._data[&quot;PASSWORD&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa859d999451eba07b8d0885665925a7e" name="aa859d999451eba07b8d0885665925a7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa859d999451eba07b8d0885665925a7e">&#9670;&#160;</a></span>db_port</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_port = env.get(&quot;DB_PORT&quot;, self._data[&quot;DB_PORT&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a088b23bf4d560c3e29bc63ac2d97bb22" name="a088b23bf4d560c3e29bc63ac2d97bb22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a088b23bf4d560c3e29bc63ac2d97bb22">&#9670;&#160;</a></span>db_user</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_user = env.get(&quot;USER&quot;, self._data[&quot;USER&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a036328bdcfae6df7b8876223938ecf8b" name="a036328bdcfae6df7b8876223938ecf8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a036328bdcfae6df7b8876223938ecf8b">&#9670;&#160;</a></span>file_array</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list src.backend.lib.config.Config.file_array = [self.book_shelf]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7dad8f79402b8cef8064937a820fb7a3" name="a7dad8f79402b8cef8064937a820fb7a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dad8f79402b8cef8064937a820fb7a3">&#9670;&#160;</a></span>logger</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.logger = self.get_logger()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a301b1324af2ae076e8782fcea79cd7f9" name="a301b1324af2ae076e8782fcea79cd7f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a301b1324af2ae076e8782fcea79cd7f9">&#9670;&#160;</a></span>password</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.password = self._data[&quot;PASSWORD&quot;]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a905c0db0851be868400284fa30e79e96" name="a905c0db0851be868400284fa30e79e96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a905c0db0851be868400284fa30e79e96">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.root = root</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a018e12d98de44bc319c4bdfbfc113cb8" name="a018e12d98de44bc319c4bdfbfc113cb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a018e12d98de44bc319c4bdfbfc113cb8">&#9670;&#160;</a></span>TITLE</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">str src.backend.lib.config.Config.TITLE = env.get(&quot;TITLE&quot;, self._data[&quot;TITLE&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a672d2e335f4f85f64b0416f5886b282f" name="a672d2e335f4f85f64b0416f5886b282f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a672d2e335f4f85f64b0416f5886b282f">&#9670;&#160;</a></span>user</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.user = self._data[&quot;USER&quot;]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a60406233a916d5bc4c26f178081b811d" name="a60406233a916d5bc4c26f178081b811d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60406233a916d5bc4c26f178081b811d">&#9670;&#160;</a></span>VERSION</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.VERSION = env.get(&quot;VERSION&quot;, self._data[&quot;VERSION&quot;])</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

View File

@@ -0,0 +1,98 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html">config</a></li><li class="navelem"><a href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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#ade4abb252e4529109e0f66ac85ae14b0">__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="odd"><td class="entry"><b>_cp</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"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_data</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"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>_fp</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"><span class="mlabel">protected</span></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" class="odd"><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" class="odd"><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>build_mode</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="odd"><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>config_structure</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="odd"><td class="entry"><b>db_engine</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" class="odd"><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" class="odd"><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 class="odd"><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff">get_logger</a>(self)</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>init_config</b>(self) (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="odd"><td class="entry"><b>logger</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="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4">open_file</a>(self)</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="odd"><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" class="odd"><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" class="odd"><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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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" class="odd"><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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../db/dd5/namespaceFastAPIServer.html">FastAPIServer</a></li><li class="navelem"><a href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">FastAPIServer.FastAPIServer Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267">__init__</a>(self, config)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>book</b>(Request request, int book_id) (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book</b>(Request request, int book_id) (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>books</b>(Request request, int skip=0, int limit=10, collection=None) (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb">collection</a>(Request request, str collection, int skip=0, int limit=30)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>collections</b>(Request request) (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26">compile_static_files</a>(self)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>config</b> (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fe_config</b> (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>fe_server</b> (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>index</b>(Request request, int skip=0, int limit=30) (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>JSInterface</b> (defined in <a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a>)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b">run</a>(self)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce">search_books_api</a>(Request request, str search)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8">use_route_names_as_operation_ids</a>(self, FastAPI app)</td><td class="entry"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer.FastAPIServer</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../d7/df9/namespaceDataHooks.html">DataHooks</a></li><li class="navelem"><a href="../../d9/d71/classDataHooks_1_1BookInterface.html">BookInterface</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">DataHooks.BookInterface Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d9/d71/classDataHooks_1_1BookInterface.html">DataHooks.BookInterface</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="../../d9/d71/classDataHooks_1_1BookInterface.html">DataHooks.BookInterface</a>)</td><td class="entry"><a class="el" href="../../d9/d71/classDataHooks_1_1BookInterface.html">DataHooks.BookInterface</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>db</b> (defined in <a class="el" href="../../d9/d71/classDataHooks_1_1BookInterface.html">DataHooks.BookInterface</a>)</td><td class="entry"><a class="el" href="../../d9/d71/classDataHooks_1_1BookInterface.html">DataHooks.BookInterface</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,205 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.models.BookCollection 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">BookCollection</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.models.BookCollection Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.models.BookCollection:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png" usemap="#src_2Ebackend_2Elib_2Emodels_2EBookCollection_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Emodels_2EBookCollection_map" name="src_2Ebackend_2Elib_2Emodels_2EBookCollection_map">
<area href="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" alt="src.backend.lib.models.Base" shape="rect" coords="0,56,230,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a21c4b9cbe1437e348e88c677fdc908c4" id="r_a21c4b9cbe1437e348e88c677fdc908c4"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a21c4b9cbe1437e348e88c677fdc908c4">id</a> = mapped_column(primary_key=True)</td></tr>
<tr class="memitem:a98f6804058bd80946244352861afc256" id="r_a98f6804058bd80946244352861afc256"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a98f6804058bd80946244352861afc256">book_id</a> = mapped_column(ForeignKey(&quot;Book.id&quot;))</td></tr>
<tr class="memitem:a8cd3a96f878e8af0e6b456867c7a63b0" id="r_a8cd3a96f878e8af0e6b456867c7a63b0"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8cd3a96f878e8af0e6b456867c7a63b0">collection_id</a> = mapped_column(ForeignKey(&quot;Collection.id&quot;))</td></tr>
<tr class="memitem:a1c10ee38739009312ef1445ef21435c9" id="r_a1c10ee38739009312ef1445ef21435c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1c10ee38739009312ef1445ef21435c9">book</a> = relationship(&quot;Book&quot;, back_populates=&quot;book_collections&quot;)</td></tr>
<tr class="memitem:a945d4ee842b1618c8b80886bb0c0d2fd" id="r_a945d4ee842b1618c8b80886bb0c0d2fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a945d4ee842b1618c8b80886bb0c0d2fd">collection</a> = relationship(&quot;Collection&quot;, back_populates=&quot;book_collections&quot;)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Association table linking Books and Collections.</pre> </div><a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a1c10ee38739009312ef1445ef21435c9" name="a1c10ee38739009312ef1445ef21435c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c10ee38739009312ef1445ef21435c9">&#9670;&#160;</a></span>book</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.models.BookCollection.book = relationship(&quot;Book&quot;, back_populates=&quot;book_collections&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a98f6804058bd80946244352861afc256" name="a98f6804058bd80946244352861afc256"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98f6804058bd80946244352861afc256">&#9670;&#160;</a></span>book_id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.BookCollection.book_id = mapped_column(ForeignKey(&quot;Book.id&quot;))</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a945d4ee842b1618c8b80886bb0c0d2fd" name="a945d4ee842b1618c8b80886bb0c0d2fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a945d4ee842b1618c8b80886bb0c0d2fd">&#9670;&#160;</a></span>collection</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.models.BookCollection.collection = relationship(&quot;Collection&quot;, back_populates=&quot;book_collections&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8cd3a96f878e8af0e6b456867c7a63b0" name="a8cd3a96f878e8af0e6b456867c7a63b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cd3a96f878e8af0e6b456867c7a63b0">&#9670;&#160;</a></span>collection_id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.BookCollection.collection_id = mapped_column(ForeignKey(&quot;Collection.id&quot;))</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a21c4b9cbe1437e348e88c677fdc908c4" name="a21c4b9cbe1437e348e88c677fdc908c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21c4b9cbe1437e348e88c677fdc908c4">&#9670;&#160;</a></span>id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.BookCollection.id = mapped_column(primary_key=True)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,640 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 class="dynheader">
Inheritance diagram for src.backend.lib.library.Catalogue:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png" usemap="#src_2Ebackend_2Elib_2Elibrary_2ECatalogue_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Elibrary_2ECatalogue_map" name="src_2Ebackend_2Elib_2Elibrary_2ECatalogue_map">
<area href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html" alt="src.backend.lib.overide.ACatalogue" shape="rect" coords="0,56,269,80"/>
<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="279,56,548,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a94e5e2bb4a13f43e9f17cc7d155a629b" id="r_a94e5e2bb4a13f43e9f17cc7d155a629b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94e5e2bb4a13f43e9f17cc7d155a629b">__init__</a> (self, config)</td></tr>
<tr class="memitem:a8e1422c1f6b599d2de6e5b06a61448ca" id="r_a8e1422c1f6b599d2de6e5b06a61448ca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8e1422c1f6b599d2de6e5b06a61448ca">scan_folder</a> (self, _path=None)</td></tr>
<tr class="memitem:acdbfa5941ac442ba78e9b99ed024f1e1" id="r_acdbfa5941ac442ba78e9b99ed024f1e1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acdbfa5941ac442ba78e9b99ed024f1e1">filter_books</a> (self)</td></tr>
<tr class="memitem:a810b9e2aefcf334097739d33843357d8" id="r_a810b9e2aefcf334097739d33843357d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a810b9e2aefcf334097739d33843357d8">process_by_filetype</a> (self, book)</td></tr>
<tr class="memitem:aa29d30100b7e982f342c175b68557712" id="r_aa29d30100b7e982f342c175b68557712"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</a> (self, book)</td></tr>
<tr class="memitem:a4ef439e312f2e61078a0be893705bd14" id="r_a4ef439e312f2e61078a0be893705bd14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</a> (self, book)</td></tr>
<tr class="memitem:a4c3eabcee27a7ff001c5f2397d194c50" id="r_a4c3eabcee27a7ff001c5f2397d194c50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4c3eabcee27a7ff001c5f2397d194c50">extract_metadata_mobi</a> (self, book)</td></tr>
<tr class="memitem:abe2b5fdefbfa42c87466f58f4bc1677f" id="r_abe2b5fdefbfa42c87466f58f4bc1677f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abe2b5fdefbfa42c87466f58f4bc1677f">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a3d5c8a0511da4ea483144e5727e79410" id="r_a3d5c8a0511da4ea483144e5727e79410"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d5c8a0511da4ea483144e5727e79410">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a0c8a4afbea35f47630b9d826327de8ce" id="r_a0c8a4afbea35f47630b9d826327de8ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0c8a4afbea35f47630b9d826327de8ce">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a5de9590a9bf52af4747544e706ef32af" id="r_a5de9590a9bf52af4747544e706ef32af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5de9590a9bf52af4747544e706ef32af">compare_shelf_current</a> (self)</td></tr>
<tr class="memitem:ac535eff50b4577d1d7b7b7433fee0e34" id="r_ac535eff50b4577d1d7b7b7433fee0e34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac535eff50b4577d1d7b7b7433fee0e34">import_books</a> (self, list=None, **kwargs)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-methods" class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a9e91ca706de4d548d567d92cbc525f5e" id="r_a9e91ca706de4d548d567d92cbc525f5e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9e91ca706de4d548d567d92cbc525f5e">process_epub</a> (book)</td></tr>
<tr class="memitem:ad23addfc27076a3cdad719d549011ea5" id="r_ad23addfc27076a3cdad719d549011ea5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad23addfc27076a3cdad719d549011ea5">stripTags</a> (source)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a93d7bdaff2d95e85713d1506c9a2d250" id="r_a93d7bdaff2d95e85713d1506c9a2d250"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a93d7bdaff2d95e85713d1506c9a2d250">file_list</a> = []</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75" id="r_a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2026c090be4f55cfe941d16a01b4ea75">opf_regx</a> = re.compile(r&quot;\.opf&quot;)</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204" id="r_a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a576649115ba3717c475d60eae96f6204">cover_regx</a> = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8" id="r_a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a686b224643b060423a49a017d4a7abd8">html_regx</a> = re.compile(r&quot;\.html&quot;)</td></tr>
<tr class="memitem:a8fa7021f8b131c35c0a1d1179b003383" id="r_a8fa7021f8b131c35c0a1d1179b003383"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8fa7021f8b131c35c0a1d1179b003383">title_sanitization_regx</a> = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td></tr>
<tr class="memitem:ad8ad8ef5c7ea417050d4dd84046d3234" id="r_ad8ad8ef5c7ea417050d4dd84046d3234"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad8ad8ef5c7ea417050d4dd84046d3234">title_sanitization_lvl2_regx</a></td></tr>
<tr class="memitem:ab68843b8153b9e8ba51d0a4fa541568e" id="r_ab68843b8153b9e8ba51d0a4fa541568e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab68843b8153b9e8ba51d0a4fa541568e">title_sanitization_dirs_regx</a> = re.compile(r&quot;/&quot;)</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023" id="r_a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3e5edca4ab942e3f71958c90b5c45023">root_dir</a> = config.root</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce" id="r_a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a340d869b8f7c16007773de40a24005ce">book_folder</a> = config.book_path</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36" id="r_a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1129571b5c1a358e71d125cc47f9bf36">books</a> = None</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a" id="r_acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acd6cb62aae1221ee590734b70f76888a">db_pointer</a> = config.catalogue_db</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9" id="r_afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afb43be37337c74fc1bfe1415ded423f9">config</a> = config</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Decodes book metadata for storage
</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a94e5e2bb4a13f43e9f17cc7d155a629b" name="a94e5e2bb4a13f43e9f17cc7d155a629b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94e5e2bb4a13f43e9f17cc7d155a629b">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a5de9590a9bf52af4747544e706ef32af" name="a5de9590a9bf52af4747544e706ef32af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5de9590a9bf52af4747544e706ef32af">&#9670;&#160;</a></span>compare_shelf_current()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></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="abe2b5fdefbfa42c87466f58f4bc1677f" name="abe2b5fdefbfa42c87466f58f4bc1677f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe2b5fdefbfa42c87466f58f4bc1677f">&#9670;&#160;</a></span>extract_content()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</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="a3d5c8a0511da4ea483144e5727e79410" name="a3d5c8a0511da4ea483144e5727e79410"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d5c8a0511da4ea483144e5727e79410">&#9670;&#160;</a></span>extract_cover_html()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</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="a0c8a4afbea35f47630b9d826327de8ce" name="a0c8a4afbea35f47630b9d826327de8ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c8a4afbea35f47630b9d826327de8ce">&#9670;&#160;</a></span>extract_cover_image()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</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="aa29d30100b7e982f342c175b68557712" name="aa29d30100b7e982f342c175b68557712"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa29d30100b7e982f342c175b68557712">&#9670;&#160;</a></span>extract_metadata_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Extract metadata from epub file
:param book: Dictionary of epub file contents
:returns: Dictionary of book metadata
</pre>
</div>
</div>
<a id="a4c3eabcee27a7ff001c5f2397d194c50" name="a4c3eabcee27a7ff001c5f2397d194c50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c3eabcee27a7ff001c5f2397d194c50">&#9670;&#160;</a></span>extract_metadata_mobi()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_mobi </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ef439e312f2e61078a0be893705bd14" name="a4ef439e312f2e61078a0be893705bd14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ef439e312f2e61078a0be893705bd14">&#9670;&#160;</a></span>extract_metadata_pdf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_pdf </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata
:NOTES: Retrieval of data has been problematic, some pdf's providing
reliable titles that corespond with the actual, and others being
nonsense.
</pre>
</div>
</div>
<a id="acdbfa5941ac442ba78e9b99ed024f1e1" name="acdbfa5941ac442ba78e9b99ed024f1e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdbfa5941ac442ba78e9b99ed024f1e1">&#9670;&#160;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files.
: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#ae2b7fabba01cd5760936bf16ebec0451">src.backend.tests.library_test.Test_Catalogue</a>.</p>
</div>
</div>
<a id="ac535eff50b4577d1d7b7b7433fee0e34" name="ac535eff50b4577d1d7b7b7433fee0e34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac535eff50b4577d1d7b7b7433fee0e34">&#9670;&#160;</a></span>import_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.import_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>list</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</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>
<p>Reimplemented in <a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1">src.backend.lib.overide.ACatalogue</a>.</p>
</div>
</div>
<a id="a810b9e2aefcf334097739d33843357d8" name="a810b9e2aefcf334097739d33843357d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a810b9e2aefcf334097739d33843357d8">&#9670;&#160;</a></span>process_by_filetype()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_by_filetype </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Determine books filetype and process.</pre>
</div>
</div>
<a id="a9e91ca706de4d548d567d92cbc525f5e" name="a9e91ca706de4d548d567d92cbc525f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e91ca706de4d548d567d92cbc525f5e">&#9670;&#160;</a></span>process_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a8e1422c1f6b599d2de6e5b06a61448ca" name="a8e1422c1f6b599d2de6e5b06a61448ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e1422c1f6b599d2de6e5b06a61448ca">&#9670;&#160;</a></span>scan_folder()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.scan_folder </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_path</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
:param _path: Path to scan
</pre>
<p>Reimplemented in <a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4">src.backend.lib.overide.ACatalogue</a>.</p>
</div>
</div>
<a id="ad23addfc27076a3cdad719d549011ea5" name="ad23addfc27076a3cdad719d549011ea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad23addfc27076a3cdad719d549011ea5">&#9670;&#160;</a></span>stripTags()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.stripTags </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>source</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a340d869b8f7c16007773de40a24005ce" name="a340d869b8f7c16007773de40a24005ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a340d869b8f7c16007773de40a24005ce">&#9670;&#160;</a></span>book_folder</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.book_folder = config.book_path</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1129571b5c1a358e71d125cc47f9bf36" name="a1129571b5c1a358e71d125cc47f9bf36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1129571b5c1a358e71d125cc47f9bf36">&#9670;&#160;</a></span>books</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.books = None</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb43be37337c74fc1bfe1415ded423f9" name="afb43be37337c74fc1bfe1415ded423f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb43be37337c74fc1bfe1415ded423f9">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a576649115ba3717c475d60eae96f6204" name="a576649115ba3717c475d60eae96f6204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a576649115ba3717c475d60eae96f6204">&#9670;&#160;</a></span>cover_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.cover_regx = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acd6cb62aae1221ee590734b70f76888a" name="acd6cb62aae1221ee590734b70f76888a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd6cb62aae1221ee590734b70f76888a">&#9670;&#160;</a></span>db_pointer</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a93d7bdaff2d95e85713d1506c9a2d250" name="a93d7bdaff2d95e85713d1506c9a2d250"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d7bdaff2d95e85713d1506c9a2d250">&#9670;&#160;</a></span>file_list</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list src.backend.lib.library.Catalogue.file_list = []</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a686b224643b060423a49a017d4a7abd8" name="a686b224643b060423a49a017d4a7abd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a686b224643b060423a49a017d4a7abd8">&#9670;&#160;</a></span>html_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.html_regx = re.compile(r&quot;\.html&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2026c090be4f55cfe941d16a01b4ea75" name="a2026c090be4f55cfe941d16a01b4ea75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2026c090be4f55cfe941d16a01b4ea75">&#9670;&#160;</a></span>opf_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.opf_regx = re.compile(r&quot;\.opf&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3e5edca4ab942e3f71958c90b5c45023" name="a3e5edca4ab942e3f71958c90b5c45023"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e5edca4ab942e3f71958c90b5c45023">&#9670;&#160;</a></span>root_dir</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.root_dir = config.root</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab68843b8153b9e8ba51d0a4fa541568e" name="ab68843b8153b9e8ba51d0a4fa541568e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab68843b8153b9e8ba51d0a4fa541568e">&#9670;&#160;</a></span>title_sanitization_dirs_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r&quot;/&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad8ad8ef5c7ea417050d4dd84046d3234" name="ad8ad8ef5c7ea417050d4dd84046d3234"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8ad8ef5c7ea417050d4dd84046d3234">&#9670;&#160;</a></span>title_sanitization_lvl2_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= re.compile(</div>
<div class="line"> <span class="stringliteral">r&quot;^(Book )+[0-9]*\W+(-)&quot;</span>)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8fa7021f8b131c35c0a1d1179b003383" name="a8fa7021f8b131c35c0a1d1179b003383"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fa7021f8b131c35c0a1d1179b003383">&#9670;&#160;</a></span>title_sanitization_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,98 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 bgcolor="#f0f0f0" class="odd"><td class="entry"><b>_cp</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"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_data</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"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>_fp</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"><span class="mlabel">protected</span></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" class="odd"><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" class="odd"><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>build_mode</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="odd"><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>config_structure</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="odd"><td class="entry"><b>db_engine</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" class="odd"><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" class="odd"><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 class="odd"><td class="entry"><a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff">get_logger</a>(self)</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>init_config</b>(self) (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="odd"><td class="entry"><b>logger</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#ad53ffb345a68555ab142ab09dc5e41dd">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" class="odd"><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" class="odd"><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" class="odd"><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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,76 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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" class="odd"><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" class="odd"><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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html">Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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" class="odd"><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>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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">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" class="odd"><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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">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#a3d5c8a0511da4ea483144e5727e79410">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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">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#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</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="odd"><td class="entry"><b>extract_metadata_mobi</b>(self, book) (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#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</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="odd"><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="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1">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="odd"><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#ac535eff50b4577d1d7b7b7433fee0e34">import_books</a>(self, list=None, **kwargs)</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="odd"><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#a810b9e2aefcf334097739d33843357d8">process_by_filetype</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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">process_epub</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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca">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>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stripTags</b>(source) (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"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>title_sanitization_dirs_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>title_sanitization_lvl2_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="odd"><td class="entry"><b>title_sanitization_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>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,438 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.models.Book 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">Book</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.models.Book Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.models.Book:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png" usemap="#src_2Ebackend_2Elib_2Emodels_2EBook_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Emodels_2EBook_map" name="src_2Ebackend_2Elib_2Emodels_2EBook_map">
<area href="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" alt="src.backend.lib.models.Base" shape="rect" coords="0,56,174,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a92f0803321dcd8b21a7010b44ed0dcc9" id="r_a92f0803321dcd8b21a7010b44ed0dcc9"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a92f0803321dcd8b21a7010b44ed0dcc9">id</a> = mapped_column(primary_key=True, nullable=False)</td></tr>
<tr class="memitem:ad5e752c3dc38f3f7a8b75bc2568f761d" id="r_ad5e752c3dc38f3f7a8b75bc2568f761d"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad5e752c3dc38f3f7a8b75bc2568f761d">title</a> [str]</td></tr>
<tr class="memitem:a2ecbff54bc7e3eeffc50ac011e3ec40c" id="r_a2ecbff54bc7e3eeffc50ac011e3ec40c"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2ecbff54bc7e3eeffc50ac011e3ec40c">author</a> [Optional[str]]</td></tr>
<tr class="memitem:ab011bf618ba0e10701e7aff2c20164bf" id="r_ab011bf618ba0e10701e7aff2c20164bf"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab011bf618ba0e10701e7aff2c20164bf">categories</a> [Optional[str]]</td></tr>
<tr class="memitem:a878c7f0ad45e843c6053e8dcc3d56071" id="r_a878c7f0ad45e843c6053e8dcc3d56071"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a878c7f0ad45e843c6053e8dcc3d56071">cover</a> [Optional[bytes]]</td></tr>
<tr class="memitem:a58f47564aa05f4af46714ddc01b50bbf" id="r_a58f47564aa05f4af46714ddc01b50bbf"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a58f47564aa05f4af46714ddc01b50bbf">pages</a> [Optional[int]]</td></tr>
<tr class="memitem:afe545a3a75ffbf9ca4ac263c46af0ccb" id="r_afe545a3a75ffbf9ca4ac263c46af0ccb"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afe545a3a75ffbf9ca4ac263c46af0ccb">progress</a> [Optional[float]]</td></tr>
<tr class="memitem:a624d4e1930f6eb21c0777f5125eb0f88" id="r_a624d4e1930f6eb21c0777f5125eb0f88"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a624d4e1930f6eb21c0777f5125eb0f88">file_name</a> [str]</td></tr>
<tr class="memitem:a40c111b5aff2b0d39af7254c10520091" id="r_a40c111b5aff2b0d39af7254c10520091"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a40c111b5aff2b0d39af7254c10520091">description</a> [Optional[str]]</td></tr>
<tr class="memitem:a611da592b9c2895ba94064def53dc4b6" id="r_a611da592b9c2895ba94064def53dc4b6"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a611da592b9c2895ba94064def53dc4b6">date</a> [timestamp]</td></tr>
<tr class="memitem:a66f224e77edf5a87989e640a3f812986" id="r_a66f224e77edf5a87989e640a3f812986"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a66f224e77edf5a87989e640a3f812986">rights</a> [Optional[str]]</td></tr>
<tr class="memitem:a42fa535ef8dcaa6e578fef9fcb2a7ba1" id="r_a42fa535ef8dcaa6e578fef9fcb2a7ba1"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a42fa535ef8dcaa6e578fef9fcb2a7ba1">tags</a> [Optional[str]]</td></tr>
<tr class="memitem:a1ecd1414d6fb98fbe069ad56a17a4b62" id="r_a1ecd1414d6fb98fbe069ad56a17a4b62"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1ecd1414d6fb98fbe069ad56a17a4b62">identifier</a> [Optional[str]]</td></tr>
<tr class="memitem:ad0ac70b5fb44b2d5b9ea00556874bda8" id="r_ad0ac70b5fb44b2d5b9ea00556874bda8"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad0ac70b5fb44b2d5b9ea00556874bda8">publisher</a> [Optional[str]]</td></tr>
<tr class="memitem:a9ecff8e881ad8c59fd3100ef63ab03d4" id="r_a9ecff8e881ad8c59fd3100ef63ab03d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9ecff8e881ad8c59fd3100ef63ab03d4">book_collections</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Book model.</pre> </div><a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a2ecbff54bc7e3eeffc50ac011e3ec40c" name="a2ecbff54bc7e3eeffc50ac011e3ec40c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ecbff54bc7e3eeffc50ac011e3ec40c">&#9670;&#160;</a></span>author</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.author [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9ecff8e881ad8c59fd3100ef63ab03d4" name="a9ecff8e881ad8c59fd3100ef63ab03d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ecff8e881ad8c59fd3100ef63ab03d4">&#9670;&#160;</a></span>book_collections</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.models.Book.book_collections</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= relationship(</div>
<div class="line"> <span class="stringliteral">&quot;BookCollection&quot;</span>, back_populates=<span class="stringliteral">&quot;book&quot;</span>, cascade=<span class="stringliteral">&quot;all, delete-orphan&quot;</span></div>
<div class="line"> )</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab011bf618ba0e10701e7aff2c20164bf" name="ab011bf618ba0e10701e7aff2c20164bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab011bf618ba0e10701e7aff2c20164bf">&#9670;&#160;</a></span>categories</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.categories [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a878c7f0ad45e843c6053e8dcc3d56071" name="a878c7f0ad45e843c6053e8dcc3d56071"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a878c7f0ad45e843c6053e8dcc3d56071">&#9670;&#160;</a></span>cover</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.cover [Optional[bytes]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a611da592b9c2895ba94064def53dc4b6" name="a611da592b9c2895ba94064def53dc4b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a611da592b9c2895ba94064def53dc4b6">&#9670;&#160;</a></span>date</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.date [timestamp]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a40c111b5aff2b0d39af7254c10520091" name="a40c111b5aff2b0d39af7254c10520091"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40c111b5aff2b0d39af7254c10520091">&#9670;&#160;</a></span>description</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.description [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a624d4e1930f6eb21c0777f5125eb0f88" name="a624d4e1930f6eb21c0777f5125eb0f88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a624d4e1930f6eb21c0777f5125eb0f88">&#9670;&#160;</a></span>file_name</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.file_name [str]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a92f0803321dcd8b21a7010b44ed0dcc9" name="a92f0803321dcd8b21a7010b44ed0dcc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92f0803321dcd8b21a7010b44ed0dcc9">&#9670;&#160;</a></span>id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.id = mapped_column(primary_key=True, nullable=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1ecd1414d6fb98fbe069ad56a17a4b62" name="a1ecd1414d6fb98fbe069ad56a17a4b62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ecd1414d6fb98fbe069ad56a17a4b62">&#9670;&#160;</a></span>identifier</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.identifier [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a58f47564aa05f4af46714ddc01b50bbf" name="a58f47564aa05f4af46714ddc01b50bbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58f47564aa05f4af46714ddc01b50bbf">&#9670;&#160;</a></span>pages</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.pages [Optional[int]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afe545a3a75ffbf9ca4ac263c46af0ccb" name="afe545a3a75ffbf9ca4ac263c46af0ccb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe545a3a75ffbf9ca4ac263c46af0ccb">&#9670;&#160;</a></span>progress</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.progress [Optional[float]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad0ac70b5fb44b2d5b9ea00556874bda8" name="ad0ac70b5fb44b2d5b9ea00556874bda8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0ac70b5fb44b2d5b9ea00556874bda8">&#9670;&#160;</a></span>publisher</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.publisher [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a66f224e77edf5a87989e640a3f812986" name="a66f224e77edf5a87989e640a3f812986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66f224e77edf5a87989e640a3f812986">&#9670;&#160;</a></span>rights</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.rights [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a42fa535ef8dcaa6e578fef9fcb2a7ba1" name="a42fa535ef8dcaa6e578fef9fcb2a7ba1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42fa535ef8dcaa6e578fef9fcb2a7ba1">&#9670;&#160;</a></span>tags</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.tags [Optional[str]]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad5e752c3dc38f3f7a8b75bc2568f761d" name="ad5e752c3dc38f3f7a8b75bc2568f761d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5e752c3dc38f3f7a8b75bc2568f761d">&#9670;&#160;</a></span>title</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Book.title [str]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

View File

@@ -0,0 +1,85 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.models.Base 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html">Base</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.models.Base Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.models.Base:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png" usemap="#src_2Ebackend_2Elib_2Emodels_2EBase_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Emodels_2EBase_map" name="src_2Ebackend_2Elib_2Emodels_2EBase_map">
<area href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html" alt="src.backend.lib.models.Book" shape="rect" coords="0,112,230,136"/>
<area href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html" alt="src.backend.lib.models.BookCollection" shape="rect" coords="240,112,470,136"/>
<area href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html" alt="src.backend.lib.models.Collection" shape="rect" coords="480,112,710,136"/>
<area href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html" alt="src.backend.lib.models.User" shape="rect" coords="720,112,950,136"/>
</map>
</div></div>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Base class for all models.</pre> </div><hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,559 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html">storage</a></li><li class="navelem"><a href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a43da65b09eebf9a3f72b3329f88567e9" id="r_a43da65b09eebf9a3f72b3329f88567e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43da65b09eebf9a3f72b3329f88567e9">__init__</a> (self, config)</td></tr>
<tr class="memitem:a803ef3a255fa00ee9279bb9cefc571f6" id="r_a803ef3a255fa00ee9279bb9cefc571f6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a803ef3a255fa00ee9279bb9cefc571f6">get_connection_string</a> (self)</td></tr>
<tr class="memitem:a2f472b2053439b52f9a703e593f385e6" id="r_a2f472b2053439b52f9a703e593f385e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2f472b2053439b52f9a703e593f385e6">create_tables</a> (self)</td></tr>
<tr class="memitem:a4e58e1d75ec604c1dc9b312531fbd670" id="r_a4e58e1d75ec604c1dc9b312531fbd670"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4e58e1d75ec604c1dc9b312531fbd670">insert_book</a> (self, book)</td></tr>
<tr class="memitem:abd8d95e5413f2a352d98566e7194d1dd" id="r_abd8d95e5413f2a352d98566e7194d1dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abd8d95e5413f2a352d98566e7194d1dd">book_paths_list</a> (self)</td></tr>
<tr class="memitem:ad0b3176f728194703910695cbaef9adb" id="r_ad0b3176f728194703910695cbaef9adb"><td class="memItemLeft" align="right" valign="top">list()&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad0b3176f728194703910695cbaef9adb">parse_collections_from_path</a> (self, dict() book)</td></tr>
<tr class="memitem:acacbb3bf0a9e47914e03a1a988ea15d1" id="r_acacbb3bf0a9e47914e03a1a988ea15d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acacbb3bf0a9e47914e03a1a988ea15d1">make_collections</a> (self)</td></tr>
<tr class="memitem:acf1c394db6999aa7a1e247219daca950" id="r_acf1c394db6999aa7a1e247219daca950"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf1c394db6999aa7a1e247219daca950">get_books</a> (self, collection=None, skip=None, limit=None)</td></tr>
<tr class="memitem:a8405c7e41009cd67dd9e0029a6dc61a0" id="r_a8405c7e41009cd67dd9e0029a6dc61a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8405c7e41009cd67dd9e0029a6dc61a0">get_book</a> (self, id)</td></tr>
<tr class="memitem:aa2008b1078dddcc432d37465ca2c803b" id="r_aa2008b1078dddcc432d37465ca2c803b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa2008b1078dddcc432d37465ca2c803b">get_collections</a> (self)</td></tr>
<tr class="memitem:ae05823894dc6af9f3ef4b44e38526dbc" id="r_ae05823894dc6af9f3ef4b44e38526dbc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae05823894dc6af9f3ef4b44e38526dbc">get_collection</a> (self, name)</td></tr>
<tr class="memitem:a1fdf99cac9caa8cb5b988e5f578a8310" id="r_a1fdf99cac9caa8cb5b988e5f578a8310"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1fdf99cac9caa8cb5b988e5f578a8310">parse_advanced_query</a> (self, str query)</td></tr>
<tr class="memitem:ae1b8ecfb09ad268a07c8abf67042cc59" id="r_ae1b8ecfb09ad268a07c8abf67042cc59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae1b8ecfb09ad268a07c8abf67042cc59">fuzzy_search_books</a> (self, str query, int limit=30)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a289524152eea2c6f87ebe75b57702f8e" id="r_a289524152eea2c6f87ebe75b57702f8e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a289524152eea2c6f87ebe75b57702f8e">config</a> = config</td></tr>
<tr class="memitem:a590a49f74a9d7afac613ee447e8056d7" id="r_a590a49f74a9d7afac613ee447e8056d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a590a49f74a9d7afac613ee447e8056d7">sql</a> = self.config.catalogue_db</td></tr>
<tr class="memitem:a8163ce045eb3cf6e2ac26797ec712b7d" id="r_a8163ce045eb3cf6e2ac26797ec712b7d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8163ce045eb3cf6e2ac26797ec712b7d">user</a> = self.config.user</td></tr>
<tr class="memitem:a5dd09d87e35603506a37b61a68c98d43" id="r_a5dd09d87e35603506a37b61a68c98d43"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5dd09d87e35603506a37b61a68c98d43">password</a> = self.config.password</td></tr>
<tr class="memitem:aa1f7326b0de7f089d60564af42311aa1" id="r_aa1f7326b0de7f089d60564af42311aa1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa1f7326b0de7f089d60564af42311aa1">db_host</a> = self.config.db_host</td></tr>
<tr class="memitem:a26ddd4bc23e668c5cba6473366e1e107" id="r_a26ddd4bc23e668c5cba6473366e1e107"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a26ddd4bc23e668c5cba6473366e1e107">db_port</a> = self.config.db_port</td></tr>
<tr class="memitem:a562ed8318845aa2743280dd146293a8a" id="r_a562ed8318845aa2743280dd146293a8a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a562ed8318845aa2743280dd146293a8a">engine</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Create a new Storage object.
&gt;&gt;&gt; db = Storage(config)
Parameters
----------
config : Config()
Main program configuration.
Attributes
----------
config : Stores configuration
sql : Database Name
user : Database User Name
password : Database Password
db_host : Database Host
db_port : Database Port
engine : sqlalchemy.create_engine(url, executor, kw)
</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a43da65b09eebf9a3f72b3329f88567e9" name="a43da65b09eebf9a3f72b3329f88567e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43da65b09eebf9a3f72b3329f88567e9">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize storage object.</pre>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="abd8d95e5413f2a352d98566e7194d1dd" name="abd8d95e5413f2a352d98566e7194d1dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd8d95e5413f2a352d98566e7194d1dd">&#9670;&#160;</a></span>book_paths_list()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.book_paths_list </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get file paths from database for comparison to system files.
Returns
-------
_result : ScalarResult Object
</pre>
</div>
</div>
<a id="a2f472b2053439b52f9a703e593f385e6" name="a2f472b2053439b52f9a703e593f385e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f472b2053439b52f9a703e593f385e6">&#9670;&#160;</a></span>create_tables()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.create_tables </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Create table structure.</pre>
</div>
</div>
<a id="ae1b8ecfb09ad268a07c8abf67042cc59" name="ae1b8ecfb09ad268a07c8abf67042cc59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1b8ecfb09ad268a07c8abf67042cc59">&#9670;&#160;</a></span>fuzzy_search_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.fuzzy_search_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str</td> <td class="paramname"><span class="paramname"><em>query</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td> <td class="paramname"><span class="paramname"><em>limit</em></span><span class="paramdefsep"> = </span><span class="paramdefval">30</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8405c7e41009cd67dd9e0029a6dc61a0" name="a8405c7e41009cd67dd9e0029a6dc61a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8405c7e41009cd67dd9e0029a6dc61a0">&#9670;&#160;</a></span>get_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.get_book </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>id</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get book from database.
Parameters
----------
id : int
Book ID to filter by.
Returns
-------
_result : ScalarResult Object
</pre>
</div>
</div>
<a id="acf1c394db6999aa7a1e247219daca950" name="acf1c394db6999aa7a1e247219daca950"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf1c394db6999aa7a1e247219daca950">&#9670;&#160;</a></span>get_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.get_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>collection</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>skip</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>limit</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get books from database.
Parameters
----------
collection : int or None
Collection ID to filter by.
skip : int or None
Number of records to skip (offset).
limit : int or None
Maximum number of records to return.
</pre>
</div>
</div>
<a id="ae05823894dc6af9f3ef4b44e38526dbc" name="ae05823894dc6af9f3ef4b44e38526dbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae05823894dc6af9f3ef4b44e38526dbc">&#9670;&#160;</a></span>get_collection()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.get_collection </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>name</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get collection from database.
Returns
-------
_result : ScalarResult Object
</pre>
</div>
</div>
<a id="aa2008b1078dddcc432d37465ca2c803b" name="aa2008b1078dddcc432d37465ca2c803b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2008b1078dddcc432d37465ca2c803b">&#9670;&#160;</a></span>get_collections()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.get_collections </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get collections from database.
Returns
-------
_result : ScalarResult Object
</pre>
</div>
</div>
<a id="a803ef3a255fa00ee9279bb9cefc571f6" name="a803ef3a255fa00ee9279bb9cefc571f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a803ef3a255fa00ee9279bb9cefc571f6">&#9670;&#160;</a></span>get_connection_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.get_connection_string </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Get connection string.
Engine type references config.json:DB_ENGINE.
Returns
-------
str : sqlalchemy Connection String
</pre>
</div>
</div>
<a id="a4e58e1d75ec604c1dc9b312531fbd670" name="a4e58e1d75ec604c1dc9b312531fbd670"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e58e1d75ec604c1dc9b312531fbd670">&#9670;&#160;</a></span>insert_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.insert_book </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Insert a new book into the database.
Parameters
----------
book: dict()
Book object to insert.
Returns
-------
bool
True on success False on failure
</pre>
</div>
</div>
<a id="acacbb3bf0a9e47914e03a1a988ea15d1" name="acacbb3bf0a9e47914e03a1a988ea15d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acacbb3bf0a9e47914e03a1a988ea15d1">&#9670;&#160;</a></span>make_collections()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.make_collections </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Ensure collections exist and link them to books (many-to-many).</pre>
</div>
</div>
<a id="a1fdf99cac9caa8cb5b988e5f578a8310" name="a1fdf99cac9caa8cb5b988e5f578a8310"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fdf99cac9caa8cb5b988e5f578a8310">&#9670;&#160;</a></span>parse_advanced_query()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> dict src.backend.lib.storage.Storage.parse_advanced_query </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str</td> <td class="paramname"><span class="paramname"><em>query</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Parse a query like 'title:"dark tower" author:king tags:fantasy'</pre>
</div>
</div>
<a id="ad0b3176f728194703910695cbaef9adb" name="ad0b3176f728194703910695cbaef9adb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0b3176f728194703910695cbaef9adb">&#9670;&#160;</a></span>parse_collections_from_path()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> list() src.backend.lib.storage.Storage.parse_collections_from_path </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dict()</td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Parse book path's to determine common folder structure.
Stores collections based on shared paths.
Parameters
----------
book : dict()
Book object to parse.
Returns
-------
collections : list()
List of collections.
</pre>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a289524152eea2c6f87ebe75b57702f8e" name="a289524152eea2c6f87ebe75b57702f8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a289524152eea2c6f87ebe75b57702f8e">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa1f7326b0de7f089d60564af42311aa1" name="aa1f7326b0de7f089d60564af42311aa1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1f7326b0de7f089d60564af42311aa1">&#9670;&#160;</a></span>db_host</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.db_host = self.config.db_host</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a26ddd4bc23e668c5cba6473366e1e107" name="a26ddd4bc23e668c5cba6473366e1e107"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26ddd4bc23e668c5cba6473366e1e107">&#9670;&#160;</a></span>db_port</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.db_port = self.config.db_port</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a562ed8318845aa2743280dd146293a8a" name="a562ed8318845aa2743280dd146293a8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a562ed8318845aa2743280dd146293a8a">&#9670;&#160;</a></span>engine</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.engine</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= create_engine(self.get_connection_string(),</div>
<div class="line"> pool_pre_ping=<span class="keyword">True</span>)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5dd09d87e35603506a37b61a68c98d43" name="a5dd09d87e35603506a37b61a68c98d43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5dd09d87e35603506a37b61a68c98d43">&#9670;&#160;</a></span>password</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.password = self.config.password</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a590a49f74a9d7afac613ee447e8056d7" name="a590a49f74a9d7afac613ee447e8056d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a590a49f74a9d7afac613ee447e8056d7">&#9670;&#160;</a></span>sql</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.sql = self.config.catalogue_db</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8163ce045eb3cf6e2ac26797ec712b7d" name="a8163ce045eb3cf6e2ac26797ec712b7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8163ce045eb3cf6e2ac26797ec712b7d">&#9670;&#160;</a></span>user</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.storage.Storage.user = self.config.user</td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,181 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a01f37bb920ae791e417aeba40eed3787" id="r_a01f37bb920ae791e417aeba40eed3787"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a01f37bb920ae791e417aeba40eed3787">__init__</a> (self)</td></tr>
<tr class="memitem:adbcb58686009f62df00605953f29a545" id="r_adbcb58686009f62df00605953f29a545"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adbcb58686009f62df00605953f29a545">image_result</a> (self, query)</td></tr>
<tr class="memitem:a80a98e1559f09555c68f2c10c68e63ce" id="r_a80a98e1559f09555c68f2c10c68e63ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a80a98e1559f09555c68f2c10c68e63ce">description_result</a> (self, query)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:aaee74c6870b8e8e100243970abacfc80" id="r_aaee74c6870b8e8e100243970abacfc80"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaee74c6870b8e8e100243970abacfc80">url</a> = &quot;https://api.duckduckgo.com/?q=&quot;</td></tr>
<tr class="memitem:a28a2d6d54806cda9288daad753ef87cc" id="r_a28a2d6d54806cda9288daad753ef87cc"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a28a2d6d54806cda9288daad753ef87cc">imageurl</a> = &quot;https://duckduckgo.com&quot;</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">duckduckgo related searching</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a01f37bb920ae791e417aeba40eed3787" name="a01f37bb920ae791e417aeba40eed3787"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01f37bb920ae791e417aeba40eed3787">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.api_hooks.DuckDuckGo.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a80a98e1559f09555c68f2c10c68e63ce" name="a80a98e1559f09555c68f2c10c68e63ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80a98e1559f09555c68f2c10c68e63ce">&#9670;&#160;</a></span>description_result()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.api_hooks.DuckDuckGo.description_result </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>query</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adbcb58686009f62df00605953f29a545" name="adbcb58686009f62df00605953f29a545"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adbcb58686009f62df00605953f29a545">&#9670;&#160;</a></span>image_result()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.api_hooks.DuckDuckGo.image_result </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>query</em></span>&#160;)</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>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a28a2d6d54806cda9288daad753ef87cc" name="a28a2d6d54806cda9288daad753ef87cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28a2d6d54806cda9288daad753ef87cc">&#9670;&#160;</a></span>imageurl</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str src.backend.lib.api_hooks.DuckDuckGo.imageurl = &quot;https://duckduckgo.com&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aaee74c6870b8e8e100243970abacfc80" name="aaee74c6870b8e8e100243970abacfc80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaee74c6870b8e8e100243970abacfc80">&#9670;&#160;</a></span>url</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str src.backend.lib.api_hooks.DuckDuckGo.url = &quot;https://api.duckduckgo.com/?q=&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,327 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.Server 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">Server</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.pyShelf.Server Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a90f786722727c58a0ddf87637fdd184b" id="r_a90f786722727c58a0ddf87637fdd184b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a90f786722727c58a0ddf87637fdd184b">__init__</a> (self, root)</td></tr>
<tr class="memitem:a108434f8ee6e644ed444a6c4d4fea559" id="r_a108434f8ee6e644ed444a6c4d4fea559"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a108434f8ee6e644ed444a6c4d4fea559">__aexit__</a> (self, *args, **kwargs)</td></tr>
<tr class="memitem:aea3126769285a3733106a55e8fda769f" id="r_aea3126769285a3733106a55e8fda769f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aea3126769285a3733106a55e8fda769f">initialize_server</a> (self)</td></tr>
<tr class="memitem:ac71f601e92b6b43d9034060ead7dfe2a" id="r_ac71f601e92b6b43d9034060ead7dfe2a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac71f601e92b6b43d9034060ead7dfe2a">runImport</a> (self)</td></tr>
<tr class="memitem:ac080e3b5a571c3160053894773c7a47f" id="r_ac080e3b5a571c3160053894773c7a47f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac080e3b5a571c3160053894773c7a47f">socketio</a> (self, websocket, path)</td></tr>
<tr class="memitem:afda383f0a5dc7814138b196fe4d33811" id="r_afda383f0a5dc7814138b196fe4d33811"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afda383f0a5dc7814138b196fe4d33811">pong</a> (self)</td></tr>
<tr class="memitem:a9896ab16aec62bc1ea4f468097fc34ef" id="r_a9896ab16aec62bc1ea4f468097fc34ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9896ab16aec62bc1ea4f468097fc34ef">start</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:afa38a61272e67cdede99494a504931e5" id="r_afa38a61272e67cdede99494a504931e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afa38a61272e67cdede99494a504931e5">root</a> = root</td></tr>
<tr class="memitem:a909011a2ea5fe9d763465a9bfd4e120c" id="r_a909011a2ea5fe9d763465a9bfd4e120c"><td class="memItemLeft" align="right" valign="top">tuple&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a909011a2ea5fe9d763465a9bfd4e120c">host</a> = (&quot;127.0.0.1&quot;, 1337)</td></tr>
<tr class="memitem:ac36d140fa0f1e5afbe82c24efe12febd" id="r_ac36d140fa0f1e5afbe82c24efe12febd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac36d140fa0f1e5afbe82c24efe12febd">config</a> = <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a>(self.root)</td></tr>
<tr class="memitem:aaec4c3b374dadd8670b4719f03d8c4ab" id="r_aaec4c3b374dadd8670b4719f03d8c4ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaec4c3b374dadd8670b4719f03d8c4ab">loop</a> = None</td></tr>
<tr class="memitem:ad4866f6c75ce56e8879d84463cf78642" id="r_ad4866f6c75ce56e8879d84463cf78642"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad4866f6c75ce56e8879d84463cf78642">serve</a> = None</td></tr>
<tr class="memitem:a75291e5bb6315445e03d22ce5eb4f57f" id="r_a75291e5bb6315445e03d22ce5eb4f57f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a75291e5bb6315445e03d22ce5eb4f57f">socketio</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Main Server Container
:TODO: Document this
</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a90f786722727c58a0ddf87637fdd184b" name="a90f786722727c58a0ddf87637fdd184b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90f786722727c58a0ddf87637fdd184b">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>root</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a108434f8ee6e644ed444a6c4d4fea559" name="a108434f8ee6e644ed444a6c4d4fea559"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a108434f8ee6e644ed444a6c4d4fea559">&#9670;&#160;</a></span>__aexit__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.__aexit__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*</td> <td class="paramname"><span class="paramname"><em>args</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aea3126769285a3733106a55e8fda769f" name="aea3126769285a3733106a55e8fda769f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea3126769285a3733106a55e8fda769f">&#9670;&#160;</a></span>initialize_server()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.initialize_server </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afda383f0a5dc7814138b196fe4d33811" name="afda383f0a5dc7814138b196fe4d33811"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afda383f0a5dc7814138b196fe4d33811">&#9670;&#160;</a></span>pong()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.pong </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac71f601e92b6b43d9034060ead7dfe2a" name="ac71f601e92b6b43d9034060ead7dfe2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac71f601e92b6b43d9034060ead7dfe2a">&#9670;&#160;</a></span>runImport()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.runImport </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac080e3b5a571c3160053894773c7a47f" name="ac080e3b5a571c3160053894773c7a47f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac080e3b5a571c3160053894773c7a47f">&#9670;&#160;</a></span>socketio()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.socketio </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>websocket</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>path</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9896ab16aec62bc1ea4f468097fc34ef" name="a9896ab16aec62bc1ea4f468097fc34ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9896ab16aec62bc1ea4f468097fc34ef">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="ac36d140fa0f1e5afbe82c24efe12febd" name="ac36d140fa0f1e5afbe82c24efe12febd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac36d140fa0f1e5afbe82c24efe12febd">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.config = <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a>(self.root)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a909011a2ea5fe9d763465a9bfd4e120c" name="a909011a2ea5fe9d763465a9bfd4e120c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a909011a2ea5fe9d763465a9bfd4e120c">&#9670;&#160;</a></span>host</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">tuple src.backend.lib.pyShelf.Server.host = (&quot;127.0.0.1&quot;, 1337)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aaec4c3b374dadd8670b4719f03d8c4ab" name="aaec4c3b374dadd8670b4719f03d8c4ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaec4c3b374dadd8670b4719f03d8c4ab">&#9670;&#160;</a></span>loop</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.loop = None</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afa38a61272e67cdede99494a504931e5" name="afa38a61272e67cdede99494a504931e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa38a61272e67cdede99494a504931e5">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.root = root</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad4866f6c75ce56e8879d84463cf78642" name="ad4866f6c75ce56e8879d84463cf78642"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4866f6c75ce56e8879d84463cf78642">&#9670;&#160;</a></span>serve</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.serve = None</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a75291e5bb6315445e03d22ce5eb4f57f" name="a75291e5bb6315445e03d22ce5eb4f57f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75291e5bb6315445e03d22ce5eb4f57f">&#9670;&#160;</a></span>socketio</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.Server.socketio</td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,161 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.__main__ Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><a href="../../d7/dd7/namespacesrc_1_1____main____.html">__main__</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">src.__main__ Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2c8551ba43ae16533cec7279c987ef05" id="r_a2c8551ba43ae16533cec7279c987ef05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2c8551ba43ae16533cec7279c987ef05">run_import</a> ()</td></tr>
<tr class="memitem:a4bf4af10fb0dca61ba7e588294aa9d46" id="r_a4bf4af10fb0dca61ba7e588294aa9d46"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4bf4af10fb0dca61ba7e588294aa9d46">main</a> ()</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-var-members" class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:acd3a0e14c57605a6b02d8616b8463fd2" id="r_acd3a0e14c57605a6b02d8616b8463fd2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acd3a0e14c57605a6b02d8616b8463fd2">root</a> = Path.cwd()</td></tr>
<tr class="memitem:a2fb3371145d8352f0b254482857372d9" id="r_a2fb3371145d8352f0b254482857372d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fb3371145d8352f0b254482857372d9">config</a> = <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a>(root)</td></tr>
<tr class="memitem:a548a9c12865dbbd07f3a09726d61f639" id="r_a548a9c12865dbbd07f3a09726d61f639"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a548a9c12865dbbd07f3a09726d61f639">PRG_PATH</a> = Path.cwd().__str__()</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">PyShelf Entrypoint.</pre> </div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="a4bf4af10fb0dca61ba7e588294aa9d46" name="a4bf4af10fb0dca61ba7e588294aa9d46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bf4af10fb0dca61ba7e588294aa9d46">&#9670;&#160;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.__main__.main </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Program entrypoint.</pre>
</div>
</div>
<a id="a2c8551ba43ae16533cec7279c987ef05" name="a2c8551ba43ae16533cec7279c987ef05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c8551ba43ae16533cec7279c987ef05">&#9670;&#160;</a></span>run_import()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.__main__.run_import </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Begin live import of books.</pre>
</div>
</div>
<a name="doc-var-members" id="doc-var-members"></a><h2 id="header-doc-var-members" class="groupheader">Variable Documentation</h2>
<a id="a2fb3371145d8352f0b254482857372d9" name="a2fb3371145d8352f0b254482857372d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fb3371145d8352f0b254482857372d9">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.__main__.config = <a class="el" href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a>(root)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a548a9c12865dbbd07f3a09726d61f639" name="a548a9c12865dbbd07f3a09726d61f639"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a548a9c12865dbbd07f3a09726d61f639">&#9670;&#160;</a></span>PRG_PATH</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.__main__.PRG_PATH = Path.cwd().__str__()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acd3a0e14c57605a6b02d8616b8463fd2" name="acd3a0e14c57605a6b02d8616b8463fd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd3a0e14c57605a6b02d8616b8463fd2">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.__main__.root = Path.cwd()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,71 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: DataHooks Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">DataHooks Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:BookInterface" id="r_BookInterface"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d71/classDataHooks_1_1BookInterface.html">BookInterface</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">pyShelf's frontend database hooks.</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,150 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html">TestCatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a71bc41f4ea5f871ed9d3c79b601a5f2e" id="r_a71bc41f4ea5f871ed9d3c79b601a5f2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a71bc41f4ea5f871ed9d3c79b601a5f2e">test_filter_books</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a32161d12b7ebe948a169edf36315bcd8" id="r_a32161d12b7ebe948a169edf36315bcd8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a32161d12b7ebe948a169edf36315bcd8">root</a> = os.path.abspath(os.path.curdir)</td></tr>
<tr class="memitem:a35dc3a5637fb18c85b31aecfbff8bf95" id="r_a35dc3a5637fb18c85b31aecfbff8bf95"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a35dc3a5637fb18c85b31aecfbff8bf95">config</a> = <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a>()</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"></div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a71bc41f4ea5f871ed9d3c79b601a5f2e" name="a71bc41f4ea5f871ed9d3c79b601a5f2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71bc41f4ea5f871ed9d3c79b601a5f2e">&#9670;&#160;</a></span>test_filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.TestCatalogue.test_filter_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a35dc3a5637fb18c85b31aecfbff8bf95" name="a35dc3a5637fb18c85b31aecfbff8bf95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35dc3a5637fb18c85b31aecfbff8bf95">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.TestCatalogue.config = <a class="el" href="../../d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html">Test_Config</a>()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a32161d12b7ebe948a169edf36315bcd8" name="a32161d12b7ebe948a169edf36315bcd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32161d12b7ebe948a169edf36315bcd8">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.TestCatalogue.root = os.path.abspath(os.path.curdir)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,157 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: objects.JSInterface 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../df/d4c/namespaceobjects.html">objects</a></li><li class="navelem"><a href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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="../../d2/dcb/classobjects_1_1JSInterface-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">objects.JSInterface Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aff3d033ea502f8e991b787161606f52a" id="r_aff3d033ea502f8e991b787161606f52a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aff3d033ea502f8e991b787161606f52a">__init__</a> (self, Config config)</td></tr>
<tr class="memitem:a1e1c0b95d04fa6932bbac992f0e2806b" id="r_a1e1c0b95d04fa6932bbac992f0e2806b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1e1c0b95d04fa6932bbac992f0e2806b">install</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:acc2370a364bb1ecdc297c25fff39cbc9" id="r_acc2370a364bb1ecdc297c25fff39cbc9"><td class="memItemLeft" align="right" valign="top">Path&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acc2370a364bb1ecdc297c25fff39cbc9">package_json</a> = Path(config.root, &quot;src/frontend/package.json&quot;)</td></tr>
<tr class="memitem:a9f74685909b540934f577227f0a4086a" id="r_a9f74685909b540934f577227f0a4086a"><td class="memItemLeft" align="right" valign="top">Config&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f74685909b540934f577227f0a4086a">config</a> = config</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">A class to interface with the JavaScript side of pyShelf.</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aff3d033ea502f8e991b787161606f52a" name="aff3d033ea502f8e991b787161606f52a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff3d033ea502f8e991b787161606f52a">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">objects.JSInterface.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Config</td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize the JSInterface object.</pre>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a1e1c0b95d04fa6932bbac992f0e2806b" name="a1e1c0b95d04fa6932bbac992f0e2806b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e1c0b95d04fa6932bbac992f0e2806b">&#9670;&#160;</a></span>install()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">objects.JSInterface.install </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Install the JavaScript dependencies.</pre>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a9f74685909b540934f577227f0a4086a" name="a9f74685909b540934f577227f0a4086a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f74685909b540934f577227f0a4086a">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Config objects.JSInterface.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc2370a364bb1ecdc297c25fff39cbc9" name="acc2370a364bb1ecdc297c25fff39cbc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc2370a364bb1ecdc297c25fff39cbc9">&#9670;&#160;</a></span>package_json</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Path objects.JSInterface.package_json = Path(config.root, &quot;src/frontend/package.json&quot;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/frontend/lib/<a class="el" href="">objects.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,591 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html">config</a></li><li class="navelem"><a href="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html">Config</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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="#pro-attribs">Protected 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 class="dynheader">
Inheritance diagram for src.backend.lib.config.Config:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png" usemap="#src_2Ebackend_2Elib_2Econfig_2EConfig_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Econfig_2EConfig_map" name="src_2Ebackend_2Elib_2Econfig_2EConfig_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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ade4abb252e4529109e0f66ac85ae14b0" id="r_ade4abb252e4529109e0f66ac85ae14b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ade4abb252e4529109e0f66ac85ae14b0">__init__</a> (self, root)</td></tr>
<tr class="memitem:aa381832049e2d0c7d25ed28dfc11f8e3" id="r_aa381832049e2d0c7d25ed28dfc11f8e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa381832049e2d0c7d25ed28dfc11f8e3">init_config</a> (self)</td></tr>
<tr class="memitem:a75d80e22d017818c0fc569220a7e45ff" id="r_a75d80e22d017818c0fc569220a7e45ff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a75d80e22d017818c0fc569220a7e45ff">get_logger</a> (self)</td></tr>
<tr class="memitem:a84421d323478317c86c1487669695aa4" id="r_a84421d323478317c86c1487669695aa4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a84421d323478317c86c1487669695aa4">open_file</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a905c0db0851be868400284fa30e79e96" id="r_a905c0db0851be868400284fa30e79e96"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a905c0db0851be868400284fa30e79e96">root</a> = root</td></tr>
<tr class="memitem:a6bb47776af2fce4bd65c2c2b4eac5586" id="r_a6bb47776af2fce4bd65c2c2b4eac5586"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6bb47776af2fce4bd65c2c2b4eac5586">config_structure</a></td></tr>
<tr class="memitem:a7dad8f79402b8cef8064937a820fb7a3" id="r_a7dad8f79402b8cef8064937a820fb7a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7dad8f79402b8cef8064937a820fb7a3">logger</a> = self.get_logger()</td></tr>
<tr class="memitem:a73eef160e0fbb7d27b35af88f9a08e3b" id="r_a73eef160e0fbb7d27b35af88f9a08e3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a73eef160e0fbb7d27b35af88f9a08e3b">book_path</a> = env.get(&quot;BOOKPATH&quot;, self._data[&quot;BOOKPATH&quot;])</td></tr>
<tr class="memitem:a018e12d98de44bc319c4bdfbfc113cb8" id="r_a018e12d98de44bc319c4bdfbfc113cb8"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a018e12d98de44bc319c4bdfbfc113cb8">TITLE</a> = env.get(&quot;TITLE&quot;, self._data[&quot;TITLE&quot;])</td></tr>
<tr class="memitem:a60406233a916d5bc4c26f178081b811d" id="r_a60406233a916d5bc4c26f178081b811d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a60406233a916d5bc4c26f178081b811d">VERSION</a> = env.get(&quot;VERSION&quot;, self._data[&quot;VERSION&quot;])</td></tr>
<tr class="memitem:a32df23365f00a8014d8bafd797da06d0" id="r_a32df23365f00a8014d8bafd797da06d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a32df23365f00a8014d8bafd797da06d0">book_shelf</a> = env.get(&quot;BOOKSHELF&quot;, self._data[&quot;BOOKSHELF&quot;])</td></tr>
<tr class="memitem:ae24163ce536b9b86d2020cd00e04d096" id="r_ae24163ce536b9b86d2020cd00e04d096"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae24163ce536b9b86d2020cd00e04d096">catalogue_db</a> = env.get(&quot;DATABASE&quot;, self._data[&quot;DATABASE&quot;])</td></tr>
<tr class="memitem:a672d2e335f4f85f64b0416f5886b282f" id="r_a672d2e335f4f85f64b0416f5886b282f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a672d2e335f4f85f64b0416f5886b282f">user</a> = self._data[&quot;USER&quot;]</td></tr>
<tr class="memitem:a301b1324af2ae076e8782fcea79cd7f9" id="r_a301b1324af2ae076e8782fcea79cd7f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a301b1324af2ae076e8782fcea79cd7f9">password</a> = self._data[&quot;PASSWORD&quot;]</td></tr>
<tr class="memitem:aa119c468373043e4c74783c224b5a79e" id="r_aa119c468373043e4c74783c224b5a79e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa119c468373043e4c74783c224b5a79e">db_host</a> = env.get(&quot;DB_HOST&quot;, self._data[&quot;DB_HOST&quot;])</td></tr>
<tr class="memitem:aa859d999451eba07b8d0885665925a7e" id="r_aa859d999451eba07b8d0885665925a7e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa859d999451eba07b8d0885665925a7e">db_port</a> = env.get(&quot;DB_PORT&quot;, self._data[&quot;DB_PORT&quot;])</td></tr>
<tr class="memitem:a036328bdcfae6df7b8876223938ecf8b" id="r_a036328bdcfae6df7b8876223938ecf8b"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a036328bdcfae6df7b8876223938ecf8b">file_array</a> = [self.book_shelf]</td></tr>
<tr class="memitem:a5d56701f2b82080734daf59680e3c430" id="r_a5d56701f2b82080734daf59680e3c430"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5d56701f2b82080734daf59680e3c430">auto_scan</a> = True</td></tr>
<tr class="memitem:abd1caead108725ffe2edd4a1b7b8ab86" id="r_abd1caead108725ffe2edd4a1b7b8ab86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abd1caead108725ffe2edd4a1b7b8ab86">allowed_hosts</a></td></tr>
<tr class="memitem:a2d85b28b78de56b9c0233f6f4ab3062c" id="r_a2d85b28b78de56b9c0233f6f4ab3062c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2d85b28b78de56b9c0233f6f4ab3062c">db_engine</a> = env.get(&quot;DB_ENGINE&quot;, self._data[&quot;DB_ENGINE&quot;])</td></tr>
<tr class="memitem:a088b23bf4d560c3e29bc63ac2d97bb22" id="r_a088b23bf4d560c3e29bc63ac2d97bb22"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a088b23bf4d560c3e29bc63ac2d97bb22">db_user</a> = env.get(&quot;USER&quot;, self._data[&quot;USER&quot;])</td></tr>
<tr class="memitem:a15420665376e4aab800b46e9785a5a95" id="r_a15420665376e4aab800b46e9785a5a95"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a15420665376e4aab800b46e9785a5a95">db_pass</a> = env.get(&quot;PASSWORD&quot;, self._data[&quot;PASSWORD&quot;])</td></tr>
<tr class="memitem:a38798edf816107e93a2115fb6622926d" id="r_a38798edf816107e93a2115fb6622926d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a38798edf816107e93a2115fb6622926d">build_mode</a> = env.get(&quot;BUILD_MODE&quot;, self._data[&quot;BUILD_MODE&quot;])</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pro-attribs" class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:accfbfe0072f8f2c4fe643de4173e1a17" id="r_accfbfe0072f8f2c4fe643de4173e1a17"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#accfbfe0072f8f2c4fe643de4173e1a17">_fp</a> = &quot;config.json&quot;</td></tr>
<tr class="memitem:ab83f34bb88612425b1fb9bd501f802e9" id="r_ab83f34bb88612425b1fb9bd501f802e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab83f34bb88612425b1fb9bd501f802e9">_cp</a> = Path.joinpath(root, self._fp)</td></tr>
<tr class="memitem:a1a5427e58ebb81e58b245ac97960d670" id="r_a1a5427e58ebb81e58b245ac97960d670"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1a5427e58ebb81e58b245ac97960d670">_data</a> = self.init_config()</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Main System Configuration.
&gt;&gt;&gt; config = Config(root)
Parameters
----------
root : File system root of program
Attributes
----------
root : str() stores root.
config_structure : dict() Default Configuration Structure.
_fp : str() file pointer to main configuration.
_cp : Path() object of configuration file.
_data : dict() parsed json of _fp.
logger : holds logging configuration from get_logger().
book_path : directory pointer to main books folder.
TITLE : str() Program title.
VERSION : str() Program version.
TITLE : str() Combines TITLE &amp; VERSION.
book_shelf : Deprecation TODO: Is this still in use?
catalogue_db : str() Database Name.
user : str() Database user name.
password : str() Database password.
db_host : str() Database host.
db_port : int() Database port.
file_array : list() copy of book_shelf TODO: See book_shelf
auto_scan: bool() Do we auto scan on launch?
allowed_hosts : list() Allowed host list.
db_engine : str() Desired database engine type.
db_user : str() Database user name. Duplication Warning.
db_pass : str() Database password. Duplication Warning.
build_mode : str() Production | Development mode.
Methods
-------
get_logger : Setup loguru.
open_file : Parse configuration file.
</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ade4abb252e4529109e0f66ac85ae14b0" name="ade4abb252e4529109e0f66ac85ae14b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade4abb252e4529109e0f66ac85ae14b0">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>root</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize main configuration options.</pre>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a75d80e22d017818c0fc569220a7e45ff" name="a75d80e22d017818c0fc569220a7e45ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75d80e22d017818c0fc569220a7e45ff">&#9670;&#160;</a></span>get_logger()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.get_logger </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Instantiate logging system.</pre>
</div>
</div>
<a id="aa381832049e2d0c7d25ed28dfc11f8e3" name="aa381832049e2d0c7d25ed28dfc11f8e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa381832049e2d0c7d25ed28dfc11f8e3">&#9670;&#160;</a></span>init_config()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.init_config </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a84421d323478317c86c1487669695aa4" name="a84421d323478317c86c1487669695aa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84421d323478317c86c1487669695aa4">&#9670;&#160;</a></span>open_file()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.open_file </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Open 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#ad53ffb345a68555ab142ab09dc5e41dd">src.backend.tests.library_test.Test_Config</a>.</p>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="ab83f34bb88612425b1fb9bd501f802e9" name="ab83f34bb88612425b1fb9bd501f802e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab83f34bb88612425b1fb9bd501f802e9">&#9670;&#160;</a></span>_cp</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._cp = Path.joinpath(root, self._fp)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1a5427e58ebb81e58b245ac97960d670" name="a1a5427e58ebb81e58b245ac97960d670"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a5427e58ebb81e58b245ac97960d670">&#9670;&#160;</a></span>_data</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._data = self.init_config()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="accfbfe0072f8f2c4fe643de4173e1a17" name="accfbfe0072f8f2c4fe643de4173e1a17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accfbfe0072f8f2c4fe643de4173e1a17">&#9670;&#160;</a></span>_fp</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config._fp = &quot;config.json&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abd1caead108725ffe2edd4a1b7b8ab86" name="abd1caead108725ffe2edd4a1b7b8ab86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1caead108725ffe2edd4a1b7b8ab86">&#9670;&#160;</a></span>allowed_hosts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.allowed_hosts</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= env.get(<span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>,</div>
<div class="line"> self._data[<span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>])</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5d56701f2b82080734daf59680e3c430" name="a5d56701f2b82080734daf59680e3c430"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d56701f2b82080734daf59680e3c430">&#9670;&#160;</a></span>auto_scan</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool src.backend.lib.config.Config.auto_scan = True</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a73eef160e0fbb7d27b35af88f9a08e3b" name="a73eef160e0fbb7d27b35af88f9a08e3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73eef160e0fbb7d27b35af88f9a08e3b">&#9670;&#160;</a></span>book_path</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.book_path = env.get(&quot;BOOKPATH&quot;, self._data[&quot;BOOKPATH&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a32df23365f00a8014d8bafd797da06d0" name="a32df23365f00a8014d8bafd797da06d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32df23365f00a8014d8bafd797da06d0">&#9670;&#160;</a></span>book_shelf</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.book_shelf = env.get(&quot;BOOKSHELF&quot;, self._data[&quot;BOOKSHELF&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a38798edf816107e93a2115fb6622926d" name="a38798edf816107e93a2115fb6622926d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38798edf816107e93a2115fb6622926d">&#9670;&#160;</a></span>build_mode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.build_mode = env.get(&quot;BUILD_MODE&quot;, self._data[&quot;BUILD_MODE&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae24163ce536b9b86d2020cd00e04d096" name="ae24163ce536b9b86d2020cd00e04d096"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae24163ce536b9b86d2020cd00e04d096">&#9670;&#160;</a></span>catalogue_db</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.catalogue_db = env.get(&quot;DATABASE&quot;, self._data[&quot;DATABASE&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6bb47776af2fce4bd65c2c2b4eac5586" name="a6bb47776af2fce4bd65c2c2b4eac5586"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bb47776af2fce4bd65c2c2b4eac5586">&#9670;&#160;</a></span>config_structure</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.config_structure</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&quot;TITLE&quot;</span>: <span class="stringliteral">&quot;pyShelf E-Book Server&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;VERSION&quot;</span>: <span class="stringliteral">&quot;0.7.0&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;BOOKPATH&quot;</span>: <span class="stringliteral">&quot;/mnt/books&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_HOST&quot;</span>: <span class="stringliteral">&quot;localhost&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_PORT&quot;</span>: <span class="stringliteral">&quot;5432&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DB_ENGINE&quot;</span>: <span class="stringliteral">&quot;sqlite&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;DATABASE&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;USER&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;PASSWORD&quot;</span>: <span class="stringliteral">&quot;pyshelf&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;BOOKSHELF&quot;</span>: <span class="stringliteral">&quot;data/shelf.json&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;ALLOWED_HOSTS&quot;</span>: [</div>
<div class="line"> <span class="stringliteral">&quot;localhost&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;127.0.0.1&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;[::1]&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;0.0.0.0&quot;</span></div>
<div class="line"> ],</div>
<div class="line"> <span class="stringliteral">&quot;BUILD_MODE&quot;</span>: <span class="stringliteral">&quot;development&quot;</span></div>
<div class="line"> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a2d85b28b78de56b9c0233f6f4ab3062c" name="a2d85b28b78de56b9c0233f6f4ab3062c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d85b28b78de56b9c0233f6f4ab3062c">&#9670;&#160;</a></span>db_engine</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_engine = env.get(&quot;DB_ENGINE&quot;, self._data[&quot;DB_ENGINE&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa119c468373043e4c74783c224b5a79e" name="aa119c468373043e4c74783c224b5a79e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa119c468373043e4c74783c224b5a79e">&#9670;&#160;</a></span>db_host</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_host = env.get(&quot;DB_HOST&quot;, self._data[&quot;DB_HOST&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a15420665376e4aab800b46e9785a5a95" name="a15420665376e4aab800b46e9785a5a95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15420665376e4aab800b46e9785a5a95">&#9670;&#160;</a></span>db_pass</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_pass = env.get(&quot;PASSWORD&quot;, self._data[&quot;PASSWORD&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa859d999451eba07b8d0885665925a7e" name="aa859d999451eba07b8d0885665925a7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa859d999451eba07b8d0885665925a7e">&#9670;&#160;</a></span>db_port</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_port = env.get(&quot;DB_PORT&quot;, self._data[&quot;DB_PORT&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a088b23bf4d560c3e29bc63ac2d97bb22" name="a088b23bf4d560c3e29bc63ac2d97bb22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a088b23bf4d560c3e29bc63ac2d97bb22">&#9670;&#160;</a></span>db_user</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.db_user = env.get(&quot;USER&quot;, self._data[&quot;USER&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a036328bdcfae6df7b8876223938ecf8b" name="a036328bdcfae6df7b8876223938ecf8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a036328bdcfae6df7b8876223938ecf8b">&#9670;&#160;</a></span>file_array</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list src.backend.lib.config.Config.file_array = [self.book_shelf]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7dad8f79402b8cef8064937a820fb7a3" name="a7dad8f79402b8cef8064937a820fb7a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dad8f79402b8cef8064937a820fb7a3">&#9670;&#160;</a></span>logger</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.logger = self.get_logger()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a301b1324af2ae076e8782fcea79cd7f9" name="a301b1324af2ae076e8782fcea79cd7f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a301b1324af2ae076e8782fcea79cd7f9">&#9670;&#160;</a></span>password</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.password = self._data[&quot;PASSWORD&quot;]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a905c0db0851be868400284fa30e79e96" name="a905c0db0851be868400284fa30e79e96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a905c0db0851be868400284fa30e79e96">&#9670;&#160;</a></span>root</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.root = root</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a018e12d98de44bc319c4bdfbfc113cb8" name="a018e12d98de44bc319c4bdfbfc113cb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a018e12d98de44bc319c4bdfbfc113cb8">&#9670;&#160;</a></span>TITLE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str src.backend.lib.config.Config.TITLE = env.get(&quot;TITLE&quot;, self._data[&quot;TITLE&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a672d2e335f4f85f64b0416f5886b282f" name="a672d2e335f4f85f64b0416f5886b282f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a672d2e335f4f85f64b0416f5886b282f">&#9670;&#160;</a></span>user</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.user = self._data[&quot;USER&quot;]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a60406233a916d5bc4c26f178081b811d" name="a60406233a916d5bc4c26f178081b811d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60406233a916d5bc4c26f178081b811d">&#9670;&#160;</a></span>VERSION</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.config.Config.VERSION = env.get(&quot;VERSION&quot;, self._data[&quot;VERSION&quot;])</td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

View File

@@ -0,0 +1,81 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">User</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.models.User Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>date_joined</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>email</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>id</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>is_active</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_admin</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>is_superuser</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>last_login</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>password</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>username</b> (defined in <a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a>)</td><td class="entry"><a class="el" href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">src.backend.lib.models.User</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,111 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: DataHooks.BookInterface 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../d7/df9/namespaceDataHooks.html">DataHooks</a></li><li class="navelem"><a href="../../d9/d71/classDataHooks_1_1BookInterface.html">BookInterface</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d4/d71/classDataHooks_1_1BookInterface-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">DataHooks.BookInterface Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a251d0c0e0c5ea8fd69c926deccb1aca9" id="r_a251d0c0e0c5ea8fd69c926deccb1aca9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a251d0c0e0c5ea8fd69c926deccb1aca9">config</a> = config</td></tr>
<tr class="memitem:aac0cb01cb674ab8b4fccaf7041af0be3" id="r_aac0cb01cb674ab8b4fccaf7041af0be3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aac0cb01cb674ab8b4fccaf7041af0be3">db</a> = <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a>(self.config)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Access point for book database.</pre> </div><a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a251d0c0e0c5ea8fd69c926deccb1aca9" name="a251d0c0e0c5ea8fd69c926deccb1aca9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a251d0c0e0c5ea8fd69c926deccb1aca9">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DataHooks.BookInterface.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aac0cb01cb674ab8b4fccaf7041af0be3" name="aac0cb01cb674ab8b4fccaf7041af0be3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac0cb01cb674ab8b4fccaf7041af0be3">&#9670;&#160;</a></span>db</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DataHooks.BookInterface.db = <a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a>(self.config)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/frontend/lib/<a class="el" href="">DataHooks.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>overide</b></li><li class="navelem"><a href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">ACatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.overide.ACatalogue Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">src.backend.lib.overide.ACatalogue</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="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">src.backend.lib.overide.ACatalogue</a>)</td><td class="entry"><a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">src.backend.lib.overide.ACatalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><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>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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">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" class="odd"><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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">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#a3d5c8a0511da4ea483144e5727e79410">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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">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#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</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="odd"><td class="entry"><b>extract_metadata_mobi</b>(self, book) (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#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</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="odd"><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="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1">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="odd"><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="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1">import_books</a>(self, **kwargs)</td><td class="entry"><a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">src.backend.lib.overide.ACatalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><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#a810b9e2aefcf334097739d33843357d8">process_by_filetype</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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">process_epub</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 class="odd"><td class="entry"><a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4">scan_folder</a>(self, _path=None)</td><td class="entry"><a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">src.backend.lib.overide.ACatalogue</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stripTags</b>(source) (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"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>title_sanitization_dirs_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>title_sanitization_lvl2_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="odd"><td class="entry"><b>title_sanitization_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>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,127 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html">InitFiles</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a77c7895f4a1f47a7b85e1bcc02d04aa0" id="r_a77c7895f4a1f47a7b85e1bcc02d04aa0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a77c7895f4a1f47a7b85e1bcc02d04aa0">__init__</a> (self, file_array)</td></tr>
<tr class="memitem:ab720d320fdedf78bcc4fb51dd357813c" id="r_ab720d320fdedf78bcc4fb51dd357813c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab720d320fdedf78bcc4fb51dd357813c">CreateFile</a> (self, _pointer)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">First run file creation operations</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a77c7895f4a1f47a7b85e1bcc02d04aa0" name="a77c7895f4a1f47a7b85e1bcc02d04aa0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77c7895f4a1f47a7b85e1bcc02d04aa0">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.InitFiles.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>file_array</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="ab720d320fdedf78bcc4fb51dd357813c" name="ab720d320fdedf78bcc4fb51dd357813c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab720d320fdedf78bcc4fb51dd357813c">&#9670;&#160;</a></span>CreateFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.pyShelf.InitFiles.CreateFile </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_pointer</em></span>&#160;)</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">Book</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.models.Book Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>author</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>book_collections</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>categories</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>cover</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>date</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>description</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>file_name</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>id</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>identifier</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>pages</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>progress</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>publisher</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rights</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>tags</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>title</b> (defined in <a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a>)</td><td class="entry"><a class="el" href="../../d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html">src.backend.lib.models.Book</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,92 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html">storage</a></li><li class="navelem"><a href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 class="even"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9">__init__</a>(self, config)</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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd">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>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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6">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" class="even"><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="odd"><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 bgcolor="#f0f0f0" class="even"><td class="entry"><b>engine</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="odd"><td class="entry"><b>fuzzy_search_books</b>(self, str query, int limit=30) (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#a8405c7e41009cd67dd9e0029a6dc61a0">get_book</a>(self, id)</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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950">get_books</a>(self, collection=None, skip=None, limit=None)</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#ae05823894dc6af9f3ef4b44e38526dbc">get_collection</a>(self, name)</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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b">get_collections</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#a803ef3a255fa00ee9279bb9cefc571f6">get_connection_string</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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670">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 class="even"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1">make_collections</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="odd"><td class="entry"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310">parse_advanced_query</a>(self, str query)</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#ad0b3176f728194703910695cbaef9adb">parse_collections_from_path</a>(self, dict() 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="odd"><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" class="even"><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="odd"><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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,348 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: FastAPIServer Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">FastAPIServer Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:FastAPIServer" id="r_FastAPIServer"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a189ba023c861b3e00b9432b679e6a0aa" id="r_a189ba023c861b3e00b9432b679e6a0aa"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a189ba023c861b3e00b9432b679e6a0aa">base64decode</a> (string)</td></tr>
<tr class="memitem:a6c2e0cf336fd48a0b3d068c891da5f96" id="r_a6c2e0cf336fd48a0b3d068c891da5f96"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c2e0cf336fd48a0b3d068c891da5f96">summarize</a> (string)</td></tr>
<tr class="memitem:af26d1833d1dd63e3e5be68fb617ca71c" id="r_af26d1833d1dd63e3e5be68fb617ca71c"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af26d1833d1dd63e3e5be68fb617ca71c">convertDateTime</a> (datetime timestamp)</td></tr>
<tr class="memitem:aa75759d299983913ba15f5198435606a" id="r_aa75759d299983913ba15f5198435606a"><td class="memItemLeft" align="right" valign="top">dumps&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa75759d299983913ba15f5198435606a">books_tojson</a> (obj)</td></tr>
<tr class="memitem:a57dbe9eeedbc1c135d3d81cda6dceab0" id="r_a57dbe9eeedbc1c135d3d81cda6dceab0"><td class="memItemLeft" align="right" valign="top">dumps&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a57dbe9eeedbc1c135d3d81cda6dceab0">book_tojson</a> (book)</td></tr>
<tr class="memitem:ad7c1c5a530123ff79e3c843e47e64d96" id="r_ad7c1c5a530123ff79e3c843e47e64d96"><td class="memItemLeft" align="right" valign="top">dumps&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad7c1c5a530123ff79e3c843e47e64d96">tojson</a> (obj)</td></tr>
<tr class="memitem:a919f0a47c4009492ae493f74e22b9e08" id="r_a919f0a47c4009492ae493f74e22b9e08"><td class="memItemLeft" align="right" valign="top">dumps&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a919f0a47c4009492ae493f74e22b9e08">collections_tojson</a> (collection)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-var-members" class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:afc0c0044e5d9ca83af2b14c1cac1dfdc" id="r_afc0c0044e5d9ca83af2b14c1cac1dfdc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afc0c0044e5d9ca83af2b14c1cac1dfdc">app</a> = FastAPI()</td></tr>
<tr class="memitem:ae2f63a755260981be234c2d1472bd09b" id="r_ae2f63a755260981be234c2d1472bd09b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae2f63a755260981be234c2d1472bd09b">STATIC_DIR</a></td></tr>
<tr class="memitem:a5a4faf68ba93d623caa5ca6fdf1c8b12" id="r_a5a4faf68ba93d623caa5ca6fdf1c8b12"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5a4faf68ba93d623caa5ca6fdf1c8b12">TEMPLATES_DIR</a></td></tr>
<tr class="memitem:a59ea89ec1495e8636f4eebfdba75a8d5" id="r_a59ea89ec1495e8636f4eebfdba75a8d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a59ea89ec1495e8636f4eebfdba75a8d5">templates</a> = Jinja2Templates(directory=str(TEMPLATES_DIR))</td></tr>
<tr class="memitem:acb12210ce4f34323b1783e1a6355bfd7" id="r_acb12210ce4f34323b1783e1a6355bfd7"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acb12210ce4f34323b1783e1a6355bfd7">origins</a></td></tr>
<tr class="memitem:a433121562590580d950da7c417465c32" id="r_a433121562590580d950da7c417465c32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a433121562590580d950da7c417465c32">allow_origins</a></td></tr>
<tr class="memitem:a9c556edf871cefe9cc22d5c67f5c44ab" id="r_a9c556edf871cefe9cc22d5c67f5c44ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c556edf871cefe9cc22d5c67f5c44ab">allow_credentials</a></td></tr>
<tr class="memitem:ad81f93623ca5c26602052eff402f436e" id="r_ad81f93623ca5c26602052eff402f436e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad81f93623ca5c26602052eff402f436e">allow_methods</a></td></tr>
<tr class="memitem:a3591a8323b713f28ebe70e1652d607d0" id="r_a3591a8323b713f28ebe70e1652d607d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3591a8323b713f28ebe70e1652d607d0">allow_headers</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">pyShelf's main frontend library.</pre> </div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="a189ba023c861b3e00b9432b679e6a0aa" name="a189ba023c861b3e00b9432b679e6a0aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a189ba023c861b3e00b9432b679e6a0aa">&#9670;&#160;</a></span>base64decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> str FastAPIServer.base64decode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>string</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Decode a base64 string.</pre>
</div>
</div>
<a id="a57dbe9eeedbc1c135d3d81cda6dceab0" name="a57dbe9eeedbc1c135d3d81cda6dceab0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57dbe9eeedbc1c135d3d81cda6dceab0">&#9670;&#160;</a></span>book_tojson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> dumps FastAPIServer.book_tojson </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Convert a book object to a json.</pre>
</div>
</div>
<a id="aa75759d299983913ba15f5198435606a" name="aa75759d299983913ba15f5198435606a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa75759d299983913ba15f5198435606a">&#9670;&#160;</a></span>books_tojson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> dumps FastAPIServer.books_tojson </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>obj</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Convert an object to a dictionary.</pre>
</div>
</div>
<a id="a919f0a47c4009492ae493f74e22b9e08" name="a919f0a47c4009492ae493f74e22b9e08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a919f0a47c4009492ae493f74e22b9e08">&#9670;&#160;</a></span>collections_tojson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> dumps FastAPIServer.collections_tojson </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>collection</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Convert a collections object to json.</pre>
</div>
</div>
<a id="af26d1833d1dd63e3e5be68fb617ca71c" name="af26d1833d1dd63e3e5be68fb617ca71c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af26d1833d1dd63e3e5be68fb617ca71c">&#9670;&#160;</a></span>convertDateTime()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> str FastAPIServer.convertDateTime </td>
<td>(</td>
<td class="paramtype">datetime</td> <td class="paramname"><span class="paramname"><em>timestamp</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Convert a datetime object to a string.</pre>
</div>
</div>
<a id="a6c2e0cf336fd48a0b3d068c891da5f96" name="a6c2e0cf336fd48a0b3d068c891da5f96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c2e0cf336fd48a0b3d068c891da5f96">&#9670;&#160;</a></span>summarize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> str FastAPIServer.summarize </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>string</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Summarize a string.</pre>
</div>
</div>
<a id="ad7c1c5a530123ff79e3c843e47e64d96" name="ad7c1c5a530123ff79e3c843e47e64d96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7c1c5a530123ff79e3c843e47e64d96">&#9670;&#160;</a></span>tojson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> dumps FastAPIServer.tojson </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>obj</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-var-members" id="doc-var-members"></a><h2 id="header-doc-var-members" class="groupheader">Variable Documentation</h2>
<a id="a9c556edf871cefe9cc22d5c67f5c44ab" name="a9c556edf871cefe9cc22d5c67f5c44ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c556edf871cefe9cc22d5c67f5c44ab">&#9670;&#160;</a></span>allow_credentials</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.allow_credentials</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3591a8323b713f28ebe70e1652d607d0" name="a3591a8323b713f28ebe70e1652d607d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3591a8323b713f28ebe70e1652d607d0">&#9670;&#160;</a></span>allow_headers</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.allow_headers</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad81f93623ca5c26602052eff402f436e" name="ad81f93623ca5c26602052eff402f436e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad81f93623ca5c26602052eff402f436e">&#9670;&#160;</a></span>allow_methods</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.allow_methods</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a433121562590580d950da7c417465c32" name="a433121562590580d950da7c417465c32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a433121562590580d950da7c417465c32">&#9670;&#160;</a></span>allow_origins</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.allow_origins</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afc0c0044e5d9ca83af2b14c1cac1dfdc" name="afc0c0044e5d9ca83af2b14c1cac1dfdc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc0c0044e5d9ca83af2b14c1cac1dfdc">&#9670;&#160;</a></span>app</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.app = FastAPI()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acb12210ce4f34323b1783e1a6355bfd7" name="acb12210ce4f34323b1783e1a6355bfd7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb12210ce4f34323b1783e1a6355bfd7">&#9670;&#160;</a></span>origins</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list FastAPIServer.origins</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line"><span class="lineno"> 1</span>= [</div>
<div class="line"><span class="lineno"> 2</span> <span class="stringliteral">&quot;http://localhost&quot;</span>,</div>
<div class="line"><span class="lineno"> 3</span> <span class="stringliteral">&quot;http://localhost:8081&quot;</span>,</div>
<div class="line"><span class="lineno"> 4</span> <span class="stringliteral">&quot;http://localhost:8080&quot;</span>,</div>
<div class="line"><span class="lineno"> 5</span> <span class="stringliteral">&quot;*&quot;</span></div>
<div class="line"><span class="lineno"> 6</span>]</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae2f63a755260981be234c2d1472bd09b" name="ae2f63a755260981be234c2d1472bd09b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2f63a755260981be234c2d1472bd09b">&#9670;&#160;</a></span>STATIC_DIR</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.STATIC_DIR</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a59ea89ec1495e8636f4eebfdba75a8d5" name="a59ea89ec1495e8636f4eebfdba75a8d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59ea89ec1495e8636f4eebfdba75a8d5">&#9670;&#160;</a></span>templates</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.templates = Jinja2Templates(directory=str(TEMPLATES_DIR))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5a4faf68ba93d623caa5ca6fdf1c8b12" name="a5a4faf68ba93d623caa5ca6fdf1c8b12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a4faf68ba93d623caa5ca6fdf1c8b12">&#9670;&#160;</a></span>TEMPLATES_DIR</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.TEMPLATES_DIR</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,825 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 class="dynheader">
Inheritance diagram for src.backend.tests.library_test.Test_Catalogue:</div>
<div class="dyncontent">
<div class="center">
<img src="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png" usemap="#src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_5FCatalogue_map" alt=""/>
<map id="src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_5FCatalogue_map" name="src_2Ebackend_2Etests_2Elibrary_5Ftest_2ETest_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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a59243e6aa0038cd6a979426c6b49b2a0" id="r_a59243e6aa0038cd6a979426c6b49b2a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a59243e6aa0038cd6a979426c6b49b2a0">__init__</a> (self)</td></tr>
<tr class="memitem:ae2b7fabba01cd5760936bf16ebec0451" id="r_ae2b7fabba01cd5760936bf16ebec0451"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae2b7fabba01cd5760936bf16ebec0451">filter_books</a> (self)</td></tr>
<tr class="memitem:a8e1422c1f6b599d2de6e5b06a61448ca" id="r_a8e1422c1f6b599d2de6e5b06a61448ca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca">scan_folder</a> (self, _path=None)</td></tr>
<tr class="memitem:a810b9e2aefcf334097739d33843357d8" id="r_a810b9e2aefcf334097739d33843357d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8">process_by_filetype</a> (self, book)</td></tr>
<tr class="memitem:aa29d30100b7e982f342c175b68557712" id="r_aa29d30100b7e982f342c175b68557712"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</a> (self, book)</td></tr>
<tr class="memitem:a4ef439e312f2e61078a0be893705bd14" id="r_a4ef439e312f2e61078a0be893705bd14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</a> (self, book)</td></tr>
<tr class="memitem:a4c3eabcee27a7ff001c5f2397d194c50" id="r_a4c3eabcee27a7ff001c5f2397d194c50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c3eabcee27a7ff001c5f2397d194c50">extract_metadata_mobi</a> (self, book)</td></tr>
<tr class="memitem:abe2b5fdefbfa42c87466f58f4bc1677f" id="r_abe2b5fdefbfa42c87466f58f4bc1677f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a3d5c8a0511da4ea483144e5727e79410" id="r_a3d5c8a0511da4ea483144e5727e79410"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a0c8a4afbea35f47630b9d826327de8ce" id="r_a0c8a4afbea35f47630b9d826327de8ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a5de9590a9bf52af4747544e706ef32af" id="r_a5de9590a9bf52af4747544e706ef32af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">compare_shelf_current</a> (self)</td></tr>
<tr class="memitem:ac535eff50b4577d1d7b7b7433fee0e34" id="r_ac535eff50b4577d1d7b7b7433fee0e34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34">import_books</a> (self, list=None, **kwargs)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-methods" class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a9e91ca706de4d548d567d92cbc525f5e" id="r_a9e91ca706de4d548d567d92cbc525f5e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">process_epub</a> (book)</td></tr>
<tr class="memitem:ad23addfc27076a3cdad719d549011ea5" id="r_ad23addfc27076a3cdad719d549011ea5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad23addfc27076a3cdad719d549011ea5">stripTags</a> (source)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a814cde5881c2c28992ed8c9c3330bdf4" id="r_a814cde5881c2c28992ed8c9c3330bdf4"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a814cde5881c2c28992ed8c9c3330bdf4">book_shelf</a> = &quot;app/&quot; + self.book_shelf</td></tr>
<tr class="memitem:a93d7bdaff2d95e85713d1506c9a2d250" id="r_a93d7bdaff2d95e85713d1506c9a2d250"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a93d7bdaff2d95e85713d1506c9a2d250">file_list</a> = []</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75" id="r_a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a2026c090be4f55cfe941d16a01b4ea75">opf_regx</a> = re.compile(r&quot;\.opf&quot;)</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204" id="r_a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a576649115ba3717c475d60eae96f6204">cover_regx</a> = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8" id="r_a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a686b224643b060423a49a017d4a7abd8">html_regx</a> = re.compile(r&quot;\.html&quot;)</td></tr>
<tr class="memitem:a8fa7021f8b131c35c0a1d1179b003383" id="r_a8fa7021f8b131c35c0a1d1179b003383"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8fa7021f8b131c35c0a1d1179b003383">title_sanitization_regx</a> = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td></tr>
<tr class="memitem:ad8ad8ef5c7ea417050d4dd84046d3234" id="r_ad8ad8ef5c7ea417050d4dd84046d3234"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad8ad8ef5c7ea417050d4dd84046d3234">title_sanitization_lvl2_regx</a></td></tr>
<tr class="memitem:ab68843b8153b9e8ba51d0a4fa541568e" id="r_ab68843b8153b9e8ba51d0a4fa541568e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ab68843b8153b9e8ba51d0a4fa541568e">title_sanitization_dirs_regx</a> = re.compile(r&quot;/&quot;)</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023" id="r_a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3e5edca4ab942e3f71958c90b5c45023">root_dir</a> = config.root</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce" id="r_a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a340d869b8f7c16007773de40a24005ce">book_folder</a> = config.book_path</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36" id="r_a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1129571b5c1a358e71d125cc47f9bf36">books</a> = None</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a" id="r_acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acd6cb62aae1221ee590734b70f76888a">db_pointer</a> = config.catalogue_db</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9" id="r_afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#afb43be37337c74fc1bfe1415ded423f9">config</a> = config</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"></div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a59243e6aa0038cd6a979426c6b49b2a0" name="a59243e6aa0038cd6a979426c6b49b2a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59243e6aa0038cd6a979426c6b49b2a0">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.Test_Catalogue.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a5de9590a9bf52af4747544e706ef32af" name="a5de9590a9bf52af4747544e706ef32af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5de9590a9bf52af4747544e706ef32af">&#9670;&#160;</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">src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="abe2b5fdefbfa42c87466f58f4bc1677f" name="abe2b5fdefbfa42c87466f58f4bc1677f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe2b5fdefbfa42c87466f58f4bc1677f">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="a3d5c8a0511da4ea483144e5727e79410" name="a3d5c8a0511da4ea483144e5727e79410"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d5c8a0511da4ea483144e5727e79410">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="a0c8a4afbea35f47630b9d826327de8ce" name="a0c8a4afbea35f47630b9d826327de8ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c8a4afbea35f47630b9d826327de8ce">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="aa29d30100b7e982f342c175b68557712" name="aa29d30100b7e982f342c175b68557712"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa29d30100b7e982f342c175b68557712">&#9670;&#160;</a></span>extract_metadata_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Extract metadata from epub file
:param book: Dictionary of epub file contents
:returns: Dictionary of book metadata
</pre>
</div>
</div>
<a id="a4c3eabcee27a7ff001c5f2397d194c50" name="a4c3eabcee27a7ff001c5f2397d194c50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c3eabcee27a7ff001c5f2397d194c50">&#9670;&#160;</a></span>extract_metadata_mobi()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_mobi </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ef439e312f2e61078a0be893705bd14" name="a4ef439e312f2e61078a0be893705bd14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ef439e312f2e61078a0be893705bd14">&#9670;&#160;</a></span>extract_metadata_pdf()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_pdf </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata
:NOTES: Retrieval of data has been problematic, some pdf's providing
reliable titles that corespond with the actual, and others being
nonsense.
</pre>
</div>
</div>
<a id="ae2b7fabba01cd5760936bf16ebec0451" name="ae2b7fabba01cd5760936bf16ebec0451"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2b7fabba01cd5760936bf16ebec0451">&#9670;&#160;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.library_test.Test_Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files.
: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#acdbfa5941ac442ba78e9b99ed024f1e1">src.backend.lib.library.Catalogue</a>.</p>
</div>
</div>
<a id="ac535eff50b4577d1d7b7b7433fee0e34" name="ac535eff50b4577d1d7b7b7433fee0e34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac535eff50b4577d1d7b7b7433fee0e34">&#9670;&#160;</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">src.backend.lib.library.Catalogue.import_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>list</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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>
<p>Reimplemented in <a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1">src.backend.lib.overide.ACatalogue</a>.</p>
</div>
</div>
<a id="a810b9e2aefcf334097739d33843357d8" name="a810b9e2aefcf334097739d33843357d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a810b9e2aefcf334097739d33843357d8">&#9670;&#160;</a></span>process_by_filetype()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_by_filetype </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Determine books filetype and process.</pre>
</div>
</div>
<a id="a9e91ca706de4d548d567d92cbc525f5e" name="a9e91ca706de4d548d567d92cbc525f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e91ca706de4d548d567d92cbc525f5e">&#9670;&#160;</a></span>process_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a8e1422c1f6b599d2de6e5b06a61448ca" name="a8e1422c1f6b599d2de6e5b06a61448ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e1422c1f6b599d2de6e5b06a61448ca">&#9670;&#160;</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">src.backend.lib.library.Catalogue.scan_folder </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_path</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
:param _path: Path to scan
</pre>
<p>Reimplemented in <a class="el" href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4">src.backend.lib.overide.ACatalogue</a>.</p>
</div>
</div>
<a id="ad23addfc27076a3cdad719d549011ea5" name="ad23addfc27076a3cdad719d549011ea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad23addfc27076a3cdad719d549011ea5">&#9670;&#160;</a></span>stripTags()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.stripTags </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>source</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a340d869b8f7c16007773de40a24005ce" name="a340d869b8f7c16007773de40a24005ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a340d869b8f7c16007773de40a24005ce">&#9670;&#160;</a></span>book_folder</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.book_folder = config.book_path</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a814cde5881c2c28992ed8c9c3330bdf4" name="a814cde5881c2c28992ed8c9c3330bdf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a814cde5881c2c28992ed8c9c3330bdf4">&#9670;&#160;</a></span>book_shelf</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str src.backend.tests.library_test.Test_Catalogue.book_shelf = &quot;app/&quot; + self.book_shelf</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1129571b5c1a358e71d125cc47f9bf36" name="a1129571b5c1a358e71d125cc47f9bf36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1129571b5c1a358e71d125cc47f9bf36">&#9670;&#160;</a></span>books</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.books = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb43be37337c74fc1bfe1415ded423f9" name="afb43be37337c74fc1bfe1415ded423f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb43be37337c74fc1bfe1415ded423f9">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.config = config</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a576649115ba3717c475d60eae96f6204" name="a576649115ba3717c475d60eae96f6204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a576649115ba3717c475d60eae96f6204">&#9670;&#160;</a></span>cover_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.cover_regx = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acd6cb62aae1221ee590734b70f76888a" name="acd6cb62aae1221ee590734b70f76888a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd6cb62aae1221ee590734b70f76888a">&#9670;&#160;</a></span>db_pointer</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a93d7bdaff2d95e85713d1506c9a2d250" name="a93d7bdaff2d95e85713d1506c9a2d250"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d7bdaff2d95e85713d1506c9a2d250">&#9670;&#160;</a></span>file_list</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list src.backend.lib.library.Catalogue.file_list = []</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a686b224643b060423a49a017d4a7abd8" name="a686b224643b060423a49a017d4a7abd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a686b224643b060423a49a017d4a7abd8">&#9670;&#160;</a></span>html_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.html_regx = re.compile(r&quot;\.html&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2026c090be4f55cfe941d16a01b4ea75" name="a2026c090be4f55cfe941d16a01b4ea75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2026c090be4f55cfe941d16a01b4ea75">&#9670;&#160;</a></span>opf_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.opf_regx = re.compile(r&quot;\.opf&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3e5edca4ab942e3f71958c90b5c45023" name="a3e5edca4ab942e3f71958c90b5c45023"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e5edca4ab942e3f71958c90b5c45023">&#9670;&#160;</a></span>root_dir</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.root_dir = config.root</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab68843b8153b9e8ba51d0a4fa541568e" name="ab68843b8153b9e8ba51d0a4fa541568e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab68843b8153b9e8ba51d0a4fa541568e">&#9670;&#160;</a></span>title_sanitization_dirs_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r&quot;/&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad8ad8ef5c7ea417050d4dd84046d3234" name="ad8ad8ef5c7ea417050d4dd84046d3234"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8ad8ef5c7ea417050d4dd84046d3234">&#9670;&#160;</a></span>title_sanitization_lvl2_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= re.compile(</div>
<div class="line"> <span class="stringliteral">r&quot;^(Book )+[0-9]*\W+(-)&quot;</span>)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8fa7021f8b131c35c0a1d1179b003383" name="a8fa7021f8b131c35c0a1d1179b003383"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fa7021f8b131c35c0a1d1179b003383">&#9670;&#160;</a></span>title_sanitization_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

View File

@@ -0,0 +1,99 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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" class="odd"><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="../../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="odd"><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#a5de9590a9bf52af4747544e706ef32af">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="odd"><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" class="odd"><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#abe2b5fdefbfa42c87466f58f4bc1677f">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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410">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#a0c8a4afbea35f47630b9d826327de8ce">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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</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>extract_metadata_mobi</b>(self, book) (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="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</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 class="odd"><td class="entry"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451">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" 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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34">import_books</a>(self, list=None, **kwargs)</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 class="odd"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8">process_by_filetype</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 class="even"><td class="entry"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">process_epub</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="odd"><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#a8e1422c1f6b599d2de6e5b06a61448ca">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>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>stripTags</b>(source) (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"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>title_sanitization_dirs_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="odd"><td class="entry"><b>title_sanitization_lvl2_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>title_sanitization_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>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,795 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.overide.ACatalogue 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>overide</b></li><li class="navelem"><a href="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html">ACatalogue</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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="../../d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.overide.ACatalogue Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.overide.ACatalogue:</div>
<div class="dyncontent">
<div class="center">
<img src="../../dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png" usemap="#src_2Ebackend_2Elib_2Eoveride_2EACatalogue_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Eoveride_2EACatalogue_map" name="src_2Ebackend_2Elib_2Eoveride_2EACatalogue_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,216,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab4391842061070bcb85ff94037a85643" id="r_ab4391842061070bcb85ff94037a85643"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab4391842061070bcb85ff94037a85643">__init__</a> (self)</td></tr>
<tr class="memitem:a92b8a68d7ff658a04736ec14e8e89ff4" id="r_a92b8a68d7ff658a04736ec14e8e89ff4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a92b8a68d7ff658a04736ec14e8e89ff4">scan_folder</a> (self, _path=None)</td></tr>
<tr class="memitem:a1c1ca29905d293327433edd3590268c1" id="r_a1c1ca29905d293327433edd3590268c1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1c1ca29905d293327433edd3590268c1">import_books</a> (self, **kwargs)</td></tr>
<tr class="memitem:acdbfa5941ac442ba78e9b99ed024f1e1" id="r_acdbfa5941ac442ba78e9b99ed024f1e1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1">filter_books</a> (self)</td></tr>
<tr class="memitem:a810b9e2aefcf334097739d33843357d8" id="r_a810b9e2aefcf334097739d33843357d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8">process_by_filetype</a> (self, book)</td></tr>
<tr class="memitem:aa29d30100b7e982f342c175b68557712" id="r_aa29d30100b7e982f342c175b68557712"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712">extract_metadata_epub</a> (self, book)</td></tr>
<tr class="memitem:a4ef439e312f2e61078a0be893705bd14" id="r_a4ef439e312f2e61078a0be893705bd14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14">extract_metadata_pdf</a> (self, book)</td></tr>
<tr class="memitem:a4c3eabcee27a7ff001c5f2397d194c50" id="r_a4c3eabcee27a7ff001c5f2397d194c50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4c3eabcee27a7ff001c5f2397d194c50">extract_metadata_mobi</a> (self, book)</td></tr>
<tr class="memitem:abe2b5fdefbfa42c87466f58f4bc1677f" id="r_abe2b5fdefbfa42c87466f58f4bc1677f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a3d5c8a0511da4ea483144e5727e79410" id="r_a3d5c8a0511da4ea483144e5727e79410"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a0c8a4afbea35f47630b9d826327de8ce" id="r_a0c8a4afbea35f47630b9d826327de8ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="memitem:a5de9590a9bf52af4747544e706ef32af" id="r_a5de9590a9bf52af4747544e706ef32af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">compare_shelf_current</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-methods" class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a9e91ca706de4d548d567d92cbc525f5e" id="r_a9e91ca706de4d548d567d92cbc525f5e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">process_epub</a> (book)</td></tr>
<tr class="memitem:ad23addfc27076a3cdad719d549011ea5" id="r_ad23addfc27076a3cdad719d549011ea5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad23addfc27076a3cdad719d549011ea5">stripTags</a> (source)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a93d7bdaff2d95e85713d1506c9a2d250" id="r_a93d7bdaff2d95e85713d1506c9a2d250"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a93d7bdaff2d95e85713d1506c9a2d250">file_list</a> = []</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75" id="r_a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a2026c090be4f55cfe941d16a01b4ea75">opf_regx</a> = re.compile(r&quot;\.opf&quot;)</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204" id="r_a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a576649115ba3717c475d60eae96f6204">cover_regx</a> = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8" id="r_a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a686b224643b060423a49a017d4a7abd8">html_regx</a> = re.compile(r&quot;\.html&quot;)</td></tr>
<tr class="memitem:a8fa7021f8b131c35c0a1d1179b003383" id="r_a8fa7021f8b131c35c0a1d1179b003383"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8fa7021f8b131c35c0a1d1179b003383">title_sanitization_regx</a> = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td></tr>
<tr class="memitem:ad8ad8ef5c7ea417050d4dd84046d3234" id="r_ad8ad8ef5c7ea417050d4dd84046d3234"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ad8ad8ef5c7ea417050d4dd84046d3234">title_sanitization_lvl2_regx</a></td></tr>
<tr class="memitem:ab68843b8153b9e8ba51d0a4fa541568e" id="r_ab68843b8153b9e8ba51d0a4fa541568e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ab68843b8153b9e8ba51d0a4fa541568e">title_sanitization_dirs_regx</a> = re.compile(r&quot;/&quot;)</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023" id="r_a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3e5edca4ab942e3f71958c90b5c45023">root_dir</a> = config.root</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce" id="r_a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a340d869b8f7c16007773de40a24005ce">book_folder</a> = config.book_path</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36" id="r_a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a1129571b5c1a358e71d125cc47f9bf36">books</a> = None</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a" id="r_acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acd6cb62aae1221ee590734b70f76888a">db_pointer</a> = config.catalogue_db</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9" id="r_afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#afb43be37337c74fc1bfe1415ded423f9">config</a> = config</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Aynchronous overide of library.Catalogue,
: TODO : Complete or discard this overide
</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab4391842061070bcb85ff94037a85643" name="ab4391842061070bcb85ff94037a85643"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4391842061070bcb85ff94037a85643">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.overide.ACatalogue.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a5de9590a9bf52af4747544e706ef32af" name="a5de9590a9bf52af4747544e706ef32af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5de9590a9bf52af4747544e706ef32af">&#9670;&#160;</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">src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="abe2b5fdefbfa42c87466f58f4bc1677f" name="abe2b5fdefbfa42c87466f58f4bc1677f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe2b5fdefbfa42c87466f58f4bc1677f">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="a3d5c8a0511da4ea483144e5727e79410" name="a3d5c8a0511da4ea483144e5727e79410"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d5c8a0511da4ea483144e5727e79410">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="a0c8a4afbea35f47630b9d826327de8ce" name="a0c8a4afbea35f47630b9d826327de8ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c8a4afbea35f47630b9d826327de8ce">&#9670;&#160;</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">src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book_zip</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">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="aa29d30100b7e982f342c175b68557712" name="aa29d30100b7e982f342c175b68557712"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa29d30100b7e982f342c175b68557712">&#9670;&#160;</a></span>extract_metadata_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Extract metadata from epub file
:param book: Dictionary of epub file contents
:returns: Dictionary of book metadata
</pre>
</div>
</div>
<a id="a4c3eabcee27a7ff001c5f2397d194c50" name="a4c3eabcee27a7ff001c5f2397d194c50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c3eabcee27a7ff001c5f2397d194c50">&#9670;&#160;</a></span>extract_metadata_mobi()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_mobi </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ef439e312f2e61078a0be893705bd14" name="a4ef439e312f2e61078a0be893705bd14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ef439e312f2e61078a0be893705bd14">&#9670;&#160;</a></span>extract_metadata_pdf()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.extract_metadata_pdf </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata
:NOTES: Retrieval of data has been problematic, some pdf's providing
reliable titles that corespond with the actual, and others being
nonsense.
</pre>
</div>
</div>
<a id="acdbfa5941ac442ba78e9b99ed024f1e1" name="acdbfa5941ac442ba78e9b99ed024f1e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdbfa5941ac442ba78e9b99ed024f1e1">&#9670;&#160;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files.
: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#ae2b7fabba01cd5760936bf16ebec0451">src.backend.tests.library_test.Test_Catalogue</a>.</p>
</div>
</div>
<a id="a1c1ca29905d293327433edd3590268c1" name="a1c1ca29905d293327433edd3590268c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c1ca29905d293327433edd3590268c1">&#9670;&#160;</a></span>import_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.overide.ACatalogue.import_books </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Async overide of import_books
</pre>
<p>Reimplemented from <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34">src.backend.lib.library.Catalogue</a>.</p>
</div>
</div>
<a id="a810b9e2aefcf334097739d33843357d8" name="a810b9e2aefcf334097739d33843357d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a810b9e2aefcf334097739d33843357d8">&#9670;&#160;</a></span>process_by_filetype()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_by_filetype </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Determine books filetype and process.</pre>
</div>
</div>
<a id="a9e91ca706de4d548d567d92cbc525f5e" name="a9e91ca706de4d548d567d92cbc525f5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e91ca706de4d548d567d92cbc525f5e">&#9670;&#160;</a></span>process_epub()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.process_epub </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>book</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a92b8a68d7ff658a04736ec14e8e89ff4" name="a92b8a68d7ff658a04736ec14e8e89ff4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92b8a68d7ff658a04736ec14e8e89ff4">&#9670;&#160;</a></span>scan_folder()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.overide.ACatalogue.scan_folder </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>_path</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
</pre>
<p>Reimplemented from <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca">src.backend.lib.library.Catalogue</a>.</p>
</div>
</div>
<a id="ad23addfc27076a3cdad719d549011ea5" name="ad23addfc27076a3cdad719d549011ea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad23addfc27076a3cdad719d549011ea5">&#9670;&#160;</a></span>stripTags()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.stripTags </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>source</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a340d869b8f7c16007773de40a24005ce" name="a340d869b8f7c16007773de40a24005ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a340d869b8f7c16007773de40a24005ce">&#9670;&#160;</a></span>book_folder</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.book_folder = config.book_path</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1129571b5c1a358e71d125cc47f9bf36" name="a1129571b5c1a358e71d125cc47f9bf36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1129571b5c1a358e71d125cc47f9bf36">&#9670;&#160;</a></span>books</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.books = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afb43be37337c74fc1bfe1415ded423f9" name="afb43be37337c74fc1bfe1415ded423f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb43be37337c74fc1bfe1415ded423f9">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.config = config</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a576649115ba3717c475d60eae96f6204" name="a576649115ba3717c475d60eae96f6204"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a576649115ba3717c475d60eae96f6204">&#9670;&#160;</a></span>cover_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.cover_regx = re.compile(r&quot;\.jpg|\.jpeg|\.png|\.bmp|\.gif&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acd6cb62aae1221ee590734b70f76888a" name="acd6cb62aae1221ee590734b70f76888a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd6cb62aae1221ee590734b70f76888a">&#9670;&#160;</a></span>db_pointer</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a93d7bdaff2d95e85713d1506c9a2d250" name="a93d7bdaff2d95e85713d1506c9a2d250"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d7bdaff2d95e85713d1506c9a2d250">&#9670;&#160;</a></span>file_list</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list src.backend.lib.library.Catalogue.file_list = []</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a686b224643b060423a49a017d4a7abd8" name="a686b224643b060423a49a017d4a7abd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a686b224643b060423a49a017d4a7abd8">&#9670;&#160;</a></span>html_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.html_regx = re.compile(r&quot;\.html&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2026c090be4f55cfe941d16a01b4ea75" name="a2026c090be4f55cfe941d16a01b4ea75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2026c090be4f55cfe941d16a01b4ea75">&#9670;&#160;</a></span>opf_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.opf_regx = re.compile(r&quot;\.opf&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3e5edca4ab942e3f71958c90b5c45023" name="a3e5edca4ab942e3f71958c90b5c45023"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e5edca4ab942e3f71958c90b5c45023">&#9670;&#160;</a></span>root_dir</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.root_dir = config.root</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab68843b8153b9e8ba51d0a4fa541568e" name="ab68843b8153b9e8ba51d0a4fa541568e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab68843b8153b9e8ba51d0a4fa541568e">&#9670;&#160;</a></span>title_sanitization_dirs_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r&quot;/&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad8ad8ef5c7ea417050d4dd84046d3234" name="ad8ad8ef5c7ea417050d4dd84046d3234"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8ad8ef5c7ea417050d4dd84046d3234">&#9670;&#160;</a></span>title_sanitization_lvl2_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= re.compile(</div>
<div class="line"> <span class="stringliteral">r&quot;^(Book )+[0-9]*\W+(-)&quot;</span>)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8fa7021f8b131c35c0a1d1179b003383" name="a8fa7021f8b131c35c0a1d1179b003383"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fa7021f8b131c35c0a1d1179b003383">&#9670;&#160;</a></span>title_sanitization_regx</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r&quot;^(Book )+[0-9]*&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inherited">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">overide.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

View File

@@ -0,0 +1,404 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: FastAPIServer.FastAPIServer 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="../../db/dd5/namespaceFastAPIServer.html">FastAPIServer</a></li><li class="navelem"><a href="../../dd/d22/classFastAPIServer_1_1FastAPIServer.html">FastAPIServer</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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="../../d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">FastAPIServer.FastAPIServer Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:afe55a8838934eda4f70cb86bdfd91267" id="r_afe55a8838934eda4f70cb86bdfd91267"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afe55a8838934eda4f70cb86bdfd91267">__init__</a> (self, config)</td></tr>
<tr class="memitem:a81c4f1486cd79fa83429b70e79d32f26" id="r_a81c4f1486cd79fa83429b70e79d32f26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a81c4f1486cd79fa83429b70e79d32f26">compile_static_files</a> (self)</td></tr>
<tr class="memitem:ab6eb555c6de0af5a4efe2ce04882f6d8" id="r_ab6eb555c6de0af5a4efe2ce04882f6d8"><td class="memItemLeft" align="right" valign="top">None&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab6eb555c6de0af5a4efe2ce04882f6d8">use_route_names_as_operation_ids</a> (self, FastAPI app)</td></tr>
<tr class="memitem:a88c575a63e7dff1ba94f37a625d92bb8" id="r_a88c575a63e7dff1ba94f37a625d92bb8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a88c575a63e7dff1ba94f37a625d92bb8">index</a> (Request request, int skip=0, int limit=30)</td></tr>
<tr class="memitem:a858f284cd6e2c022061765f78321e114" id="r_a858f284cd6e2c022061765f78321e114"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a858f284cd6e2c022061765f78321e114">books</a> (Request request, int skip=0, int limit=10, <a class="el" href="#ae27b6ea06524516b22b088c2673978bb">collection</a>=None)</td></tr>
<tr class="memitem:a9b508ca4e31058a146383ca2b1fb7fd5" id="r_a9b508ca4e31058a146383ca2b1fb7fd5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b508ca4e31058a146383ca2b1fb7fd5">book</a> (Request request, int book_id)</td></tr>
<tr class="memitem:a9b508ca4e31058a146383ca2b1fb7fd5" id="r_a9b508ca4e31058a146383ca2b1fb7fd5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b508ca4e31058a146383ca2b1fb7fd5">book</a> (Request request, int book_id)</td></tr>
<tr class="memitem:ae4295f8bd8e825e8fdddf1023edee628" id="r_ae4295f8bd8e825e8fdddf1023edee628"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae4295f8bd8e825e8fdddf1023edee628">collections</a> (Request request)</td></tr>
<tr class="memitem:ae27b6ea06524516b22b088c2673978bb" id="r_ae27b6ea06524516b22b088c2673978bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae27b6ea06524516b22b088c2673978bb">collection</a> (Request request, str collection, int skip=0, int limit=30)</td></tr>
<tr class="memitem:a0f61420329b5c5f16ddf5e59532a37ce" id="r_a0f61420329b5c5f16ddf5e59532a37ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0f61420329b5c5f16ddf5e59532a37ce">search_books_api</a> (Request request, str search)</td></tr>
<tr class="memitem:ad255db51c639439a64cb009ca4b2d79b" id="r_ad255db51c639439a64cb009ca4b2d79b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad255db51c639439a64cb009ca4b2d79b">run</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-attribs" class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a2bcbd72b8e790a4318bf59d084ffef83" id="r_a2bcbd72b8e790a4318bf59d084ffef83"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2bcbd72b8e790a4318bf59d084ffef83">config</a> = config</td></tr>
<tr class="memitem:afae13eb07dfd6dfd589b2530906ee998" id="r_afae13eb07dfd6dfd589b2530906ee998"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afae13eb07dfd6dfd589b2530906ee998">fe_config</a></td></tr>
<tr class="memitem:a44c641886a2b1d17a13300aaf5743d9e" id="r_a44c641886a2b1d17a13300aaf5743d9e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a44c641886a2b1d17a13300aaf5743d9e">fe_server</a> = uvicorn.Server(self.fe_config)</td></tr>
<tr class="memitem:ae4e417e1d61633d0ae41b97c7a364b93" id="r_ae4e417e1d61633d0ae41b97c7a364b93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae4e417e1d61633d0ae41b97c7a364b93">JSInterface</a> = <a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a>(self.config)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Entry point for FastAPI server.</pre> </div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="afe55a8838934eda4f70cb86bdfd91267" name="afe55a8838934eda4f70cb86bdfd91267"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe55a8838934eda4f70cb86bdfd91267">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Initialize FastAPIServer object parameters.</pre>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a9b508ca4e31058a146383ca2b1fb7fd5" name="a9b508ca4e31058a146383ca2b1fb7fd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b508ca4e31058a146383ca2b1fb7fd5">&#9670;&#160;</a></span>book() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.book </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>book_id</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9b508ca4e31058a146383ca2b1fb7fd5" name="a9b508ca4e31058a146383ca2b1fb7fd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b508ca4e31058a146383ca2b1fb7fd5">&#9670;&#160;</a></span>book() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.book </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>book_id</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a858f284cd6e2c022061765f78321e114" name="a858f284cd6e2c022061765f78321e114"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a858f284cd6e2c022061765f78321e114">&#9670;&#160;</a></span>books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.books </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td> <td class="paramname"><span class="paramname"><em>skip</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td> <td class="paramname"><span class="paramname"><em>limit</em></span><span class="paramdefsep"> = </span><span class="paramdefval">10</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>collection</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae27b6ea06524516b22b088c2673978bb" name="ae27b6ea06524516b22b088c2673978bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae27b6ea06524516b22b088c2673978bb">&#9670;&#160;</a></span>collection()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.collection </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str</td> <td class="paramname"><span class="paramname"><em>collection</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>skip</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>limit</em></span><span class="paramdefsep"> = </span><span class="paramdefval">30</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Collection file responder.</pre>
</div>
</div>
<a id="ae4295f8bd8e825e8fdddf1023edee628" name="ae4295f8bd8e825e8fdddf1023edee628"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4295f8bd8e825e8fdddf1023edee628">&#9670;&#160;</a></span>collections()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.collections </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a81c4f1486cd79fa83429b70e79d32f26" name="a81c4f1486cd79fa83429b70e79d32f26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81c4f1486cd79fa83429b70e79d32f26">&#9670;&#160;</a></span>compile_static_files()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.compile_static_files </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Compile static files for web frontend.</pre>
</div>
</div>
<a id="a88c575a63e7dff1ba94f37a625d92bb8" name="a88c575a63e7dff1ba94f37a625d92bb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88c575a63e7dff1ba94f37a625d92bb8">&#9670;&#160;</a></span>index()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.index </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td> <td class="paramname"><span class="paramname"><em>skip</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td> <td class="paramname"><span class="paramname"><em>limit</em></span><span class="paramdefsep"> = </span><span class="paramdefval">30</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad255db51c639439a64cb009ca4b2d79b" name="ad255db51c639439a64cb009ca4b2d79b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad255db51c639439a64cb009ca4b2d79b">&#9670;&#160;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.run </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Front end server entrypoint.</pre>
</div>
</div>
<a id="a0f61420329b5c5f16ddf5e59532a37ce" name="a0f61420329b5c5f16ddf5e59532a37ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f61420329b5c5f16ddf5e59532a37ce">&#9670;&#160;</a></span>search_books_api()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.search_books_api </td>
<td>(</td>
<td class="paramtype">Request</td> <td class="paramname"><span class="paramname"><em>request</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">str</td> <td class="paramname"><span class="paramname"><em>search</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Collection file responder.</pre>
</div>
</div>
<a id="ab6eb555c6de0af5a4efe2ce04882f6d8" name="ab6eb555c6de0af5a4efe2ce04882f6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6eb555c6de0af5a4efe2ce04882f6d8">&#9670;&#160;</a></span>use_route_names_as_operation_ids()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"> None FastAPIServer.FastAPIServer.use_route_names_as_operation_ids </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FastAPI</td> <td class="paramname"><span class="paramname"><em>app</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Use route name as operation id.</pre>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a2bcbd72b8e790a4318bf59d084ffef83" name="a2bcbd72b8e790a4318bf59d084ffef83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bcbd72b8e790a4318bf59d084ffef83">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afae13eb07dfd6dfd589b2530906ee998" name="afae13eb07dfd6dfd589b2530906ee998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afae13eb07dfd6dfd589b2530906ee998">&#9670;&#160;</a></span>fe_config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.fe_config</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= uvicorn.Config(app, host=<span class="stringliteral">&quot;0.0.0.0&quot;</span>, port=8080,</div>
<div class="line"> log_level=<span class="stringliteral">&quot;info&quot;</span>, reload=<span class="keyword">True</span>)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a44c641886a2b1d17a13300aaf5743d9e" name="a44c641886a2b1d17a13300aaf5743d9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44c641886a2b1d17a13300aaf5743d9e">&#9670;&#160;</a></span>fe_server</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FastAPIServer.FastAPIServer.fe_server = uvicorn.Server(self.fe_config)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae4e417e1d61633d0ae41b97c7a364b93" name="ae4e417e1d61633d0ae41b97c7a364b93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4e417e1d61633d0ae41b97c7a364b93">&#9670;&#160;</a></span>JSInterface</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a> FastAPIServer.FastAPIServer.JSInterface = <a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a>(self.config)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/frontend/lib/<a class="el" href="">FastAPIServer.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,303 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.models.User 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html">User</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.models.User Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.models.User:</div>
<div class="dyncontent">
<div class="center">
<img src="../../dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png" usemap="#src_2Ebackend_2Elib_2Emodels_2EUser_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Emodels_2EUser_map" name="src_2Ebackend_2Elib_2Emodels_2EUser_map">
<area href="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" alt="src.backend.lib.models.Base" shape="rect" coords="0,56,174,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a39fa0f6c2a70f68263c3cac7edbda05f" id="r_a39fa0f6c2a70f68263c3cac7edbda05f"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a39fa0f6c2a70f68263c3cac7edbda05f">id</a> = mapped_column(primary_key=True, nullable=False)</td></tr>
<tr class="memitem:a3c38d878d04b8359786527f073553010" id="r_a3c38d878d04b8359786527f073553010"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3c38d878d04b8359786527f073553010">username</a> = mapped_column(unique=True, nullable=False)</td></tr>
<tr class="memitem:a94a735a73efa388ee84c75ff5f0ac3cf" id="r_a94a735a73efa388ee84c75ff5f0ac3cf"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94a735a73efa388ee84c75ff5f0ac3cf">password</a> = mapped_column(nullable=False)</td></tr>
<tr class="memitem:a222edcb2b67aafdee058505b09b80b0d" id="r_a222edcb2b67aafdee058505b09b80b0d"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a222edcb2b67aafdee058505b09b80b0d">email</a> = mapped_column(unique=True, nullable=True)</td></tr>
<tr class="memitem:acf9db559aa70f1fe25ce6b1e684fd94d" id="r_acf9db559aa70f1fe25ce6b1e684fd94d"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf9db559aa70f1fe25ce6b1e684fd94d">date_joined</a></td></tr>
<tr class="memitem:a676c678403e844c01a3e3f8626e4b0a3" id="r_a676c678403e844c01a3e3f8626e4b0a3"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a676c678403e844c01a3e3f8626e4b0a3">last_login</a></td></tr>
<tr class="memitem:ad13068f6fd8fee10b17c5fe4c64ad999" id="r_ad13068f6fd8fee10b17c5fe4c64ad999"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad13068f6fd8fee10b17c5fe4c64ad999">is_active</a> = mapped_column(nullable=False, default=True)</td></tr>
<tr class="memitem:acde215b9e8bdfea4e65e65358951b215" id="r_acde215b9e8bdfea4e65e65358951b215"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acde215b9e8bdfea4e65e65358951b215">is_admin</a> = mapped_column(nullable=False, default=False)</td></tr>
<tr class="memitem:a2736066617a053914165ae7457c39cad" id="r_a2736066617a053914165ae7457c39cad"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2736066617a053914165ae7457c39cad">is_superuser</a> = mapped_column(nullable=False, default=False)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">User model.</pre> </div><a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="acf9db559aa70f1fe25ce6b1e684fd94d" name="acf9db559aa70f1fe25ce6b1e684fd94d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf9db559aa70f1fe25ce6b1e684fd94d">&#9670;&#160;</a></span>date_joined</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.date_joined</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= mapped_column(</div>
<div class="line"> nullable=<span class="keyword">False</span>, server_default=func.CURRENT_TIMESTAMP()</div>
<div class="line"> )</div>
</div><!-- fragment -->
</div>
</div>
<a id="a222edcb2b67aafdee058505b09b80b0d" name="a222edcb2b67aafdee058505b09b80b0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a222edcb2b67aafdee058505b09b80b0d">&#9670;&#160;</a></span>email</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.email = mapped_column(unique=True, nullable=True)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a39fa0f6c2a70f68263c3cac7edbda05f" name="a39fa0f6c2a70f68263c3cac7edbda05f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39fa0f6c2a70f68263c3cac7edbda05f">&#9670;&#160;</a></span>id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.id = mapped_column(primary_key=True, nullable=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad13068f6fd8fee10b17c5fe4c64ad999" name="ad13068f6fd8fee10b17c5fe4c64ad999"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad13068f6fd8fee10b17c5fe4c64ad999">&#9670;&#160;</a></span>is_active</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.is_active = mapped_column(nullable=False, default=True)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acde215b9e8bdfea4e65e65358951b215" name="acde215b9e8bdfea4e65e65358951b215"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acde215b9e8bdfea4e65e65358951b215">&#9670;&#160;</a></span>is_admin</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.is_admin = mapped_column(nullable=False, default=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2736066617a053914165ae7457c39cad" name="a2736066617a053914165ae7457c39cad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2736066617a053914165ae7457c39cad">&#9670;&#160;</a></span>is_superuser</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.is_superuser = mapped_column(nullable=False, default=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a676c678403e844c01a3e3f8626e4b0a3" name="a676c678403e844c01a3e3f8626e4b0a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a676c678403e844c01a3e3f8626e4b0a3">&#9670;&#160;</a></span>last_login</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.last_login</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= mapped_column(</div>
<div class="line"> nullable=<span class="keyword">True</span>, server_default=<span class="keywordtype">None</span></div>
<div class="line"> )</div>
</div><!-- fragment -->
</div>
</div>
<a id="a94a735a73efa388ee84c75ff5f0ac3cf" name="a94a735a73efa388ee84c75ff5f0ac3cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94a735a73efa388ee84c75ff5f0ac3cf">&#9670;&#160;</a></span>password</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.password = mapped_column(nullable=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3c38d878d04b8359786527f073553010" name="a3c38d878d04b8359786527f073553010"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c38d878d04b8359786527f073553010">&#9670;&#160;</a></span>username</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.User.username = mapped_column(unique=True, nullable=False)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

View File

@@ -0,0 +1,75 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.storage Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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"><a href="../../dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html">storage</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.storage Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:Storage" id="r_Storage"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html">Storage</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Pyshelf's Main Storage Class.</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html">DuckDuckGo</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 bgcolor="#f0f0f0" class="odd"><td class="entry"><b>description_result</b>(self, query) (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 class="even"><td class="entry"><a class="el" href="../../d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545">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="odd"><td class="entry"><b>imageurl</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>
<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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">Server</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.pyShelf.Server Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__aexit__</b>(self, *args, **kwargs) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>__init__</b>(self, root) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>config</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>host</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>initialize_server</b>(self) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>loop</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pong</b>(self) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>root</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>runImport</b>(self) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>serve</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>socketio</b> (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>socketio</b>(self, websocket, path) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>start</b>(self) (defined in <a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a>)</td><td class="entry"><a class="el" href="../../d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html">src.backend.lib.pyShelf.Server</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,162 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.lib.models.Collection 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html">Collection</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">src.backend.lib.models.Collection Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for src.backend.lib.models.Collection:</div>
<div class="dyncontent">
<div class="center">
<img src="../../df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png" usemap="#src_2Ebackend_2Elib_2Emodels_2ECollection_map" alt=""/>
<map id="src_2Ebackend_2Elib_2Emodels_2ECollection_map" name="src_2Ebackend_2Elib_2Emodels_2ECollection_map">
<area href="../../d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" alt="src.backend.lib.models.Base" shape="rect" coords="0,56,202,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:aee829663d293c611d3477a1333cafa1a" id="r_aee829663d293c611d3477a1333cafa1a"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee829663d293c611d3477a1333cafa1a">id</a> = mapped_column(primary_key=True)</td></tr>
<tr class="memitem:ac34660a3093323d58103b2857d39cd33" id="r_ac34660a3093323d58103b2857d39cd33"><td class="memItemLeft" align="right" valign="top">Mapped&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac34660a3093323d58103b2857d39cd33">name</a> = mapped_column(unique=True)</td></tr>
<tr class="memitem:a65368a1cbfeb5dcb460c45a89dee40b5" id="r_a65368a1cbfeb5dcb460c45a89dee40b5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a65368a1cbfeb5dcb460c45a89dee40b5">book_collections</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">Collection model.</pre> </div><a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="a65368a1cbfeb5dcb460c45a89dee40b5" name="a65368a1cbfeb5dcb460c45a89dee40b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65368a1cbfeb5dcb460c45a89dee40b5">&#9670;&#160;</a></span>book_collections</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.lib.models.Collection.book_collections</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= relationship(</div>
<div class="line"> <span class="stringliteral">&quot;BookCollection&quot;</span>, back_populates=<span class="stringliteral">&quot;collection&quot;</span>, cascade=<span class="stringliteral">&quot;all, delete-orphan&quot;</span></div>
<div class="line"> )</div>
</div><!-- fragment -->
</div>
</div>
<a id="aee829663d293c611d3477a1333cafa1a" name="aee829663d293c611d3477a1333cafa1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee829663d293c611d3477a1333cafa1a">&#9670;&#160;</a></span>id</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Collection.id = mapped_column(primary_key=True)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac34660a3093323d58103b2857d39cd33" name="ac34660a3093323d58103b2857d39cd33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac34660a3093323d58103b2857d39cd33">&#9670;&#160;</a></span>name</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mapped src.backend.lib.models.Collection.name = mapped_column(unique=True)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/lib/<a class="el" href="">models.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,71 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: objects Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">objects Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:JSInterface" id="r_JSInterface"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/def/classobjects_1_1JSInterface.html">JSInterface</a></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">pyShelf's Frontend Objects.</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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>models</b></li><li class="navelem"><a href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">BookCollection</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src.backend.lib.models.BookCollection Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>book</b> (defined in <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>)</td><td class="entry"><a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>book_id</b> (defined in <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>)</td><td class="entry"><a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>collection</b> (defined in <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>)</td><td class="entry"><a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="odd"><td class="entry"><b>collection_id</b> (defined in <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>)</td><td class="entry"><a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>id</b> (defined in <a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a>)</td><td class="entry"><a class="el" href="../../d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html">src.backend.lib.models.BookCollection</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,163 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<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 href="../../df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html">TestConfig</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:adf39d831f4754bfd9200f72315fa6e76" id="r_adf39d831f4754bfd9200f72315fa6e76"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adf39d831f4754bfd9200f72315fa6e76">test_book_dir</a> (self)</td></tr>
<tr class="memitem:aa94174b5fc00bc57a25808d8c3a62b2f" id="r_aa94174b5fc00bc57a25808d8c3a62b2f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa94174b5fc00bc57a25808d8c3a62b2f">test_title</a> (self)</td></tr>
<tr class="memitem:a29b216fd9f387a54462706c93ef5775e" id="r_a29b216fd9f387a54462706c93ef5775e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a29b216fd9f387a54462706c93ef5775e">test_version</a> (self)</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-static-attribs" class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:aca12cc41778750762ea81d24236cfd6e" id="r_aca12cc41778750762ea81d24236cfd6e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aca12cc41778750762ea81d24236cfd6e">config</a> = <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>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"></div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="adf39d831f4754bfd9200f72315fa6e76" name="adf39d831f4754bfd9200f72315fa6e76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf39d831f4754bfd9200f72315fa6e76">&#9670;&#160;</a></span>test_book_dir()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.config_test.TestConfig.test_book_dir </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa94174b5fc00bc57a25808d8c3a62b2f" name="aa94174b5fc00bc57a25808d8c3a62b2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa94174b5fc00bc57a25808d8c3a62b2f">&#9670;&#160;</a></span>test_title()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.config_test.TestConfig.test_title </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a29b216fd9f387a54462706c93ef5775e" name="a29b216fd9f387a54462706c93ef5775e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29b216fd9f387a54462706c93ef5775e">&#9670;&#160;</a></span>test_version()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.config_test.TestConfig.test_version </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="aca12cc41778750762ea81d24236cfd6e" name="aca12cc41778750762ea81d24236cfd6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca12cc41778750762ea81d24236cfd6e">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">src.backend.tests.config_test.TestConfig.config = <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>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</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 <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,78 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src/backend/lib Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_3f615ade772d23cefe5e20dcb18424a2.html">backend</a></li><li class="navelem"><a href="dir_1c7294442ce83d360610449d04c9d7fc.html">lib</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">lib Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Finit_5F_5F_2Epy" id="r__5F_5Finit_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__init__.py</b></td></tr>
<tr class="memitem:api_5Fhooks_2Epy" id="r_api_5Fhooks_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>api_hooks.py</b></td></tr>
<tr class="memitem:config_2Epy" id="r_config_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>config.py</b></td></tr>
<tr class="memitem:library_2Epy" id="r_library_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>library.py</b></td></tr>
<tr class="memitem:models_2Epy" id="r_models_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>models.py</b></td></tr>
<tr class="memitem:overide_2Epy" id="r_overide_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>overide.py</b></td></tr>
<tr class="memitem:pyShelf_2Epy" id="r_pyShelf_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>pyShelf.py</b></td></tr>
<tr class="memitem:storage_2Epy" id="r_storage_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>storage.py</b></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,78 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src/backend Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_3f615ade772d23cefe5e20dcb18424a2.html">backend</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">backend Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-subdirs" class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:lib" id="r_lib"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_1c7294442ce83d360610449d04c9d7fc.html">lib</a></td></tr>
<tr class="memitem:tests" id="r_tests"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_9020577e2da81c4cf5a5554c26431f94.html">tests</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Finit_5F_5F_2Epy" id="r__5F_5Finit_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__init__.py</b></td></tr>
<tr class="memitem:pyShelf_5FMakeCollections_2Epy" id="r_pyShelf_5FMakeCollections_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>pyShelf_MakeCollections.py</b></td></tr>
<tr class="memitem:pyShelf_5FScanLibrary_2Epy" id="r_pyShelf_5FScanLibrary_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>pyShelf_ScanLibrary.py</b></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">src Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-subdirs" class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:backend" id="r_backend"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_3f615ade772d23cefe5e20dcb18424a2.html">backend</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Fabout_5F_5F_2Epy" id="r__5F_5Fabout_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__about__.py</b></td></tr>
<tr class="memitem:_5F_5Finit_5F_5F_2Epy" id="r__5F_5Finit_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__init__.py</b></td></tr>
<tr class="memitem:_5F_5Fmain_5F_5F_2Epy" id="r__5F_5Fmain_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__main__.py</b></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,71 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src/frontend Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_8509b06bafa958d2011203a730bf5778.html">frontend</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">frontend Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-subdirs" class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:lib" id="r_lib"><td class="memItemLeft" align="right" valign="top"><span class="iconfolder"><div class="folder-icon"></div></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d6d65651a873fbc3232a07f3f4a594e4.html">lib</a></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src/backend/tests Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_3f615ade772d23cefe5e20dcb18424a2.html">backend</a></li><li class="navelem"><a href="dir_9020577e2da81c4cf5a5554c26431f94.html">tests</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">tests Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:_5F_5Finit_5F_5F_2Epy" id="r__5F_5Finit_5F_5F_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>__init__.py</b></td></tr>
<tr class="memitem:config_5Ftest_2Epy" id="r_config_5Ftest_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>config_test.py</b></td></tr>
<tr class="memitem:library_5Ftest_2Epy" id="r_library_5Ftest_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>library_test.py</b></td></tr>
<tr class="memitem:server_5Ftest_2Epy" id="r_server_5Ftest_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>server_test.py</b></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src/frontend/lib Directory 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_8509b06bafa958d2011203a730bf5778.html">frontend</a></li><li class="navelem"><a href="dir_d6d65651a873fbc3232a07f3f4a594e4.html">lib</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">lib Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-files" class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:DataHooks_2Epy" id="r_DataHooks_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>DataHooks.py</b></td></tr>
<tr class="memitem:FastAPIServer_2Epy" id="r_FastAPIServer_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>FastAPIServer.py</b></td></tr>
<tr class="memitem:objects_2Epy" id="r_objects_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>objects.py</b></td></tr>
<tr class="memitem:runtime_5Fpaths_2Epy" id="r_runtime_5Fpaths_2Epy"><td class="memItemLeft" align="right" valign="top"><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>runtime_paths.py</b></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

28
docs/pyShelf/html/doxygen.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,138 @@
<!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" lang="en-US">
<head>
<title>Validator / crawler helper</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
<a href="annotated.html"/>
<a href="classes.html"/>
<a href="d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html"/>
<a href="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html"/>
<a href="d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html"/>
<a href="d2/dcb/classobjects_1_1JSInterface-members.html"/>
<a href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"/>
<a href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a75d80e22d017818c0fc569220a7e45ff"/>
<a href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad53ffb345a68555ab142ab09dc5e41dd"/>
<a href="d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html"/>
<a href="d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html"/>
<a href="d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html"/>
<a href="d4/d71/classDataHooks_1_1BookInterface-members.html"/>
<a href="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34"/>
<a href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"/>
<a href="d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html"/>
<a href="d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html"/>
<a href="d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html"/>
<a href="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html"/>
<a href="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb"/>
<a href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc"/>
<a href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"/>
<a href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545"/>
<a href="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html"/>
<a href="d7/dd7/namespacesrc_1_1____main____.html"/>
<a href="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05"/>
<a href="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46"/>
<a href="d7/df9/namespaceDataHooks.html"/>
<a href="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"/>
<a href="d8/def/classobjects_1_1JSInterface.html"/>
<a href="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b"/>
<a href="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a"/>
<a href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"/>
<a href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff"/>
<a href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4"/>
<a href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ade4abb252e4529109e0f66ac85ae14b0"/>
<a href="d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html"/>
<a href="d9/d71/classDataHooks_1_1BookInterface.html"/>
<a href="d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html"/>
<a href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"/>
<a href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c"/>
<a href="da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html"/>
<a href="db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html"/>
<a href="db/dd5/namespaceFastAPIServer.html"/>
<a href="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa"/>
<a href="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0"/>
<a href="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96"/>
<a href="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08"/>
<a href="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a"/>
<a href="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a3d5c8a0511da4ea483144e5727e79410"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a4ef439e312f2e61078a0be893705bd14"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a5de9590a9bf52af4747544e706ef32af"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a810b9e2aefcf334097739d33843357d8"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa29d30100b7e982f342c175b68557712"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34"/>
<a href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451"/>
<a href="dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a0c8a4afbea35f47630b9d826327de8ce"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a3d5c8a0511da4ea483144e5727e79410"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a4ef439e312f2e61078a0be893705bd14"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a5de9590a9bf52af4747544e706ef32af"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a810b9e2aefcf334097739d33843357d8"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#aa29d30100b7e982f342c175b68557712"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"/>
<a href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb"/>
<a href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"/>
<a href="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html"/>
<a href="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html"/>
<a href="de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html"/>
<a href="de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html"/>
<a href="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html"/>
<a href="df/d4c/namespaceobjects.html"/>
<a href="df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html"/>
<a href="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"/>
<a href="dir_1c7294442ce83d360610449d04c9d7fc.html"/>
<a href="dir_3f615ade772d23cefe5e20dcb18424a2.html"/>
<a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html"/>
<a href="dir_8509b06bafa958d2011203a730bf5778.html"/>
<a href="dir_9020577e2da81c4cf5a5554c26431f94.html"/>
<a href="dir_d6d65651a873fbc3232a07f3f4a594e4.html"/>
<a href="doxygen_crawl.html"/>
<a href="files.html"/>
<a href="functions.html"/>
<a href="functions_func.html"/>
<a href="hierarchy.html"/>
<a href="index.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespaces.html"/>
</body>
</html>

View File

@@ -0,0 +1,198 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj) {
return dynsection.toggleVisibility(linkObj);
}
let dynsection = {
// helper function
updateStripes : function() {
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
$('table.directory tr').
removeClass('odd').filter(':visible:odd').addClass('odd');
},
toggleVisibility : function(linkObj) {
const base = $(linkObj).attr('id');
const summary = $('#'+base+'-summary');
const content = $('#'+base+'-content');
const trigger = $('#'+base+'-trigger');
const src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.slideUp('fast');
summary.show();
$(linkObj).find('.arrowhead').addClass('closed').removeClass('opened');
} else {
content.slideDown('fast');
summary.hide();
$(linkObj).find('.arrowhead').removeClass('closed').addClass('opened');
}
return false;
},
toggleLevel : function(level) {
$('table.directory tr').each(function() {
const l = this.id.split('_').length-1;
const i = $('#img'+this.id.substring(3));
const a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.find('.folder-icon').addClass('open');
a.find('.arrowhead').removeClass('closed').addClass('opened');
$(this).show();
} else if (l==level+1) {
a.find('.arrowhead').removeClass('opened').addClass('closed');
i.find('.folder-icon').removeClass('open');
$(this).show();
} else {
$(this).hide();
}
});
this.updateStripes();
},
toggleFolder : function(id) {
// the clicked row
const currentRow = $('#row_'+id);
// all rows after the clicked row
const rows = currentRow.nextAll("tr");
const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
const childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfolder").find('.folder-icon').removeClass("open");
currentRowSpans.filter(".opened").removeClass("opened").addClass("closed");
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfolder").find('.folder-icon').addClass("open");
currentRowSpans.filter(".closed").removeClass("closed").addClass("opened");
// replace down arrows by right arrows for child rows
const childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfolder").find('.folder-icon').removeClass("open");
childRowsSpans.filter(".opened").removeClass("opened").addClass("closed");
childRows.show(); //show all children
}
this.updateStripes();
},
toggleInherit : function(id) {
let rows = $('tr.inherit.'+id);
let header = $('tr.inherit_header.'+id);
if (rows.filter(':first').is(':visible')===true) {
rows.hide();
$(header).find('.arrowhead').addClass('closed').removeClass('opened');
} else {
rows.show();
$(header).find('.arrowhead').removeClass('closed').addClass('opened');
}
},
};
let codefold = {
opened : true,
// toggle all folding blocks
toggle_all : function() {
if (this.opened) {
$('#fold_all').addClass('plus').removeClass('minus');
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
$('div[id^=foldclosed] span.fold').removeClass('minus').addClass('plus');
} else {
$('#fold_all').addClass('minus').removeClass('plus');
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
this.opened=!this.opened;
},
// toggle single folding block
toggle : function(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
$('#foldopen'+id).next().find('span.fold').addClass('plus').removeClass('minus');
},
init : function() {
$('span[class=lineno]').css({
'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(#808080,#808080) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold minus" id="fold_all" '+
'onclick="javascript:codefold.toggle_all();"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
const id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
const start = $(this).attr('data-start');
const end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold minus" '+
'onclick="javascript:codefold.toggle(\''+id+'\');"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
const line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').addClass('plus').removeClass('minus');
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
},
};
/* @license-end */
$(function() {
$('.code,.codeRef').each(function() {
$(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
$.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ];
$(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
});
});

View File

@@ -0,0 +1,94 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: File 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">File List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span><span onclick="javascript:dynsection.toggleLevel(4);">4</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="dynsection.toggleFolder('0_')"><span class="arrowhead opened"></span></span><span id="img_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="dynsection.toggleFolder('0_0_')"><span class="arrowhead opened"></span></span><span id="img_0_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_3f615ade772d23cefe5e20dcb18424a2.html" target="_self">backend</a></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="dynsection.toggleFolder('0_0_0_')"><span class="arrowhead opened"></span></span><span id="img_0_0_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_0_0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_1c7294442ce83d360610449d04c9d7fc.html" target="_self">lib</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>api_hooks.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_2_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>library.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_4_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>models.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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>overide.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_6_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>pyShelf.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_7_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>storage.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="dynsection.toggleFolder('0_0_1_')"><span class="arrowhead opened"></span></span><span id="img_0_0_1_" class="iconfolder" onclick="dynsection.toggleFolder('0_0_1_')"><div class="folder-icon open"></div></span><a class="el" href="dir_9020577e2da81c4cf5a5554c26431f94.html" target="_self">tests</a></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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_1_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>config_test.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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>library_test.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_3_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>server_test.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=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>pyShelf_MakeCollections.py</b></td><td class="desc"></td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>pyShelf_ScanLibrary.py</b></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="dynsection.toggleFolder('0_1_')"><span class="arrowhead opened"></span></span><span id="img_0_1_" class="iconfolder" onclick="dynsection.toggleFolder('0_1_')"><div class="folder-icon open"></div></span><a class="el" href="dir_8509b06bafa958d2011203a730bf5778.html" target="_self">frontend</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="dynsection.toggleFolder('0_1_0_')"><span class="arrowhead opened"></span></span><span id="img_0_1_0_" class="iconfolder" onclick="dynsection.toggleFolder('0_1_0_')"><div class="folder-icon open"></div></span><a class="el" href="dir_d6d65651a873fbc3232a07f3f4a594e4.html" target="_self">lib</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>DataHooks.py</b></td><td class="desc"></td></tr>
<tr id="row_0_1_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>FastAPIServer.py</b></td><td class="desc"></td></tr>
<tr id="row_0_1_0_2_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>objects.py</b></td><td class="desc"></td></tr>
<tr id="row_0_1_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>runtime_paths.py</b></td><td class="desc"></td></tr>
<tr id="row_0_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>__about__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>__init__.py</b></td><td class="desc"></td></tr>
<tr id="row_0_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href=""><span class="icondoc"><div class="doc-icon"></div></span></a><b>__main__.py</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,170 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Class Members</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index__5F"><span>_</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li class="current"><a href="#index_u"><span>u</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<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>
<h3 class="doxsection"><a id="index__5F" name="index__5F"></a>- _ -</h3><ul>
<li>__init__()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267">FastAPIServer.FastAPIServer</a>, <a class="el" href="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a">objects.JSInterface</a>, <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ade4abb252e4529109e0f66ac85ae14b0">src.backend.lib.config.Config</a>, <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_b" name="index_b"></a>- b -</h3><ul>
<li>book_paths_list()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>collection()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb">FastAPIServer.FastAPIServer</a></li>
<li>compare_shelf_current()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">src.backend.lib.library.Catalogue</a></li>
<li>compile_static_files()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26">FastAPIServer.FastAPIServer</a></li>
<li>create_tables()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6">src.backend.lib.storage.Storage</a></li>
<li>CreateFile()&#160;:&#160;<a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c">src.backend.lib.pyShelf.InitFiles</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>extract_content()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">src.backend.lib.library.Catalogue</a></li>
<li>extract_cover_html()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410">src.backend.lib.library.Catalogue</a></li>
<li>extract_cover_image()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">src.backend.lib.library.Catalogue</a></li>
<li>extract_metadata_epub()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712">src.backend.lib.library.Catalogue</a></li>
<li>extract_metadata_pdf()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14">src.backend.lib.library.Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_f" name="index_f"></a>- f -</h3><ul>
<li>filter_books()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1">src.backend.lib.library.Catalogue</a>, <a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451">src.backend.tests.library_test.Test_Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>get_book()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0">src.backend.lib.storage.Storage</a></li>
<li>get_books()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950">src.backend.lib.storage.Storage</a></li>
<li>get_collection()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc">src.backend.lib.storage.Storage</a></li>
<li>get_collections()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b">src.backend.lib.storage.Storage</a></li>
<li>get_connection_string()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6">src.backend.lib.storage.Storage</a></li>
<li>get_logger()&#160;:&#160;<a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff">src.backend.lib.config.Config</a></li>
</ul>
<h3 class="doxsection"><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>image_result()&#160;:&#160;<a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545">src.backend.lib.api_hooks.DuckDuckGo</a></li>
<li>import_books()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34">src.backend.lib.library.Catalogue</a>, <a class="el" href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1">src.backend.lib.overide.ACatalogue</a></li>
<li>insert_book()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670">src.backend.lib.storage.Storage</a></li>
<li>install()&#160;:&#160;<a class="el" href="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b">objects.JSInterface</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>make_collections()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_o" name="index_o"></a>- o -</h3><ul>
<li>open_file()&#160;:&#160;<a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4">src.backend.lib.config.Config</a>, <a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad53ffb345a68555ab142ab09dc5e41dd">src.backend.tests.library_test.Test_Config</a></li>
</ul>
<h3 class="doxsection"><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parse_advanced_query()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310">src.backend.lib.storage.Storage</a></li>
<li>parse_collections_from_path()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb">src.backend.lib.storage.Storage</a></li>
<li>process_by_filetype()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8">src.backend.lib.library.Catalogue</a></li>
<li>process_epub()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">src.backend.lib.library.Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>run()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b">FastAPIServer.FastAPIServer</a></li>
</ul>
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>scan_folder()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca">src.backend.lib.library.Catalogue</a>, <a class="el" href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4">src.backend.lib.overide.ACatalogue</a></li>
<li>search_books_api()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce">FastAPIServer.FastAPIServer</a></li>
</ul>
<h3 class="doxsection"><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>use_route_names_as_operation_ids()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8">FastAPIServer.FastAPIServer</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,170 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Class Members - Functions</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index__5F"><span>_</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li class="current"><a href="#index_u"><span>u</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="contents">
<div class="textblock">Here is a list of all documented functions with links to the class documentation for each member:</div>
<h3 class="doxsection"><a id="index__5F" name="index__5F"></a>- _ -</h3><ul>
<li>__init__()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267">FastAPIServer.FastAPIServer</a>, <a class="el" href="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a">objects.JSInterface</a>, <a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ade4abb252e4529109e0f66ac85ae14b0">src.backend.lib.config.Config</a>, <a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_b" name="index_b"></a>- b -</h3><ul>
<li>book_paths_list()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>collection()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb">FastAPIServer.FastAPIServer</a></li>
<li>compare_shelf_current()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af">src.backend.lib.library.Catalogue</a></li>
<li>compile_static_files()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26">FastAPIServer.FastAPIServer</a></li>
<li>create_tables()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6">src.backend.lib.storage.Storage</a></li>
<li>CreateFile()&#160;:&#160;<a class="el" href="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c">src.backend.lib.pyShelf.InitFiles</a></li>
</ul>
<h3 class="doxsection"><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>extract_content()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f">src.backend.lib.library.Catalogue</a></li>
<li>extract_cover_html()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410">src.backend.lib.library.Catalogue</a></li>
<li>extract_cover_image()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce">src.backend.lib.library.Catalogue</a></li>
<li>extract_metadata_epub()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712">src.backend.lib.library.Catalogue</a></li>
<li>extract_metadata_pdf()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14">src.backend.lib.library.Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_f" name="index_f"></a>- f -</h3><ul>
<li>filter_books()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1">src.backend.lib.library.Catalogue</a>, <a class="el" href="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451">src.backend.tests.library_test.Test_Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>get_book()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0">src.backend.lib.storage.Storage</a></li>
<li>get_books()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950">src.backend.lib.storage.Storage</a></li>
<li>get_collection()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc">src.backend.lib.storage.Storage</a></li>
<li>get_collections()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b">src.backend.lib.storage.Storage</a></li>
<li>get_connection_string()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6">src.backend.lib.storage.Storage</a></li>
<li>get_logger()&#160;:&#160;<a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff">src.backend.lib.config.Config</a></li>
</ul>
<h3 class="doxsection"><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>image_result()&#160;:&#160;<a class="el" href="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545">src.backend.lib.api_hooks.DuckDuckGo</a></li>
<li>import_books()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34">src.backend.lib.library.Catalogue</a>, <a class="el" href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1">src.backend.lib.overide.ACatalogue</a></li>
<li>insert_book()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670">src.backend.lib.storage.Storage</a></li>
<li>install()&#160;:&#160;<a class="el" href="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b">objects.JSInterface</a></li>
</ul>
<h3 class="doxsection"><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>make_collections()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1">src.backend.lib.storage.Storage</a></li>
</ul>
<h3 class="doxsection"><a id="index_o" name="index_o"></a>- o -</h3><ul>
<li>open_file()&#160;:&#160;<a class="el" href="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4">src.backend.lib.config.Config</a>, <a class="el" href="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad53ffb345a68555ab142ab09dc5e41dd">src.backend.tests.library_test.Test_Config</a></li>
</ul>
<h3 class="doxsection"><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parse_advanced_query()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310">src.backend.lib.storage.Storage</a></li>
<li>parse_collections_from_path()&#160;:&#160;<a class="el" href="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb">src.backend.lib.storage.Storage</a></li>
<li>process_by_filetype()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8">src.backend.lib.library.Catalogue</a></li>
<li>process_epub()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e">src.backend.lib.library.Catalogue</a></li>
</ul>
<h3 class="doxsection"><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>run()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b">FastAPIServer.FastAPIServer</a></li>
</ul>
<h3 class="doxsection"><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>scan_folder()&#160;:&#160;<a class="el" href="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca">src.backend.lib.library.Catalogue</a>, <a class="el" href="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4">src.backend.lib.overide.ACatalogue</a></li>
<li>search_books_api()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce">FastAPIServer.FastAPIServer</a></li>
</ul>
<h3 class="doxsection"><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>use_route_names_as_operation_ids()&#160;:&#160;<a class="el" href="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8">FastAPIServer.FastAPIServer</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Class Hierarchy</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">Class Hierarchy</div></div>
</div><!--header-->
<div class="contents">
<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:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</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="d9/d71/classDataHooks_1_1BookInterface.html" target="_self">DataHooks.BookInterface</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')"><span class="arrowhead opened"></span></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="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html" target="_self">src.backend.lib.overide.ACatalogue</a></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="odd"><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_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')"><span class="arrowhead opened"></span></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="odd"><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_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">C</span></span><b>DeclarativeBase</b></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_3_0_" class="arrow" onclick="dynsection.toggleFolder('3_0_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html" target="_self">src.backend.lib.models.Base</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html" target="_self">src.backend.lib.models.Book</a></td><td class="desc"></td></tr>
<tr id="row_3_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html" target="_self">src.backend.lib.models.BookCollection</a></td><td class="desc"></td></tr>
<tr id="row_3_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html" target="_self">src.backend.lib.models.Collection</a></td><td class="desc"></td></tr>
<tr id="row_3_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html" target="_self">src.backend.lib.models.User</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="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_5_" class="odd"><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/d22/classFastAPIServer_1_1FastAPIServer.html" target="_self">FastAPIServer.FastAPIServer</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="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_7_" class="odd"><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/def/classobjects_1_1JSInterface.html" target="_self">objects.JSInterface</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="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html" target="_self">src.backend.lib.pyShelf.Server</a></td><td class="desc"></td></tr>
<tr id="row_9_" class="odd"><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_10_" 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="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_11_" class="odd"><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>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

342
docs/pyShelf/html/index.hhc vendored Normal file
View File

@@ -0,0 +1,342 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD></HEAD><BODY>
<OBJECT type="text/site properties">
<param name="FrameName" value="right">
</OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Namespaces"><param name="Local" value="namespaces.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Namespace List"><param name="Local" value="namespaces.html#top"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DataHooks"><param name="Local" value="d7/df9/namespaceDataHooks.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="BookInterface"><param name="Local" value="d9/d71/classDataHooks_1_1BookInterface.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="FastAPIServer"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="FastAPIServer"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="collection"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compile_static_files"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="run"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="search_books_api"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="use_route_names_as_operation_ids"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="base64decode"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="book_tojson"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="books_tojson"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="collections_tojson"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="convertDateTime"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="summarize"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="objects"><param name="Local" value="df/d4c/namespaceobjects.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="JSInterface"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="install"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__main__"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="main"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="run_import"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="backend"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<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>
<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#ade4abb252e4529109e0f66ac85ae14b0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_logger"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff"><param name="ImageNumber" value="11"></OBJECT>
<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#a84421d323478317c86c1487669695aa4"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="storage"><param name="Local" value="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html"><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#a43da65b09eebf9a3f72b3329f88567e9"><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#abd8d95e5413f2a352d98566e7194d1dd"><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#a2f472b2053439b52f9a703e593f385e6"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_book"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_books"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_collection"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_collections"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_connection_string"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6"><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#a4e58e1d75ec604c1dc9b312531fbd670"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="make_collections"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="parse_advanced_query"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="parse_collections_from_path"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
</UL>
</UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Namespace Members"><param name="Local" value="namespacemembers.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="All"><param name="Local" value="namespacemembers.html#top"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Functions"><param name="Local" value="namespacemembers_func.html"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Classes"><param name="Local" value="annotated.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class List"><param name="Local" value="annotated.html#top"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DataHooks"><param name="Local" value="d7/df9/namespaceDataHooks.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="BookInterface"><param name="Local" value="d9/d71/classDataHooks_1_1BookInterface.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="FastAPIServer"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="FastAPIServer"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="collection"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compile_static_files"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="run"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="search_books_api"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="use_route_names_as_operation_ids"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="objects"><param name="Local" value="df/d4c/namespaceobjects.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="JSInterface"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__init__"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="install"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="backend"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="api_hooks"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<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>
<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#adbcb58686009f62df00605953f29a545"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="config"><param name="Local" value="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<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>
<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#ade4abb252e4529109e0f66ac85ae14b0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_logger"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff"><param name="ImageNumber" value="11"></OBJECT>
<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#a84421d323478317c86c1487669695aa4"><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="d5/da5/classsrc_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="compare_shelf_current"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af"><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#abe2b5fdefbfa42c87466f58f4bc1677f"><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#a3d5c8a0511da4ea483144e5727e79410"><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#a0c8a4afbea35f47630b9d826327de8ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_epub"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_pdf"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14"><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#acdbfa5941ac442ba78e9b99ed024f1e1"><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#ac535eff50b4577d1d7b7b7433fee0e34"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="process_by_filetype"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8"><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#a8e1422c1f6b599d2de6e5b06a61448ca"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="models"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Base"><param name="Local" value="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Book"><param name="Local" value="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="BookCollection"><param name="Local" value="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Collection"><param name="Local" value="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="User"><param name="Local" value="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="overide"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="ACatalogue"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="compare_shelf_current"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a5de9590a9bf52af4747544e706ef32af"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_content"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_html"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a3d5c8a0511da4ea483144e5727e79410"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_cover_image"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a0c8a4afbea35f47630b9d826327de8ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_epub"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#aa29d30100b7e982f342c175b68557712"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_pdf"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a4ef439e312f2e61078a0be893705bd14"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="filter_books"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="import_books"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="process_by_filetype"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a810b9e2aefcf334097739d33843357d8"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="scan_folder"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4"><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="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="CreateFile"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Server"><param name="Local" value="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="storage"><param name="Local" value="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html"><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#a43da65b09eebf9a3f72b3329f88567e9"><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#abd8d95e5413f2a352d98566e7194d1dd"><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#a2f472b2053439b52f9a703e593f385e6"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_book"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_books"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_collection"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_collections"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="get_connection_string"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6"><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#a4e58e1d75ec604c1dc9b312531fbd670"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="make_collections"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="parse_advanced_query"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="parse_collections_from_path"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb"><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>
</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="compare_shelf_current"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a5de9590a9bf52af4747544e706ef32af"><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#abe2b5fdefbfa42c87466f58f4bc1677f"><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#a3d5c8a0511da4ea483144e5727e79410"><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#a0c8a4afbea35f47630b9d826327de8ce"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_epub"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#aa29d30100b7e982f342c175b68557712"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="extract_metadata_pdf"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a4ef439e312f2e61078a0be893705bd14"><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#ae2b7fabba01cd5760936bf16ebec0451"><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#ac535eff50b4577d1d7b7b7433fee0e34"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="process_by_filetype"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#a810b9e2aefcf334097739d33843357d8"><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#a8e1422c1f6b599d2de6e5b06a61448ca"><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="get_logger"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#a75d80e22d017818c0fc569220a7e45ff"><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#ad53ffb345a68555ab142ab09dc5e41dd"><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>
</UL>
</UL>
</UL>
</UL>
</UL>
</UL>
<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>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DataHooks.BookInterface"><param name="Local" value="d9/d71/classDataHooks_1_1BookInterface.html"><param name="ImageNumber" value="11"></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>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.overide.ACatalogue"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.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>
<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>
<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>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DeclarativeBase"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.models.Base"><param name="Local" value="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.models.Book"><param name="Local" value="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.models.BookCollection"><param name="Local" value="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.models.Collection"><param name="Local" value="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.models.User"><param name="Local" value="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<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="FastAPIServer.FastAPIServer"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.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="objects.JSInterface"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src.backend.lib.pyShelf.Server"><param name="Local" value="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.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="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>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Class Members"><param name="Local" value="functions.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="All"><param name="Local" value="functions.html#top"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Functions"><param name="Local" value="functions_func.html"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Files"><param name="Local" value="files.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="File List"><param name="Local" value="files.html#top"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="src"><param name="Local" value="dir_68267d1309a1af8e8297ef4c3efbcdba.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="backend"><param name="Local" value="dir_3f615ade772d23cefe5e20dcb18424a2.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="Local" value="dir_1c7294442ce83d360610449d04c9d7fc.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<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="config.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="models.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="overide.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>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="tests"><param name="Local" value="dir_9020577e2da81c4cf5a5554c26431f94.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<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="config_test.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="library_test.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="server_test.py"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<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="pyShelf_MakeCollections.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="pyShelf_ScanLibrary.py"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="frontend"><param name="Local" value="dir_8509b06bafa958d2011203a730bf5778.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="lib"><param name="Local" value="dir_d6d65651a873fbc3232a07f3f4a594e4.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="DataHooks.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="FastAPIServer.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="objects.py"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="runtime_paths.py"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="__about__.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="__main__.py"><param name="ImageNumber" value="11"></OBJECT>
</UL>
</UL>
</UL>
</UL>
</BODY>
</HTML>

292
docs/pyShelf/html/index.hhk vendored Normal file
View File

@@ -0,0 +1,292 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD></HEAD><BODY>
<OBJECT type="text/site properties">
<param name="FrameName" value="right">
</OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a"><param name="Name" value="__init__(self, Config config)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"><param name="Name" value="__init__(self, config)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9"><param name="Name" value="__init__(self, config)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ade4abb252e4529109e0f66ac85ae14b0"><param name="Name" value="__init__(self, root)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa"><param name="Name" value="base64decode(string)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd"><param name="Name" value="book_paths_list(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0"><param name="Name" value="book_tojson(book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a"><param name="Name" value="books_tojson(obj)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb"><param name="Name" value="collection(Request request, str collection, int skip=0, int limit=30)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08"><param name="Name" value="collections_tojson(collection)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af"><param name="Name" value="compare_shelf_current(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26"><param name="Name" value="compile_static_files(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c"><param name="Name" value="convertDateTime(datetime timestamp)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6"><param name="Name" value="create_tables(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c"><param name="Name" value="CreateFile(self, _pointer)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/df9/namespaceDataHooks.html"><param name="Name" value="DataHooks"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d9/d71/classDataHooks_1_1BookInterface.html"><param name="Name" value="DataHooks::BookInterface"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"><param name="Name" value="extract_content(self, book_zip, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410"><param name="Name" value="extract_cover_html(self, book_zip, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce"><param name="Name" value="extract_cover_image(self, book_zip, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712"><param name="Name" value="extract_metadata_epub(self, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14"><param name="Name" value="extract_metadata_pdf(self, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#afe55a8838934eda4f70cb86bdfd91267"><param name="Name" value="__init__(self, config)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ae27b6ea06524516b22b088c2673978bb"><param name="Name" value="collection(Request request, str collection, int skip=0, int limit=30)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a81c4f1486cd79fa83429b70e79d32f26"><param name="Name" value="compile_static_files(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b"><param name="Name" value="run(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce"><param name="Name" value="search_books_api(Request request, str search)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html"><param name="Name" value="FastAPIServer::FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8"><param name="Name" value="use_route_names_as_operation_ids(self, FastAPI app)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa"><param name="Name" value="base64decode(string)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0"><param name="Name" value="book_tojson(book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a"><param name="Name" value="books_tojson(obj)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08"><param name="Name" value="collections_tojson(collection)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c"><param name="Name" value="convertDateTime(datetime timestamp)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html"><param name="Name" value="FastAPIServer"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96"><param name="Name" value="summarize(string)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"><param name="Name" value="filter_books(self)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451"><param name="Name" value="filter_books(self)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451"><param name="Name" value="src::backend::tests::library_test::Test_Catalogue"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0"><param name="Name" value="get_book(self, id)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950"><param name="Name" value="get_books(self, collection=None, skip=None, limit=None)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc"><param name="Name" value="get_collection(self, name)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b"><param name="Name" value="get_collections(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6"><param name="Name" value="get_connection_string(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff"><param name="Name" value="get_logger(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545"><param name="Name" value="image_result(self, query)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1"><param name="Name" value="import_books(self, **kwargs)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34"><param name="Name" value="import_books(self, list=None, **kwargs)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670"><param name="Name" value="insert_book(self, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b"><param name="Name" value="install(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46"><param name="Name" value="main()"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1"><param name="Name" value="make_collections(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="df/d4c/namespaceobjects.html"><param name="Name" value="objects"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="Name" value="objects::JSInterface"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="Name" value="objects::JSInterface"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#aff3d033ea502f8e991b787161606f52a"><param name="Name" value="__init__(self, Config config)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html"><param name="Name" value="objects::JSInterface"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/def/classobjects_1_1JSInterface.html#a1e1c0b95d04fa6932bbac992f0e2806b"><param name="Name" value="install(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4"><param name="Name" value="open_file(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad53ffb345a68555ab142ab09dc5e41dd"><param name="Name" value="open_file(self, root=&quot;config.json&quot;)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310"><param name="Name" value="parse_advanced_query(self, str query)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb"><param name="Name" value="parse_collections_from_path(self, dict() book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8"><param name="Name" value="process_by_filetype(self, book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e"><param name="Name" value="process_epub(book)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ad255db51c639439a64cb009ca4b2d79b"><param name="Name" value="run(self)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05"><param name="Name" value="run_import()"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca"><param name="Name" value="scan_folder(self, _path=None)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4"><param name="Name" value="scan_folder(self, _path=None)"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4"><param name="Name" value="src::backend::lib::overide::ACatalogue"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#a0f61420329b5c5f16ddf5e59532a37ce"><param name="Name" value="search_books_api(Request request, str search)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html"><param name="Name" value="src::__main__"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html"><param name="Name" value="src::__main__"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46"><param name="Name" value="main()"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html"><param name="Name" value="src::__main__"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05"><param name="Name" value="run_import()"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="Name" value="src::backend::lib::api_hooks::DuckDuckGo"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html"><param name="Name" value="src::backend::lib::api_hooks::DuckDuckGo"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html#adbcb58686009f62df00605953f29a545"><param name="Name" value="image_result(self, query)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html"><param name="Name" value="src::backend::lib::config"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="Name" value="src::backend::lib::config::Config"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="Name" value="src::backend::lib::config::Config"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#ade4abb252e4529109e0f66ac85ae14b0"><param name="Name" value="__init__(self, root)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="Name" value="src::backend::lib::config::Config"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a75d80e22d017818c0fc569220a7e45ff"><param name="Name" value="get_logger(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html"><param name="Name" value="src::backend::lib::config::Config"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html#a84421d323478317c86c1487669695aa4"><param name="Name" value="open_file(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a5de9590a9bf52af4747544e706ef32af"><param name="Name" value="compare_shelf_current(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abe2b5fdefbfa42c87466f58f4bc1677f"><param name="Name" value="extract_content(self, book_zip, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a3d5c8a0511da4ea483144e5727e79410"><param name="Name" value="extract_cover_html(self, book_zip, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0c8a4afbea35f47630b9d826327de8ce"><param name="Name" value="extract_cover_image(self, book_zip, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aa29d30100b7e982f342c175b68557712"><param name="Name" value="extract_metadata_epub(self, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a4ef439e312f2e61078a0be893705bd14"><param name="Name" value="extract_metadata_pdf(self, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#acdbfa5941ac442ba78e9b99ed024f1e1"><param name="Name" value="filter_books(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#ac535eff50b4577d1d7b7b7433fee0e34"><param name="Name" value="import_books(self, list=None, **kwargs)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a810b9e2aefcf334097739d33843357d8"><param name="Name" value="process_by_filetype(self, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9e91ca706de4d548d567d92cbc525f5e"><param name="Name" value="process_epub(book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html"><param name="Name" value="src::backend::lib::library::Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a8e1422c1f6b599d2de6e5b06a61448ca"><param name="Name" value="scan_folder(self, _path=None)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html"><param name="Name" value="src::backend::lib::models::Base"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html"><param name="Name" value="src::backend::lib::models::Book"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html"><param name="Name" value="src::backend::lib::models::BookCollection"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html"><param name="Name" value="src::backend::lib::models::Collection"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html"><param name="Name" value="src::backend::lib::models::User"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html"><param name="Name" value="src::backend::lib::overide::ACatalogue"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html"><param name="Name" value="src::backend::lib::overide::ACatalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a1c1ca29905d293327433edd3590268c1"><param name="Name" value="import_books(self, **kwargs)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html"><param name="Name" value="src::backend::lib::overide::ACatalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html#a92b8a68d7ff658a04736ec14e8e89ff4"><param name="Name" value="scan_folder(self, _path=None)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="Name" value="src::backend::lib::pyShelf::InitFiles"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html"><param name="Name" value="src::backend::lib::pyShelf::InitFiles"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html#ab720d320fdedf78bcc4fb51dd357813c"><param name="Name" value="CreateFile(self, _pointer)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html"><param name="Name" value="src::backend::lib::pyShelf::Server"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html"><param name="Name" value="src::backend::lib::storage"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a43da65b09eebf9a3f72b3329f88567e9"><param name="Name" value="__init__(self, config)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#abd8d95e5413f2a352d98566e7194d1dd"><param name="Name" value="book_paths_list(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a2f472b2053439b52f9a703e593f385e6"><param name="Name" value="create_tables(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a8405c7e41009cd67dd9e0029a6dc61a0"><param name="Name" value="get_book(self, id)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acf1c394db6999aa7a1e247219daca950"><param name="Name" value="get_books(self, collection=None, skip=None, limit=None)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ae05823894dc6af9f3ef4b44e38526dbc"><param name="Name" value="get_collection(self, name)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#aa2008b1078dddcc432d37465ca2c803b"><param name="Name" value="get_collections(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a803ef3a255fa00ee9279bb9cefc571f6"><param name="Name" value="get_connection_string(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a4e58e1d75ec604c1dc9b312531fbd670"><param name="Name" value="insert_book(self, book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#acacbb3bf0a9e47914e03a1a988ea15d1"><param name="Name" value="make_collections(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#a1fdf99cac9caa8cb5b988e5f578a8310"><param name="Name" value="parse_advanced_query(self, str query)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html"><param name="Name" value="src::backend::lib::storage::Storage"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html#ad0b3176f728194703910695cbaef9adb"><param name="Name" value="parse_collections_from_path(self, dict() book)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html"><param name="Name" value="src::backend::tests::config_test::TestConfig"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="Name" value="src::backend::tests::library_test::Test_Catalogue"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html"><param name="Name" value="src::backend::tests::library_test::Test_Catalogue"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ae2b7fabba01cd5760936bf16ebec0451"><param name="Name" value="filter_books(self)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="Name" value="src::backend::tests::library_test::Test_Config"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html"><param name="Name" value="src::backend::tests::library_test::Test_Config"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html#ad53ffb345a68555ab142ab09dc5e41dd"><param name="Name" value="open_file(self, root=&quot;config.json&quot;)"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html"><param name="Name" value="src::backend::tests::library_test::TestCatalogue"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96"><param name="Name" value="summarize(string)"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="dd/d22/classFastAPIServer_1_1FastAPIServer.html#ab6eb555c6de0af5a4efe2ce04882f6d8"><param name="Name" value="use_route_names_as_operation_ids(self, FastAPI app)"></OBJECT>
</UL>
</BODY>
</HTML>

92
docs/pyShelf/html/index.hhp vendored Normal file
View File

@@ -0,0 +1,92 @@
[OPTIONS]
Compiled file=pyShelf_docs
Compatibility=1.1
Full-text search=Yes
Contents file=index.hhc
Default Window=main
Default topic=index.html
Index file=index.hhk
Language=0x409 English (United States)
Binary TOC=YES
Title=pyShelf Open Source Ebook Server
[WINDOWS]
main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0
[FILES]
annotated.html
classes.html
d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html
d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html
d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html
d2/dcb/classobjects_1_1JSInterface-members.html
d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html
d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html
d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html
d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html
d4/d71/classDataHooks_1_1BookInterface-members.html
d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html
d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html
d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html
d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html
d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html
d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html
d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html
d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html
d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html
d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html
d7/dd7/namespacesrc_1_1____main____.html
d7/df9/namespaceDataHooks.html
d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html
d8/def/classobjects_1_1JSInterface.html
d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html
d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html
d9/d71/classDataHooks_1_1BookInterface.html
d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html
da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html
da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html
db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html
db/dd5/namespaceFastAPIServer.html
db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html
dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html
dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html
dd/d22/classFastAPIServer_1_1FastAPIServer.html
dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html
dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html
de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html
de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html
df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html
df/d4c/namespaceobjects.html
df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html
df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html
dir_1c7294442ce83d360610449d04c9d7fc.html
dir_3f615ade772d23cefe5e20dcb18424a2.html
dir_68267d1309a1af8e8297ef4c3efbcdba.html
dir_8509b06bafa958d2011203a730bf5778.html
dir_9020577e2da81c4cf5a5554c26431f94.html
dir_d6d65651a873fbc3232a07f3f4a594e4.html
doxygen_crawl.html
files.html
functions.html
functions_func.html
hierarchy.html
index.html
namespacemembers.html
namespacemembers_func.html
namespaces.html
d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png
d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png
d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png
d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png
d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png
d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png
db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png
dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png
dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png
df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png
doxygen.svg
doxygen.css
dynsections.js
jquery.js
navtree.css
tabs.css

View File

@@ -0,0 +1,58 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Main Page</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">pyShelf Open Source Ebook Server Documentation</div></div>
</div><!--header-->
<div class="contents">
<a href="doxygen_crawl.html"></a>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

204
docs/pyShelf/html/jquery.js Normal file
View File

@@ -0,0 +1,204 @@
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}
var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},
push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(
e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,
O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"<22>":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType
}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c
)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){
return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(
":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id")
)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push(
"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(
a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,
null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(
"string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne
).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType
)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(
function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){
return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);
for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n
){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(
e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);
break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(
function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){
for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(
this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(
var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){
return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(
){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),
S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,
r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,
o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(
"object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){
var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),
1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){
Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t
){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c
].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;
return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),
"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n
)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,
f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(
arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i
]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(
e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;
this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t
}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,
r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),
r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){
1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(
"string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t
,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(
l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[
0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(
!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(
e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(
e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(
this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},
S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),
originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}
S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(
le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),
null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"
],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},
S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{
set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o
)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(
" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;
t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode
,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),
e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(
new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};
var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();
return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",
isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(
t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global
)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(
v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();
while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))
}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),
t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){
return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(
e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r]
,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(
function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,
"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}
),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(
"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){
return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
/*! jQuery UI - v1.13.2 - 2022-08-01
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}
function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],h.call(s[n],e)&&void 0!==i&&(y.isPlainObject(i)?t[e]=y.isPlainObject(t[e])?y.widget.extend({},t[e],i):y.widget.extend({},i):t[e]=i);return t},y.widget.bridge=function(o,e){var h=e.prototype.widgetFullName||o;y.fn[o]=function(i){var t="string"==typeof i,s=a.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,
e=y.data(this,h);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?y.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:y.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=y.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=y.data(this,h);t?(t.option(i||{}),t._init&&t._init()):y.data(this,h,new e(i,this))})),n}},y.Widget=function(){},y.Widget._childConstructors=[],y.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t
){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t
]=y.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=y(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},
disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],h=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=h.classesElementLookup[t[s]]||y(),i=n.add?(function(){var i=[];n.element.each(function(t,e){y.map(h.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),h._on(y(i),{remove:"_untrackClassesElement"})}(),y(y.uniqueSort(i.get().concat(n.element.get())))):y(i.not(n.element).get()),h.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=y.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;y.each(s.classesElementLookup,function(t,e){-1!==y.inArray(i.target,e)&&(s.classesElementLookup[t]=y(e.not(i.target).get()))}),this._off(y(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){
return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var h,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=h=y(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,h=this.widget()),y.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!y(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||y.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+a.eventNamespace,s=s[2];s?h.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=y(this.bindings.not(t).get()),this.focusable=y(this.focusable.not(t).get()),this.hoverable=y(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return(
"string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(y(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(y(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=y.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},y.each({show:"fadeIn",hide:"fadeOut"},function(o,h){y.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t
)?!0!==t&&"number"!=typeof t&&t.effect||h:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!y.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&y.effects&&y.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){y(this)[o](),i&&i.call(e[0]),t()})}});var s,x,D,o,r,l,u,p,W;y.widget;function E(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function H(t,e){return parseInt(y.css(t,e),10)||0}function S(t){return null!=t&&t===t.window}x=Math.max,D=Math.abs,o=/left|center|right/,r=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,u=/^\w+/,p=/%$/,W=y.fn.position,y.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=y("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},
getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?y.position.scrollbarWidth():0,height:e?y.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=y(t||window),i=S(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?y(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},y.fn.position=function(p){if(!p||!p.of)return W.apply(this,arguments);var d,c,f,g,m,t,_="string"==typeof(p=y.extend({},p)).of?y(document).find(p.of):y(p.of),w=y.position.getWithinInfo(p.within),v=y.position.getScrollInfo(w),b=(p.collision||"flip").split(" "),z={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:S(t)?{width:e.width(),height:e.height(),offset:{
top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(p.at="left top"),c=e.width,f=e.height,m=y.extend({},g=e.offset),y.each(["my","at"],function(){var t,e,i=(p[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),z[this]=[t?t[0]:0,e?e[0]:0],p[this]=[u.exec(i[0])[0],u.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===p.at[0]?m.left+=c:"center"===p.at[0]&&(m.left+=c/2),"bottom"===p.at[1]?m.top+=f:"center"===p.at[1]&&(m.top+=f/2),d=E(z.at,c,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,h=y(this),a=h.outerWidth(),r=h.outerHeight(),e=H(this,"marginLeft"),s=H(this,"marginTop"),n=a+e+H(this,"marginRight")+v.width,o=r+s+H(this,"marginBottom")+v.height,l=y.extend({},m),u=E(z.my,h.outerWidth()
,h.outerHeight());"right"===p.my[0]?l.left-=a:"center"===p.my[0]&&(l.left-=a/2),"bottom"===p.my[1]?l.top-=r:"center"===p.my[1]&&(l.top-=r/2),l.left+=u[0],l.top+=u[1],i={marginLeft:e,marginTop:s},y.each(["left","top"],function(t,e){y.ui.position[b[t]]&&y.ui.position[b[t]][e](l,{targetWidth:c,targetHeight:f,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+u[0],d[1]+u[1]],my:p.my,at:p.at,within:w,elem:h})}),p.using&&(t=function(t){var e=g.left-l.left,i=e+c-a,s=g.top-l.top,n=s+f-r,o={target:{element:_,left:g.left,top:g.top,width:c,height:f},element:{element:h,left:l.left,top:l.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};c<a&&D(e+i)<c&&(o.horizontal="center"),f<r&&D(s+n)<f&&(o.vertical="middle"),x(D(e),D(i))>x(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,
s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0<h&&a<=0?(i=t.left+h+e.collisionWidth-n-s,t.left+=h-i):t.left=!(0<a&&h<=0)&&a<h?s+n-e.collisionWidth:s:0<h?t.left+=h:0<a?t.left-=a:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,h=s-o,a=o+e.collisionHeight-n-s;e.collisionHeight>n?0<h&&a<=0?(i=t.top+h+e.collisionHeight-n-s,t.top+=h-i):t.top=!(0<a&&h<=0)&&a<h?s+n-e.collisionHeight:s:0<h?t.top+=h:0<a?t.top-=a:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,h=t.left-e.collisionPosition.marginLeft,a=h-o,r=h+e.collisionWidth-n-o,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];a<0?((s=t.left+l+i+h+e.collisionWidth-n-s)<0||s<D(a)
)&&(t.left+=l+i+h):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+l+i+h-o)||D(o)<r)&&(t.left+=l+i+h)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,h=t.top-e.collisionPosition.marginTop,a=h-o,r=h+e.collisionHeight-n-o,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];a<0?((s=t.top+l+i+h+e.collisionHeight-n-s)<0||s<D(a))&&(t.top+=l+i+h):0<r&&(0<(o=t.top-e.collisionPosition.marginTop+l+i+h-o)||D(o)<r)&&(t.top+=l+i+h)}},flipfit:{left:function(){y.ui.position.flip.left.apply(this,arguments),y.ui.position.fit.left.apply(this,arguments)},top:function(){y.ui.position.flip.top.apply(this,arguments),y.ui.position.fit.top.apply(this,arguments)}}};var t;y.ui.position,y.extend(y.expr.pseudos,{data:y.expr.createPseudo?y.expr.createPseudo(function(e){return function(t){return!!y.data(t,e)}}):function(t,e,i){return!!y.data(t,i[3])}}),y.fn.extend({
disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});y.ui.focusable=function(t,e){var i,s,n,o,h=t.nodeName.toLowerCase();return"area"===h?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=y("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(h)?(n=!t.disabled)&&(o=y(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===h&&t.href||e,n&&y(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(y(t)))},y.extend(y.expr.pseudos,{focusable:function(t){return y.ui.focusable(t,null!=y.attr(t,"tabindex"))}});var e,d;y.ui.focusable,y.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):y(this[0].form)},y.ui.formResetMixin={_formResetHandler:function(
){var e=y(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");y.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(y.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};y.expr.pseudos||(y.expr.pseudos=y.expr[":"]),y.uniqueSort||(y.uniqueSort=y.unique),y.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,d=function(t,e){return e?"\0"===t?"<22>":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},y.escapeSelector=function(t){return(t+"").replace(e,d)}),y.fn.even&&y.fn.odd||y.fn.extend({even:function(){
return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});y.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},y.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+y.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},y.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=y(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:y(this[0].ownerDocument||document)},y.extend(y.expr.pseudos,{tabbable:function(t){
var e=y.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&y.ui.focusable(t,i)}}),y.fn.extend({uniqueId:(c=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++c)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&y(this).removeAttr("id")})}}),y.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c,f=!1;y(document).on("mouseup",function(){f=!1});y.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===y.data(t.target,e.widgetName+".preventClickEvent"))return y.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off(
"mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!f){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&y(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===y.data(t.target,this.widgetName+".preventClickEvent")&&y.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),f=!0)):!0}},
_mouseMove:function(t){if(this._mouseMoved){if(y.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&y.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),
delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,f=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}};y.widget("ui.resizable",y.ui.mouse,{version:"1.13.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,
handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===y(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),y.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(y("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),
this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t
).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(
","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=y("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(
this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{
width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),
!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){
this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)
),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height
,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({
height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||y("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,
i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left
)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e
){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),
i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth(
)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,
function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0
]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<c,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<c-l?(e.size.height=c,e.position.top=o.top-p):(c=l-t.height,e.size.height=c,e.position.top=o.top+n.height-c),0<d-r?(e.size.width=d,e.position.left=o.left-u):(d=r-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});y.ui.resizable});
/**
* Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
* Licensed under MIT
* @author Ariel Flesler
* @version 2.1.2
*/(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"===typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9e9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case"number":case"string":if(
/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e=h(e);break}e=l?$(e):$(e,q);case"object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&&"%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};
$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()},set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
/*!
PowerTip v1.3.1 (2018-04-15)
https://stevenbenner.github.io/jquery-powertip/
Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
Released under MIT license.
https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
*/
(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,
delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){
targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se",
"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(
session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}
closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;
openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2
);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",
position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;
top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(
placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(
session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,
function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);
tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,
finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));
return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}
function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),
elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,
viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});
/*!
* jQuery UI Touch Punch 0.2.3
*
* Copyright 20112014, Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Depends:
* jquery.ui.widget.js
* jquery.ui.mouse.js
*/!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,
"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
* http://www.smartmenus.org/
* Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),
mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend(
$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(
this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData(
"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id"
).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(
this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(
var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){
return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((
!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(
this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0
]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass(
"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){
t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]"
)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){
t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),
a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(
e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,
downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2)
)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t
)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),
canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},
rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}
return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,
bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});

View File

@@ -0,0 +1,66 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Namespaces",url:"namespaces.html",children:[
{text:"Namespace List",url:"namespaces.html"},
{text:"Namespace Members",url:"namespacemembers.html",children:[
{text:"All",url:"namespacemembers.html"},
{text:"Functions",url:"namespacemembers_func.html"}]}]},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Hierarchy",url:"hierarchy.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"_",url:"functions.html#index__5F"},
{text:"b",url:"functions.html#index_b"},
{text:"c",url:"functions.html#index_c"},
{text:"e",url:"functions.html#index_e"},
{text:"f",url:"functions.html#index_f"},
{text:"g",url:"functions.html#index_g"},
{text:"i",url:"functions.html#index_i"},
{text:"m",url:"functions.html#index_m"},
{text:"o",url:"functions.html#index_o"},
{text:"p",url:"functions.html#index_p"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"u",url:"functions.html#index_u"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"_",url:"functions_func.html#index__5F"},
{text:"b",url:"functions_func.html#index_b"},
{text:"c",url:"functions_func.html#index_c"},
{text:"e",url:"functions_func.html#index_e"},
{text:"f",url:"functions_func.html#index_f"},
{text:"g",url:"functions_func.html#index_g"},
{text:"i",url:"functions_func.html#index_i"},
{text:"m",url:"functions_func.html#index_m"},
{text:"o",url:"functions_func.html#index_o"},
{text:"p",url:"functions_func.html#index_p"},
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"u",url:"functions_func.html#index_u"}]}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}

View File

@@ -0,0 +1,76 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Namespace Members</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="contents">
<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div><ul>
<li>base64decode()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa">FastAPIServer</a></li>
<li>book_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0">FastAPIServer</a></li>
<li>books_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a">FastAPIServer</a></li>
<li>collections_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08">FastAPIServer</a></li>
<li>convertDateTime()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c">FastAPIServer</a></li>
<li>main()&#160;:&#160;<a class="el" href="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46">src.__main__</a></li>
<li>run_import()&#160;:&#160;<a class="el" href="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05">src.__main__</a></li>
<li>summarize()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96">FastAPIServer</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,76 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Namespace Members</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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="contents">
<div class="textblock">Here is a list of all documented namespace functions with links to the namespaces they belong to:</div><ul>
<li>base64decode()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a189ba023c861b3e00b9432b679e6a0aa">FastAPIServer</a></li>
<li>book_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a57dbe9eeedbc1c135d3d81cda6dceab0">FastAPIServer</a></li>
<li>books_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#aa75759d299983913ba15f5198435606a">FastAPIServer</a></li>
<li>collections_tojson()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a919f0a47c4009492ae493f74e22b9e08">FastAPIServer</a></li>
<li>convertDateTime()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#af26d1833d1dd63e3e5be68fb617ca71c">FastAPIServer</a></li>
<li>main()&#160;:&#160;<a class="el" href="d7/dd7/namespacesrc_1_1____main____.html#a4bf4af10fb0dca61ba7e588294aa9d46">src.__main__</a></li>
<li>run_import()&#160;:&#160;<a class="el" href="d7/dd7/namespacesrc_1_1____main____.html#a2c8551ba43ae16533cec7279c987ef05">src.__main__</a></li>
<li>summarize()&#160;:&#160;<a class="el" href="db/dd5/namespaceFastAPIServer.html#a6c2e0cf336fd48a0b3d068c891da5f96">FastAPIServer</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: Namespace 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 id="projectrow">
<td id="projectalign">
<div id="projectname">pyShelf Open Source Ebook Server<span id="projectnumber">&#160;0.8.0</span>
</div>
<div id="projectbrief">FOSS E-Book Server, https://pyshelf.com</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">Namespace List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span><span onclick="javascript:dynsection.toggleLevel(4);">4</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">N</span></span><a class="el" href="d7/df9/namespaceDataHooks.html" target="_self">DataHooks</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="db/dd5/namespaceFastAPIServer.html" target="_self">FastAPIServer</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="df/d4c/namespaceobjects.html" target="_self">objects</a></td><td class="desc"></td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')"><span class="arrowhead opened"></span></span><span class="icona"><span class="icon">N</span></span><b>src</b></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d7/dd7/namespacesrc_1_1____main____.html" target="_self">__main__</a></td><td class="desc"></td></tr>
<tr id="row_3_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><b>backend</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on <span class="timestamp"></span> for pyShelf Open Source Ebook Server by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>

27
docs/pyShelf/man/man3/DataHooks.3 vendored Normal file
View File

@@ -0,0 +1,27 @@
.TH "DataHooks" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
DataHooks
.SH SYNOPSIS
.br
.PP
.SS "Classes"
.in +1c
.ti -1c
.RI "class \fBBookInterface\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
pyShelf's frontend database hooks\&.
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,37 @@
.TH "DataHooks.BookInterface" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
DataHooks.BookInterface
.SH SYNOPSIS
.br
.PP
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBconfig\fP = config"
.br
.ti -1c
.RI "\fBdb\fP = \fBStorage\fP(self\&.config)"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Access point for book database\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "DataHooks\&.BookInterface\&.config = config"
.SS "DataHooks\&.BookInterface\&.db = \fBStorage\fP(self\&.config)"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

165
docs/pyShelf/man/man3/FastAPIServer.3 vendored Normal file
View File

@@ -0,0 +1,165 @@
.TH "FastAPIServer" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
FastAPIServer
.SH SYNOPSIS
.br
.PP
.SS "Classes"
.in +1c
.ti -1c
.RI "class \fBFastAPIServer\fP"
.br
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "str \fBbase64decode\fP (string)"
.br
.ti -1c
.RI "str \fBsummarize\fP (string)"
.br
.ti -1c
.RI "str \fBconvertDateTime\fP (datetime timestamp)"
.br
.ti -1c
.RI "dumps \fBbooks_tojson\fP (obj)"
.br
.ti -1c
.RI "dumps \fBbook_tojson\fP (book)"
.br
.ti -1c
.RI "dumps \fBtojson\fP (obj)"
.br
.ti -1c
.RI "dumps \fBcollections_tojson\fP (collection)"
.br
.in -1c
.SS "Variables"
.in +1c
.ti -1c
.RI "\fBapp\fP = FastAPI()"
.br
.ti -1c
.RI "\fBSTATIC_DIR\fP"
.br
.ti -1c
.RI "\fBTEMPLATES_DIR\fP"
.br
.ti -1c
.RI "\fBtemplates\fP = Jinja2Templates(directory=str(TEMPLATES_DIR))"
.br
.ti -1c
.RI "list \fBorigins\fP"
.br
.ti -1c
.RI "\fBallow_origins\fP"
.br
.ti -1c
.RI "\fBallow_credentials\fP"
.br
.ti -1c
.RI "\fBallow_methods\fP"
.br
.ti -1c
.RI "\fBallow_headers\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
pyShelf's main frontend library\&.
.fi
.PP
.SH "Function Documentation"
.PP
.SS " str FastAPIServer\&.base64decode ( string)"
.PP
.nf
Decode a base64 string\&.
.fi
.PP
.SS " dumps FastAPIServer\&.book_tojson ( book)"
.PP
.nf
Convert a book object to a json\&.
.fi
.PP
.SS " dumps FastAPIServer\&.books_tojson ( obj)"
.PP
.nf
Convert an object to a dictionary\&.
.fi
.PP
.SS " dumps FastAPIServer\&.collections_tojson ( collection)"
.PP
.nf
Convert a collections object to json\&.
.fi
.PP
.SS " str FastAPIServer\&.convertDateTime (datetime timestamp)"
.PP
.nf
Convert a datetime object to a string\&.
.fi
.PP
.SS " str FastAPIServer\&.summarize ( string)"
.PP
.nf
Summarize a string\&.
.fi
.PP
.SS " dumps FastAPIServer\&.tojson ( obj)"
.SH "Variable Documentation"
.PP
.SS "FastAPIServer\&.allow_credentials"
.SS "FastAPIServer\&.allow_headers"
.SS "FastAPIServer\&.allow_methods"
.SS "FastAPIServer\&.allow_origins"
.SS "FastAPIServer\&.app = FastAPI()"
.SS "list FastAPIServer\&.origins"
\fBInitial value:\fP
.nf
1 = [
2 "http://localhost",
3 "http://localhost:8081",
4 "http://localhost:8080",
5 "*"
6 ]
.PP
.fi
.SS "FastAPIServer\&.STATIC_DIR"
.SS "FastAPIServer\&.templates = Jinja2Templates(directory=str(TEMPLATES_DIR))"
.SS "FastAPIServer\&.TEMPLATES_DIR"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,152 @@
.TH "FastAPIServer.FastAPIServer" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
FastAPIServer.FastAPIServer
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "\fB__init__\fP (self, config)"
.br
.ti -1c
.RI "\fBcompile_static_files\fP (self)"
.br
.ti -1c
.RI "None \fBuse_route_names_as_operation_ids\fP (self, FastAPI app)"
.br
.ti -1c
.RI "\fBindex\fP (Request request, int skip=0, int limit=30)"
.br
.ti -1c
.RI "\fBbooks\fP (Request request, int skip=0, int limit=10, \fBcollection\fP=None)"
.br
.ti -1c
.RI "\fBbook\fP (Request request, int book_id)"
.br
.ti -1c
.RI "\fBbook\fP (Request request, int book_id)"
.br
.ti -1c
.RI "\fBcollections\fP (Request request)"
.br
.ti -1c
.RI "\fBcollection\fP (Request request, str collection, int skip=0, int limit=30)"
.br
.ti -1c
.RI "\fBsearch_books_api\fP (Request request, str search)"
.br
.ti -1c
.RI "\fBrun\fP (self)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBconfig\fP = config"
.br
.ti -1c
.RI "\fBfe_config\fP"
.br
.ti -1c
.RI "\fBfe_server\fP = uvicorn\&.Server(self\&.fe_config)"
.br
.ti -1c
.RI "\fBJSInterface\fP \fBJSInterface\fP = \fBJSInterface\fP(self\&.config)"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Entry point for FastAPI server\&.
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "FastAPIServer\&.FastAPIServer\&.__init__ ( self, config)"
.PP
.nf
Initialize FastAPIServer object parameters\&.
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "FastAPIServer\&.FastAPIServer\&.book (Request request, int book_id)"
.SS "FastAPIServer\&.FastAPIServer\&.book (Request request, int book_id)"
.SS "FastAPIServer\&.FastAPIServer\&.books (Request request, int skip = \fR0\fP, int limit = \fR10\fP, collection = \fRNone\fP)"
.SS "FastAPIServer\&.FastAPIServer\&.collection (Request request, str collection, int skip = \fR0\fP, int limit = \fR30\fP)"
.PP
.nf
Collection file responder\&.
.fi
.PP
.SS "FastAPIServer\&.FastAPIServer\&.collections (Request request)"
.SS "FastAPIServer\&.FastAPIServer\&.compile_static_files ( self)"
.PP
.nf
Compile static files for web frontend\&.
.fi
.PP
.SS "FastAPIServer\&.FastAPIServer\&.index (Request request, int skip = \fR0\fP, int limit = \fR30\fP)"
.SS "FastAPIServer\&.FastAPIServer\&.run ( self)"
.PP
.nf
Front end server entrypoint\&.
.fi
.PP
.SS "FastAPIServer\&.FastAPIServer\&.search_books_api (Request request, str search)"
.PP
.nf
Collection file responder\&.
.fi
.PP
.SS " None FastAPIServer\&.FastAPIServer\&.use_route_names_as_operation_ids ( self, FastAPI app)"
.PP
.nf
Use route name as operation id\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "FastAPIServer\&.FastAPIServer\&.config = config"
.SS "FastAPIServer\&.FastAPIServer\&.fe_config"
\fBInitial value:\fP
.nf
= uvicorn\&.Config(app, host="0\&.0\&.0\&.0", port=8080,
log_level="info", reload=True)
.PP
.fi
.SS "FastAPIServer\&.FastAPIServer\&.fe_server = uvicorn\&.Server(self\&.fe_config)"
.SS "\fBJSInterface\fP FastAPIServer\&.FastAPIServer\&.JSInterface = \fBJSInterface\fP(self\&.config)"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

27
docs/pyShelf/man/man3/objects.3 vendored Normal file
View File

@@ -0,0 +1,27 @@
.TH "objects" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
objects
.SH SYNOPSIS
.br
.PP
.SS "Classes"
.in +1c
.ti -1c
.RI "class \fBJSInterface\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
pyShelf's Frontend Objects\&.
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,67 @@
.TH "objects.JSInterface" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
objects.JSInterface
.SH SYNOPSIS
.br
.PP
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "\fB__init__\fP (self, Config config)"
.br
.ti -1c
.RI "\fBinstall\fP (self)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "Path \fBpackage_json\fP = Path(config\&.root, 'src/frontend/package\&.json')"
.br
.ti -1c
.RI "Config \fBconfig\fP = config"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
A class to interface with the JavaScript side of pyShelf\&.
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "objects\&.JSInterface\&.__init__ ( self, Config config)"
.PP
.nf
Initialize the JSInterface object\&.
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "objects\&.JSInterface\&.install ( self)"
.PP
.nf
Install the JavaScript dependencies\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "Config objects\&.JSInterface\&.config = config"
.SS "Path objects\&.JSInterface\&.package_json = Path(config\&.root, 'src/frontend/package\&.json')"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

69
docs/pyShelf/man/man3/src___main__.3 vendored Normal file
View File

@@ -0,0 +1,69 @@
.TH "src.__main__" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.__main__
.SH SYNOPSIS
.br
.PP
.SS "Functions"
.in +1c
.ti -1c
.RI "\fBrun_import\fP ()"
.br
.ti -1c
.RI "\fBmain\fP ()"
.br
.in -1c
.SS "Variables"
.in +1c
.ti -1c
.RI "\fBroot\fP = Path\&.cwd()"
.br
.ti -1c
.RI "\fBconfig\fP = \fBConfig\fP(root)"
.br
.ti -1c
.RI "\fBPRG_PATH\fP = Path\&.cwd()\&.__str__()"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
PyShelf Entrypoint\&.
.fi
.PP
.SH "Function Documentation"
.PP
.SS "src\&.__main__\&.main ()"
.PP
.nf
Program entrypoint\&.
.fi
.PP
.SS "src\&.__main__\&.run_import ()"
.PP
.nf
Begin live import of books\&.
.fi
.PP
.SH "Variable Documentation"
.PP
.SS "src\&.__main__\&.config = \fBConfig\fP(root)"
.SS "src\&.__main__\&.PRG_PATH = Path\&.cwd()\&.__str__()"
.SS "src\&.__main__\&.root = Path\&.cwd()"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,68 @@
.TH "src.backend.lib.api_hooks.DuckDuckGo" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.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 "\fB__init__\fP (self)"
.br
.ti -1c
.RI "\fBimage_result\fP (self, query)"
.br
.ti -1c
.RI "\fBdescription_result\fP (self, query)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "str \fBurl\fP = 'https://api\&.duckduckgo\&.com/?q='"
.br
.ti -1c
.RI "str \fBimageurl\fP = 'https://duckduckgo\&.com'"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
duckduckgo related searching
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.__init__ ( self)"
.SH "Member Function Documentation"
.PP
.SS "src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.description_result ( self, query)"
.SS "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 "Member Data Documentation"
.PP
.SS "str src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.imageurl = 'https://duckduckgo\&.com'"
.SS "str src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.url = 'https://api\&.duckduckgo\&.com/?q='"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,27 @@
.TH "src.backend.lib.config" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.config
.SH SYNOPSIS
.br
.PP
.SS "Classes"
.in +1c
.ti -1c
.RI "class \fBConfig\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Pyshelf's Configuration Object\&.
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,258 @@
.TH "src.backend.lib.config.Config" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.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 "\fB__init__\fP (self, root)"
.br
.ti -1c
.RI "\fBinit_config\fP (self)"
.br
.ti -1c
.RI "\fBget_logger\fP (self)"
.br
.ti -1c
.RI "\fBopen_file\fP (self)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "\fBroot\fP = root"
.br
.ti -1c
.RI "dict \fBconfig_structure\fP"
.br
.ti -1c
.RI "\fBlogger\fP = self\&.get_logger()"
.br
.ti -1c
.RI "\fBbook_path\fP = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])"
.br
.ti -1c
.RI "str \fBTITLE\fP = env\&.get('TITLE', self\&._data['TITLE'])"
.br
.ti -1c
.RI "\fBVERSION\fP = env\&.get('VERSION', self\&._data['VERSION'])"
.br
.ti -1c
.RI "\fBbook_shelf\fP = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])"
.br
.ti -1c
.RI "\fBcatalogue_db\fP = env\&.get('DATABASE', self\&._data['DATABASE'])"
.br
.ti -1c
.RI "\fBuser\fP = self\&._data['USER']"
.br
.ti -1c
.RI "\fBpassword\fP = self\&._data['PASSWORD']"
.br
.ti -1c
.RI "\fBdb_host\fP = env\&.get('DB_HOST', self\&._data['DB_HOST'])"
.br
.ti -1c
.RI "\fBdb_port\fP = env\&.get('DB_PORT', self\&._data['DB_PORT'])"
.br
.ti -1c
.RI "list \fBfile_array\fP = [self\&.book_shelf]"
.br
.ti -1c
.RI "bool \fBauto_scan\fP = True"
.br
.ti -1c
.RI "\fBallowed_hosts\fP"
.br
.ti -1c
.RI "\fBdb_engine\fP = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])"
.br
.ti -1c
.RI "\fBdb_user\fP = env\&.get('USER', self\&._data['USER'])"
.br
.ti -1c
.RI "\fBdb_pass\fP = env\&.get('PASSWORD', self\&._data['PASSWORD'])"
.br
.ti -1c
.RI "\fBbuild_mode\fP = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])"
.br
.in -1c
.SS "Protected Attributes"
.in +1c
.ti -1c
.RI "str \fB_fp\fP = 'config\&.json'"
.br
.ti -1c
.RI "\fB_cp\fP = Path\&.joinpath(root, self\&._fp)"
.br
.ti -1c
.RI "\fB_data\fP = self\&.init_config()"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Main System Configuration\&.
>>> config = Config(root)
Parameters
----------
root : File system root of program
Attributes
----------
root : str() stores root\&.
config_structure : dict() Default Configuration Structure\&.
_fp : str() file pointer to main configuration\&.
_cp : Path() object of configuration file\&.
_data : dict() parsed json of _fp\&.
logger : holds logging configuration from get_logger()\&.
book_path : directory pointer to main books folder\&.
TITLE : str() Program title\&.
VERSION : str() Program version\&.
TITLE : str() Combines TITLE & VERSION\&.
book_shelf : Deprecation TODO: Is this still in use?
catalogue_db : str() Database Name\&.
user : str() Database user name\&.
password : str() Database password\&.
db_host : str() Database host\&.
db_port : int() Database port\&.
file_array : list() copy of book_shelf TODO: See book_shelf
auto_scan: bool() Do we auto scan on launch?
allowed_hosts : list() Allowed host list\&.
db_engine : str() Desired database engine type\&.
db_user : str() Database user name\&. Duplication Warning\&.
db_pass : str() Database password\&. Duplication Warning\&.
build_mode : str() Production | Development mode\&.
Methods
-------
get_logger : Setup loguru\&.
open_file : Parse configuration file\&.
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "src\&.backend\&.lib\&.config\&.Config\&.__init__ ( self, root)"
.PP
.nf
Initialize main configuration options\&.
.fi
.PP
.SH "Member Function Documentation"
.PP
.SS "src\&.backend\&.lib\&.config\&.Config\&.get_logger ( self)"
.PP
.nf
Instantiate logging system\&.
.fi
.PP
.SS "src\&.backend\&.lib\&.config\&.Config\&.init_config ( self)"
.SS "src\&.backend\&.lib\&.config\&.Config\&.open_file ( self)"
.PP
.nf
Open config\&.json and reads in configuration options\&.
.fi
.PP
.PP
Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Config\fP\&.
.SH "Member Data Documentation"
.PP
.SS "src\&.backend\&.lib\&.config\&.Config\&._cp = Path\&.joinpath(root, self\&._fp)\fR [protected]\fP"
.SS "src\&.backend\&.lib\&.config\&.Config\&._data = self\&.init_config()\fR [protected]\fP"
.SS "src\&.backend\&.lib\&.config\&.Config\&._fp = 'config\&.json'\fR [protected]\fP"
.SS "src\&.backend\&.lib\&.config\&.Config\&.allowed_hosts"
\fBInitial value:\fP
.nf
= env\&.get("ALLOWED_HOSTS",
self\&._data["ALLOWED_HOSTS"])
.PP
.fi
.SS "bool src\&.backend\&.lib\&.config\&.Config\&.auto_scan = True"
.SS "src\&.backend\&.lib\&.config\&.Config\&.book_path = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.book_shelf = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.build_mode = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.catalogue_db = env\&.get('DATABASE', self\&._data['DATABASE'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.config_structure"
\fBInitial value:\fP
.nf
= {
"TITLE": "pyShelf E\-Book Server",
"VERSION": "0\&.7\&.0",
"BOOKPATH": "/mnt/books",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_ENGINE": "sqlite",
"DATABASE": "pyshelf",
"USER": "pyshelf",
"PASSWORD": "pyshelf",
"BOOKSHELF": "data/shelf\&.json",
"ALLOWED_HOSTS": [
"localhost",
"127\&.0\&.0\&.1",
"[::1]",
"0\&.0\&.0\&.0"
],
"BUILD_MODE": "development"
}
.PP
.fi
.SS "src\&.backend\&.lib\&.config\&.Config\&.db_engine = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.db_host = env\&.get('DB_HOST', self\&._data['DB_HOST'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.db_pass = env\&.get('PASSWORD', self\&._data['PASSWORD'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.db_port = env\&.get('DB_PORT', self\&._data['DB_PORT'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.db_user = env\&.get('USER', self\&._data['USER'])"
.SS "list src\&.backend\&.lib\&.config\&.Config\&.file_array = [self\&.book_shelf]"
.SS "src\&.backend\&.lib\&.config\&.Config\&.logger = self\&.get_logger()"
.SS "src\&.backend\&.lib\&.config\&.Config\&.password = self\&._data['PASSWORD']"
.SS "src\&.backend\&.lib\&.config\&.Config\&.root = root"
.SS "str src\&.backend\&.lib\&.config\&.Config\&.TITLE = env\&.get('TITLE', self\&._data['TITLE'])"
.SS "src\&.backend\&.lib\&.config\&.Config\&.user = self\&._data['USER']"
.SS "src\&.backend\&.lib\&.config\&.Config\&.VERSION = env\&.get('VERSION', self\&._data['VERSION'])"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,272 @@
.TH "src.backend.lib.library.Catalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.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\&.lib\&.overide\&.ACatalogue\fP, and \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "\fB__init__\fP (self, config)"
.br
.ti -1c
.RI "\fBscan_folder\fP (self, _path=None)"
.br
.ti -1c
.RI "\fBfilter_books\fP (self)"
.br
.ti -1c
.RI "\fBprocess_by_filetype\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_epub\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_pdf\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_mobi\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_content\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBextract_cover_html\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBextract_cover_image\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBcompare_shelf_current\fP (self)"
.br
.ti -1c
.RI "\fBimport_books\fP (self, list=None, **kwargs)"
.br
.in -1c
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "\fBprocess_epub\fP (book)"
.br
.ti -1c
.RI "\fBstripTags\fP (source)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "list \fBfile_list\fP = []"
.br
.ti -1c
.RI "\fBopf_regx\fP = re\&.compile(r'\\\&.opf')"
.br
.ti -1c
.RI "\fBcover_regx\fP = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')"
.br
.ti -1c
.RI "\fBhtml_regx\fP = re\&.compile(r'\\\&.html')"
.br
.ti -1c
.RI "\fBtitle_sanitization_regx\fP = re\&.compile(r'^(Book )+[0\-9]*')"
.br
.ti -1c
.RI "\fBtitle_sanitization_lvl2_regx\fP"
.br
.ti -1c
.RI "\fBtitle_sanitization_dirs_regx\fP = re\&.compile(r'/')"
.br
.ti -1c
.RI "\fBroot_dir\fP = config\&.root"
.br
.ti -1c
.RI "\fBbook_folder\fP = config\&.book_path"
.br
.ti -1c
.RI "\fBbooks\fP = None"
.br
.ti -1c
.RI "\fBdb_pointer\fP = config\&.catalogue_db"
.br
.ti -1c
.RI "\fBconfig\fP = config"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Decodes book metadata for storage
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.__init__ ( self, config)"
.SH "Member Function Documentation"
.PP
.SS "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 "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 "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 "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 "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_epub ( self, book)"
.PP
.nf
Extract metadata from epub file
:param book: Dictionary of epub file contents
:returns: Dictionary of book metadata
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_mobi ( self, book)"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_pdf ( self, book)"
.PP
.nf
Return extracted metadata
:NOTES: Retrieval of data has been problematic, some pdf's providing
reliable titles that corespond with the actual, and others being
nonsense\&.
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)"
.PP
.nf
Calls scan_folder and filters out book files\&.
: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 "src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fRNone\fP, ** kwargs)"
.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
.PP
Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&.
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_by_filetype ( self, book)"
.PP
.nf
Determine books filetype and process\&.
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_epub ( book)\fR [static]\fP"
.PP
.nf
Return dictionary of epub file contents
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fRNone\fP)"
.PP
.nf
Scan folder by _path, allows recurisive scanning
:param _path: Path to scan
.fi
.PP
.PP
Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&.
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.stripTags ( source)\fR [static]\fP"
.SH "Member Data Documentation"
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.book_folder = config\&.book_path"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.books = None"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.config = config"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.cover_regx = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.db_pointer = config\&.catalogue_db"
.SS "list src\&.backend\&.lib\&.library\&.Catalogue\&.file_list = []"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.html_regx = re\&.compile(r'\\\&.html')"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.opf_regx = re\&.compile(r'\\\&.opf')"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.root_dir = config\&.root"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_dirs_regx = re\&.compile(r'/')"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_lvl2_regx"
\fBInitial value:\fP
.nf
= re\&.compile(
r"^(Book )+[0\-9]*\\W+(\-)")
.PP
.fi
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_regx = re\&.compile(r'^(Book )+[0\-9]*')"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,25 @@
.TH "src.backend.lib.models.Base" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.models.Base
.SH SYNOPSIS
.br
.PP
.PP
Inherits DeclarativeBase\&.
.PP
Inherited by \fBsrc\&.backend\&.lib\&.models\&.Book\fP, \fBsrc\&.backend\&.lib\&.models\&.BookCollection\fP, \fBsrc\&.backend\&.lib\&.models\&.Collection\fP, and \fBsrc\&.backend\&.lib\&.models\&.User\fP\&.
.SH "Detailed Description"
.PP
.PP
.nf
Base class for all models\&.
.fi
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,111 @@
.TH "src.backend.lib.models.Book" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.models.Book
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&.
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "Mapped \fBid\fP = mapped_column(primary_key=True, nullable=False)"
.br
.ti -1c
.RI "Mapped \fBtitle\fP [str]"
.br
.ti -1c
.RI "Mapped \fBauthor\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBcategories\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBcover\fP [Optional[bytes]]"
.br
.ti -1c
.RI "Mapped \fBpages\fP [Optional[int]]"
.br
.ti -1c
.RI "Mapped \fBprogress\fP [Optional[float]]"
.br
.ti -1c
.RI "Mapped \fBfile_name\fP [str]"
.br
.ti -1c
.RI "Mapped \fBdescription\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBdate\fP [timestamp]"
.br
.ti -1c
.RI "Mapped \fBrights\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBtags\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBidentifier\fP [Optional[str]]"
.br
.ti -1c
.RI "Mapped \fBpublisher\fP [Optional[str]]"
.br
.ti -1c
.RI "\fBbook_collections\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Book model\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.author [Optional[str]]\fR [static]\fP"
.SS "src\&.backend\&.lib\&.models\&.Book\&.book_collections\fR [static]\fP"
\fBInitial value:\fP
.nf
= relationship(
"BookCollection", back_populates="book", cascade="all, delete\-orphan"
)
.PP
.fi
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.categories [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.cover [Optional[bytes]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.date [timestamp]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.description [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.file_name [str]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.id = mapped_column(primary_key=True, nullable=False)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.identifier [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.pages [Optional[int]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.progress [Optional[float]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.publisher [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.rights [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.tags [Optional[str]]\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.title [str]\fR [static]\fP"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,54 @@
.TH "src.backend.lib.models.BookCollection" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.models.BookCollection
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&.
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "Mapped \fBid\fP = mapped_column(primary_key=True)"
.br
.ti -1c
.RI "Mapped \fBbook_id\fP = mapped_column(ForeignKey('Book\&.id'))"
.br
.ti -1c
.RI "Mapped \fBcollection_id\fP = mapped_column(ForeignKey('Collection\&.id'))"
.br
.ti -1c
.RI "\fBbook\fP = relationship('Book', back_populates='book_collections')"
.br
.ti -1c
.RI "\fBcollection\fP = relationship('Collection', back_populates='book_collections')"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Association table linking Books and Collections\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "src\&.backend\&.lib\&.models\&.BookCollection\&.book = relationship('Book', back_populates='book_collections')\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.book_id = mapped_column(ForeignKey('Book\&.id'))\fR [static]\fP"
.SS "src\&.backend\&.lib\&.models\&.BookCollection\&.collection = relationship('Collection', back_populates='book_collections')\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.collection_id = mapped_column(ForeignKey('Collection\&.id'))\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.id = mapped_column(primary_key=True)\fR [static]\fP"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,51 @@
.TH "src.backend.lib.models.Collection" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.models.Collection
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&.
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "Mapped \fBid\fP = mapped_column(primary_key=True)"
.br
.ti -1c
.RI "Mapped \fBname\fP = mapped_column(unique=True)"
.br
.ti -1c
.RI "\fBbook_collections\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Collection model\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "src\&.backend\&.lib\&.models\&.Collection\&.book_collections\fR [static]\fP"
\fBInitial value:\fP
.nf
= relationship(
"BookCollection", back_populates="collection", cascade="all, delete\-orphan"
)
.PP
.fi
.SS "Mapped src\&.backend\&.lib\&.models\&.Collection\&.id = mapped_column(primary_key=True)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.Collection\&.name = mapped_column(unique=True)\fR [static]\fP"
.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.lib.models.User" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.models.User
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&.
.SS "Static Public Attributes"
.in +1c
.ti -1c
.RI "Mapped \fBid\fP = mapped_column(primary_key=True, nullable=False)"
.br
.ti -1c
.RI "Mapped \fBusername\fP = mapped_column(unique=True, nullable=False)"
.br
.ti -1c
.RI "Mapped \fBpassword\fP = mapped_column(nullable=False)"
.br
.ti -1c
.RI "Mapped \fBemail\fP = mapped_column(unique=True, nullable=True)"
.br
.ti -1c
.RI "Mapped \fBdate_joined\fP"
.br
.ti -1c
.RI "Mapped \fBlast_login\fP"
.br
.ti -1c
.RI "Mapped \fBis_active\fP = mapped_column(nullable=False, default=True)"
.br
.ti -1c
.RI "Mapped \fBis_admin\fP = mapped_column(nullable=False, default=False)"
.br
.ti -1c
.RI "Mapped \fBis_superuser\fP = mapped_column(nullable=False, default=False)"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
User model\&.
.fi
.PP
.SH "Member Data Documentation"
.PP
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.date_joined\fR [static]\fP"
\fBInitial value:\fP
.nf
= mapped_column(
nullable=False, server_default=func\&.CURRENT_TIMESTAMP()
)
.PP
.fi
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.email = mapped_column(unique=True, nullable=True)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.id = mapped_column(primary_key=True, nullable=False)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_active = mapped_column(nullable=False, default=True)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_admin = mapped_column(nullable=False, default=False)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_superuser = mapped_column(nullable=False, default=False)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.last_login\fR [static]\fP"
\fBInitial value:\fP
.nf
= mapped_column(
nullable=True, server_default=None
)
.PP
.fi
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.password = mapped_column(nullable=False)\fR [static]\fP"
.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.username = mapped_column(unique=True, nullable=False)\fR [static]\fP"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

View File

@@ -0,0 +1,269 @@
.TH "src.backend.lib.overide.ACatalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*-
.ad l
.nh
.SH NAME
src.backend.lib.overide.ACatalogue
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&.
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "\fB__init__\fP (self)"
.br
.ti -1c
.RI "\fBscan_folder\fP (self, _path=None)"
.br
.ti -1c
.RI "\fBimport_books\fP (self, **kwargs)"
.br
.ti -1c
.RI "\fBfilter_books\fP (self)"
.br
.ti -1c
.RI "\fBprocess_by_filetype\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_epub\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_pdf\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_metadata_mobi\fP (self, book)"
.br
.ti -1c
.RI "\fBextract_content\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBextract_cover_html\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBextract_cover_image\fP (self, book_zip, book)"
.br
.ti -1c
.RI "\fBcompare_shelf_current\fP (self)"
.br
.in -1c
.SS "Static Public Member Functions"
.in +1c
.ti -1c
.RI "\fBprocess_epub\fP (book)"
.br
.ti -1c
.RI "\fBstripTags\fP (source)"
.br
.in -1c
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "list \fBfile_list\fP = []"
.br
.ti -1c
.RI "\fBopf_regx\fP = re\&.compile(r'\\\&.opf')"
.br
.ti -1c
.RI "\fBcover_regx\fP = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')"
.br
.ti -1c
.RI "\fBhtml_regx\fP = re\&.compile(r'\\\&.html')"
.br
.ti -1c
.RI "\fBtitle_sanitization_regx\fP = re\&.compile(r'^(Book )+[0\-9]*')"
.br
.ti -1c
.RI "\fBtitle_sanitization_lvl2_regx\fP"
.br
.ti -1c
.RI "\fBtitle_sanitization_dirs_regx\fP = re\&.compile(r'/')"
.br
.ti -1c
.RI "\fBroot_dir\fP = config\&.root"
.br
.ti -1c
.RI "\fBbook_folder\fP = config\&.book_path"
.br
.ti -1c
.RI "\fBbooks\fP = None"
.br
.ti -1c
.RI "\fBdb_pointer\fP = config\&.catalogue_db"
.br
.ti -1c
.RI "\fBconfig\fP = config"
.br
.in -1c
.SH "Detailed Description"
.PP
.PP
.nf
Aynchronous overide of library\&.Catalogue,
: TODO : Complete or discard this overide
.fi
.PP
.SH "Constructor & Destructor Documentation"
.PP
.SS "src\&.backend\&.lib\&.overide\&.ACatalogue\&.__init__ ( self)"
.SH "Member Function Documentation"
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)\fR [inherited]\fP"
.PP
.nf
Calls storage system, gets list of books stored and compares against files on disk
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)\fR [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching opf_regx
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)\fR [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching html_regx
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)\fR [inherited]\fP"
.PP
.nf
Opens epub as zip file filters then stores as list any files matching cover_regx
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_epub ( self, book)\fR [inherited]\fP"
.PP
.nf
Extract metadata from epub file
:param book: Dictionary of epub file contents
:returns: Dictionary of book metadata
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_mobi ( self, book)\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_pdf ( self, book)\fR [inherited]\fP"
.PP
.nf
Return extracted metadata
:NOTES: Retrieval of data has been problematic, some pdf's providing
reliable titles that corespond with the actual, and others being
nonsense\&.
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)\fR [inherited]\fP"
.PP
.nf
Calls scan_folder and filters out book files\&.
: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 "src\&.backend\&.lib\&.overide\&.ACatalogue\&.import_books ( self, ** kwargs)"
.PP
.nf
Async overide of import_books
.fi
.PP
.PP
Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&.
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_by_filetype ( self, book)\fR [inherited]\fP"
.PP
.nf
Determine books filetype and process\&.
.fi
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_epub ( book)\fR [static]\fP, \fR [inherited]\fP"
.PP
.nf
Return dictionary of epub file contents
.fi
.PP
.SS "src\&.backend\&.lib\&.overide\&.ACatalogue\&.scan_folder ( self, _path = \fRNone\fP)"
.PP
.nf
Scan folder by _path, allows recurisive scanning
.fi
.PP
.PP
Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&.
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.stripTags ( source)\fR [static]\fP, \fR [inherited]\fP"
.SH "Member Data Documentation"
.PP
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.book_folder = config\&.book_path\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.books = None\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.config = config\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.cover_regx = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.db_pointer = config\&.catalogue_db\fR [inherited]\fP"
.SS "list src\&.backend\&.lib\&.library\&.Catalogue\&.file_list = []\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.html_regx = re\&.compile(r'\\\&.html')\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.opf_regx = re\&.compile(r'\\\&.opf')\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.root_dir = config\&.root\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_dirs_regx = re\&.compile(r'/')\fR [inherited]\fP"
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_lvl2_regx\fR [inherited]\fP"
\fBInitial value:\fP
.nf
= re\&.compile(
r"^(Book )+[0\-9]*\\W+(\-)")
.PP
.fi
.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_regx = re\&.compile(r'^(Book )+[0\-9]*')\fR [inherited]\fP"
.SH "Author"
.PP
Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&.

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