Merge pull request #87 from th3r00t/0.8.0--dev-noreview

0.8.0  dev noreview
This commit is contained in:
th3r00t
2025-08-11 12:55:39 -04:00
committed by GitHub
946 changed files with 22848 additions and 265664 deletions

4
.envrc vendored Normal file
View File

@@ -0,0 +1,4 @@
source .venv/bin/activate
uv sync
export PYTHONBREAKPOINT="pudb.set_trace"
export PYTHONSTARTUP="ipython_startup.py"

2
.gitattributes vendored
View File

@@ -1,4 +1,4 @@
* linguist-vendored
*.py linguist-vendored=false
*.py linguist-vendored=true
*.js linguist-vendored=false
*.html linguist-vendored=false

7
.gitignore vendored
View File

@@ -1,19 +1,25 @@
books/*
release/pyshelf
*.epub
*.idea
*.pyc
*.css
.svn/
app/content.opf
.vscode
fontend/db.sqlite3
*.sqlite3
GPATH
GRTAGS
GTAGS
data/shelf.json
data/pyshelf.log
package-lock.json
.#*
frontend/interface/migrations/*
src/backend/data/*.json
src/frontend/node_modules
src/frontend/static/script/pyshelf.js
# Standard Python gitignore below
# Created by https://www.gitignore.io/api/python
# Edit at https://www.gitignore.io/?templates=python
@@ -127,6 +133,7 @@ dmypy.json
# End of https://www.gitignore.io/api/python
0
config.backup.json
config.json
uwsgi.ini
installer.log
pyshelf_nginx.conf

View File

@@ -1,31 +1,15 @@
repos:
# Meta housekeeping to keep pre-commit operating correctly
- repo: meta
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-hooks-apply
- id: check-useless-excludes
# General housekeeping and auto-fixers
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v1.3.0
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-docstring-first
- id: debug-statements
- id: end-of-file-fixer
- repo: https://github.com/fsouza/autoflake8
rev: v0.4.0
hooks:
- id: trailing-whitespace
# Python import formatting
- repo: https://github.com/asottile/seed-isort-config
rev: v1.9.3
hooks:
- id: seed-isort-config
- repo: https://github.com/timothycrosley/isort
rev: 4.3.21-2
hooks:
- id: isort
additional_dependencies: ["toml"]
# Python code formatting
- repo: https://github.com/psf/black
rev: stable
hooks:
- id: black
language_version: python3.8
- id: autoflake8

6
.tern-config vendored
View File

@@ -1,6 +0,0 @@
{
“plugins”:
{
“node”: {}
}
}

27
Makefile vendored Normal file
View File

@@ -0,0 +1,27 @@
test:
uv run pytest tests
test-cov:
uv run coverage run -m pytest tests
cov-report:
uv run coverage combine && uv run coverage report
cov: test-cov cov-report
typing:
uv run mypy --install-types --non-interactive src/pyshelf tests
style:
uv run ruff . && uv run black --check --diff .
fmt:
uv run black . && uv run ruff --fix . && make style
lint: style typing
compile:
cd src/frontend && sh compile.sh && cd ../..
install:
cd src/frontend && npm install

142
README.md vendored
View File

@@ -1,49 +1,32 @@
# pyShelf 0.7.0
# pyShelf 0.8.0
<p align="center"><b>Terminal based ebook server. Open source & Lightweight.</b></p>
<p align="center">Having used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own.</p>
<p align="center"><b><a href="https://discord.gg/H9TbNJS">Discord</a></b></p>
<p align="center">
Having used Calibre for hosting my eBook collection in the
past, I found myself frustrated having to install X on my server, or manage my
library externally, Thus I have decided to spin up my own.
</p>
![pyShelf 0.6.0 newui](https://github.com/th3r00t/pyShelf/raw/master/src/interface/static/img/pyShelf_frontend_0_2_0.png)
### You dont need an X server to host a website, Movies or Tv, so why should you need one to host ebooks?
### You dont need an X server to host a website, or your Movie & Tv collection, so why should you need one to host ebooks?
_Other solutions require you to have access to an X server to at the very least
generate your book database, pyShelf doesnt. the aim is to provide a fully featured
ebook server with minimal requirements, and no reliance on X._
_Other solutions require you to have access to an X server to at the very least generate your book database, pyShelf doesnt. We aim to provide a fully featured ebook server with minimal requirements, and no reliance on X whatsoever._
Follow or influence development @ <p align="center"><b>
<a href="https://discord.gg/H9TbNJS">Discord</a>
</b></p>
## General Notes
You may need to click import books a second time if your import fails on the first attempt
## 0.7.0 Patch Notes.
# New Features
* Administration System
* PDF Support
## Current Features
## Features
* Recursive Scanning
* [Django](https://www.djangoproject.com/) based frontend
* Seach via author, title, & file name fields.
* Cover Image Aggregation
* Fuzzy Search with optional specifiers
- tag:fiction
- author:Clancy
- title:"The Hunt for Red October"
- The Expanse
* Download System
* Automated Collections
* A work in progress, the collections are based on your folder structure.
* User System
* Per User Favorites
* Expanded book information view
* Websocket server
* currently only responds to ping, and importBooks, more responders are planned.
* Full Docker integration.
* On Demand Importing
| Branch | Support | Feature set |
| --- | --- | --- |
| <b>Master<b> | Bugs get priority | Most stable branch, may be behind in the core feature set |
| <b>Development</b>| Please report all bugs | Most active branch, this branch is a rolling release, containing the latest features. There will be bugs here hopefully nothing service killing |
| <b>Others</b> | Here there be dragons | These branches are used for day to day development, nothing here should be considered stable.
* Automated Collections based on folder structure
## Currently Supported Formats
@@ -51,81 +34,44 @@ You may need to click import books a second time if your import fails on the fir
* mobi
* pdf
## Installation & Support Information
# Pre-requisites
- Git
- Curl
# Installation
curl -fsSL https://raw.githubusercontent.com/th3r00t/pyShelf/refs/heads/master/install.sh | sudo bash
## Docker
pyShelf is installed as a systemd service, enabled by default, you can control it with the following commands:
The official Docker image for pyShelf is [`pyshelf/pyshelf`](https://hub.docker.com/r/pyshelf/pyshelf). The easiest way to get pyShelf running is through `docker-compose`. An example docker-compose.yml is included in the repo.
```bash
systemctl start pyShelf
systemctl restart pyshelf
systemctl stop pyshelf
systemctl disable pyshelf
systemctl enable pyshelf
````
You'll need a `.env` file wich sets the `LOCAL_BOOK_DIR` variable, for example:
if your books are not in the default location (/mnt/books) edit the config file at /etc/pyShelf/config.json
```
LOCAL_BOOK_DIR=/home/someone/books
```
The Docker image is still new, so there could still be some issues and missing features. Feel free to create a bug-issue when you encounter a bug. Development of the Docker image is discussed in https://github.com/th3r00t/pyShelf/pull/53 . Currently the database needs to be [PostgreSQL](https://www.postgresql.org/) with the account details shown in the example `docker-compose.yml`.
Default User/Pass for web interface: pyshelf/pyshelf
## Self Hosted
This is targeted towards Network Administrators, and home enthusiasts whom I assume will know how to setup a [Django](https://www.djangoproject.com/) app, and a [PostgreSQL](https://www.postgresql.org/) server. For those unfamiliar with the required setup please use the included docker-compose.yml
### Pre-req Dependencies
* gcc
* python3
* pip
* postgresql
Once your database is ready very little is required to get the system up and running:
From the main directory
`pip install -r requirements.txt`
`./configure`
`cd src/ && daphne frontend.asgi:application` add -b 0.0.0.0 -p 8000 as required to specify which interface\'s and port to bind too
As of 0.6.0 Django is being served up via Daphne, and the static files are served up via whitenoise.
## Import Books
The first step is to login, after logging in the button whill show your username, click on it once again, and a new menu will pop up with the option to logout, or import books.
## In Progress
### Organizational tools.
- [x] Automated Collections
# Coming Soon
- [ ] Manual Collections
- [x] Books Removal
- [ ] Books Removal
- [ ] Access Restrictions
- [ ] Metadata Manipulation
- [ ] Ui\Ux Improvements
- [ ] Others?
### Improved cover image storage, and acquisition.
### OPDS Support
### Support for other formats
- [x] .mobi
- [x] .pdf
- [ ] .cbz
- [ ] .zip (Zipped book folders, is this a new idea? (Consider storing your library folders zipped and retrieving a book on demand))
## Future Goals
### Terminal Backend for catalogue maintenance
- [ ] UiUx Improvements
- [ ] Expanded book information view
- [ ] Improved Cover Image System
- [ ] OPDS Support
## Development
* [`pre-commit`](https://pre-commit.com/)
_Before developing, run `pre-commit install` See the [documentation](https://pre-commit.com/) for more information._
* ['Doxygen'](http://www.doxygen.nl/)
_Any changes to source should be documented and have run doxygen doxygen.conf prior to commiting._
* ['sem-ver'](https://semver.org)
_Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf accordingly._
| Branch | Support | Feature set |
| --- | --- | --- |
| <b>Master<b> | Bugs get priority | Most stable branch, may be behind in the core feature set |
| <b>Development</b>| Please report all bugs | Most active branch, this branch is a rolling release, containing the latest features. There will be bugs here hopefully nothing service killing |
| <b>Others</b> | Here there be dragons | These branches are used for day to day development, nothing here should be considered stable.

6
build.sh vendored Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env sh
# uv export > requirements.txt
# mkdir if not exists release
mkdir -p release
python -m zipapp src --compress --output=release/pyshelf --python="/usr/bin/env python"
exit 0

1
config.json vendored
View File

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

53
configure vendored
View File

@@ -1,53 +0,0 @@
#!/usr/bin/env python3
import os
import sys
import json
from pathlib import Path
from django.core.management.utils import get_random_secret_key
from src.backend.lib.pyShelf import Admin
def load_config():
with open('config.json',"r") as file:
config = json.load(file)
file.close()
return config
def write_config(config):
with open('config.json',"w") as file:
json.dump(config, file)
file.close()
def set_secret(config=load_config()):
if config["SECRET"] == "":
config["SECRET"] = get_random_secret_key()
print(config["SECRET"])
else:
print("Secret already set, skipping.")
def set_book_directory(config=load_config(), *args):
if config["BOOKPATH"] == "":
try: config["BOOKPATH"] = args[0]
except IndexError: config["BOOKPATH"] = input("Input Book Directory ")
def init_django_database():
cmds = [
'python3 manage.py makemigrations',
'python3 manage.py makemigrations interface',
'python3 manage.py migrate',
'python3 manage.py migrate interface',
]
os.chdir("src")
for cmd in cmds:
os.system(cmd)
os.chdir("../")
config = load_config()
set_secret(config)
set_book_directory(config)
write_config(config)
init_django_database()
Admin(Path.cwd()).createsuperuser()

24
docker-compose.yml vendored
View File

@@ -1,24 +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/"
pyshelf:
image: "pyshelf/pyshelf"
restart: always
ports:
- "8000:8000"
- "1337:1337"
volumes:
- "${LOCAL_BOOK_DIR}:/books"
depends_on:
- db
volumes:
db_data:

28
docker/Dockerfile vendored
View File

@@ -1,28 +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
EXPOSE 8000
EXPOSE 1337
RUN apt-get update -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential python3 python3-dev python3-pip python3-venv
COPY . /pyshelf
COPY ./docker/config.json /pyshelf/config.json
WORKDIR /pyshelf/
RUN python3 -m pip install -r requirements.txt
ENTRYPOINT python3 configure \
&& cd src/ \
&& daphne -b 0.0.0.0 -p 8000 frontend.asgi:application

6
docker/README.md vendored
View File

@@ -1,6 +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
* docker/pyshelf_nginx.conf
* uwsgi.ini

1
docker/config.json vendored
View File

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

View File

@@ -1,34 +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/"
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,30 +0,0 @@
upstream django {
server unix:///tmp/pyshelf_wsgi.sock;
}
server {
listen 8000;
server_name localhost;
access_log /var/log/nginx/pyshelf.access.log;
error_log /var/log/nginx/pyshelf.error.log;
charset utf-8;
client_max_body_size 75M;
location /media {
root /pyshelf/src/interface;
}
location /static {
root /pyshelf/src/interface;
}
location /books {
internal;
alias /pyshelf;
}
location / {
uwsgi_pass django;
include uwsgi_params;
}
}

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\&.

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