From 15e4960e33a5f3259b2c9b351a8c5f384f9f747a Mon Sep 17 00:00:00 2001 From: th3r00t Date: Wed, 5 Feb 2020 13:11:46 -0500 Subject: [PATCH 01/57] ui gets v# from config --- src/backend/lib/storage.py | 28 +++++++++++++-- src/backend/pyShelf_MakeCollections.py | 23 +++++++++++++ src/backend/pyShelf_ScanLibrary.py | 1 - src/interface/migrations/0004_collections.py | 25 ++++++++++++++ src/interface/models.py | 9 +++++ src/interface/templates/index.html | 2 +- src/interface/templates/search.html | 2 +- src/interface/views.py | 36 ++++++++++++++++---- 8 files changed, 114 insertions(+), 12 deletions(-) create mode 100755 src/backend/pyShelf_MakeCollections.py create mode 100644 src/interface/migrations/0004_collections.py diff --git a/src/backend/lib/storage.py b/src/backend/lib/storage.py index e193b88..5358a79 100755 --- a/src/backend/lib/storage.py +++ b/src/backend/lib/storage.py @@ -1,9 +1,7 @@ #!/usr/bin/python import sqlite3 - import psycopg2 from psycopg2 import Error - from .config import Config # db_pointer = Config().catalogue_db @@ -102,3 +100,29 @@ class Storage: """ self.db.close() return True + + def make_collections(self): + _q = "SELECT id,file_name FROM books" + self.cursor.execute(_q) + _set = self.cursor.fetchall() + for book in _set: + path = self.config.book_path+'/' + _collections = [] + _pathing = book[1].split(path)[1].split('/') + _pathing.pop(0);_pathing.pop(-1) + for _p in _pathing: + _s = _p.replace("'","") + _q_x = """ + SELECT id FROM collections where collection='%s' AND book_id_id=%s + """%(_s,book[0]) + try: + self.cursor.execute(_q_x) + if len(self.cursor.fetchall()) < 1: + self.cursor.execute( + """INSERT INTO collections (collection, book_id_id) VALUES ('%s',%s)"""%(_s,book[0]) + ) + except Exception as e: + print(e) + _collections.append(_p) + self.db.commit() + self.close() diff --git a/src/backend/pyShelf_MakeCollections.py b/src/backend/pyShelf_MakeCollections.py new file mode 100755 index 0000000..0f16549 --- /dev/null +++ b/src/backend/pyShelf_MakeCollections.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +import os +import sys +import time + +from .lib.config import Config +from .lib.library import Catalogue +from .lib.pyShelf import InitFiles +from .lib.storage import Storage + +sys.path.append(os.path.abspath(".")) + + +def MakeCollections(root): + _t1 = time.time() + config = Config(root) # Get configuration settings + # InitFiles(config.file_array) # Initialize file system + _storage = Storage(config) + _storage.make_collections() + _t2 = time.time() + scan_time = round(_t2 - _t1) + print("Collections Made.") + print("Time %s seconds" % scan_time) diff --git a/src/backend/pyShelf_ScanLibrary.py b/src/backend/pyShelf_ScanLibrary.py index 9acbf3d..84b62e5 100755 --- a/src/backend/pyShelf_ScanLibrary.py +++ b/src/backend/pyShelf_ScanLibrary.py @@ -19,7 +19,6 @@ def execute_scan(root): _t1 = time.time() config = Config(root) # Get configuration settings InitFiles(config.file_array) # Initialize file system - Storage(config).check_ownership() catalogue = Catalogue(config) # Open the Catalogue catalogue.import_books() diff --git a/src/interface/migrations/0004_collections.py b/src/interface/migrations/0004_collections.py new file mode 100644 index 0000000..7f590c9 --- /dev/null +++ b/src/interface/migrations/0004_collections.py @@ -0,0 +1,25 @@ +# Generated by Django 3.0.2 on 2020-02-04 20:22 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('interface', '0003_auto_20200101_0447'), + ] + + operations = [ + migrations.CreateModel( + name='Collections', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('collection', models.CharField(max_length=255)), + ('book_id', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='interface.Books')), + ], + options={ + 'db_table': 'collections', + }, + ), + ] diff --git a/src/interface/models.py b/src/interface/models.py index 929eed2..f172da6 100755 --- a/src/interface/models.py +++ b/src/interface/models.py @@ -30,6 +30,15 @@ class Books(models.Model): progress = models.IntegerField(null=True) file_name = models.CharField(max_length=255, null=False) +class Collections(models.Model): + + class Meta: + db_table = "collections" + def __str__(self): + return self.collection + collection = models.CharField(max_length=255) + book_id = models.ForeignKey(Books, on_delete=models.PROTECT) + def get_absolute_url(self): """Returns the url to access a particular instance of MyModelName.""" return reverse("model-detail-view", args=[str(self.id)]) diff --git a/src/interface/templates/index.html b/src/interface/templates/index.html index a7fd6be..9e4fc64 100755 --- a/src/interface/templates/index.html +++ b/src/interface/templates/index.html @@ -18,7 +18,7 @@
-

pyShelf 0.4.1

+

pyShelf {{Version}}

"An elegant tool... for a more civilized age."

diff --git a/src/interface/templates/search.html b/src/interface/templates/search.html index 55fd543..2146508 100644 --- a/src/interface/templates/search.html +++ b/src/interface/templates/search.html @@ -18,7 +18,7 @@
-

pyShelf 0.4.1

+

pyShelf {{Version}}

"An elegant tool... for a more civilized age."

diff --git a/src/interface/views.py b/src/interface/views.py index 8b5c82f..1cc8a19 100755 --- a/src/interface/views.py +++ b/src/interface/views.py @@ -6,17 +6,22 @@ from django.db import models from django.http import JsonResponse from django.shortcuts import HttpResponse, render #render_to_response from django.utils.text import slugify - +from pathlib import Path from .models import Books +from backend.lib.config import Config - +config = Config(Path('../')) def index(request): """ Return template index """ _set = 1 return render( - request, "index.html", {"Books": book_set(20, _set), "Set": str(_set)} + request, "index.html", { + "Books": book_set(20, _set), + "Set": str(_set), + "Version": config.VERSION + } ) @@ -29,7 +34,11 @@ def next_page(request, bookset): except Exception: _set = 1 return render( - request, "index.html", {"Books": book_set(None, _set), "Set": str(_set)} + request, "index.html", { + "Books": book_set(None, _set), + "Set": str(_set), + "Version": config.VERSION + } ) @@ -46,7 +55,11 @@ def prev_page(request, bookset): except Exception: _set = 1 return render( - request, "index.html", {"Books": book_set(None, _set), "Set": str(_set)} + request, "index.html", { + "Books": book_set(None, _set), + "Set": str(_set), + "Version": config.VERSION + } ) @@ -56,7 +69,10 @@ def search(request, query=None, _set=1, _limit=None): """ _set = int(_set) if query is None: - return render(request, "index.html", {"Books": None}) + return render(request, "index.html", { + "Books": None, + "Version": config.VERSION + }) if _limit is None: _limit = 20 ## TODO set to user defaults if _set < 1: @@ -69,7 +85,13 @@ def search(request, query=None, _set=1, _limit=None): return render( request, "search.html", - {"Books": _r, "Query": query, "Set": _set, "len_results": search_len}, + { + "Books": _r, + "Query": query, + "Set": _set, + "len_results": search_len, + "Version": config.VERSION + }, ) From 8958eacbffc3020b1468a88c99342a6245935d4b Mon Sep 17 00:00:00 2001 From: th3r00t Date: Wed, 5 Feb 2020 13:12:16 -0500 Subject: [PATCH 02/57] ui gets v# from config, collection backend setup --- makeCollections | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 makeCollections diff --git a/makeCollections b/makeCollections new file mode 100755 index 0000000..4333055 --- /dev/null +++ b/makeCollections @@ -0,0 +1,13 @@ +#!/usr/bin/python + +import pathlib +import sys + +from src.backend.lib.storage import Storage +from src.backend.pyShelf_MakeCollections import MakeCollections + +PRG_PATH = pathlib.Path.cwd() +LIB_PATH = pathlib.Path.joinpath(PRG_PATH, "src", "backend", "lib") +sys.path.insert(0, PRG_PATH) +print("\n") +MakeCollections(PRG_PATH) From e2e420515617e4c20302f121714688edff019d7c Mon Sep 17 00:00:00 2001 From: th3r00t Date: Thu, 6 Feb 2020 00:54:03 -0500 Subject: [PATCH 03/57] fixed next page button position --- src/interface/static/css/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interface/static/css/main.css b/src/interface/static/css/main.css index 3c58dff..0f30792 100755 --- a/src/interface/static/css/main.css +++ b/src/interface/static/css/main.css @@ -41,7 +41,7 @@ body{ .nav_right_top{ grid-area: nav_right_top; display: flex; - justify-content: right; + justify-content: flex-end; } .app_hdr{ grid-area: title; From 7a15495654b56fdf764899d4e4f3a151f2821d80 Mon Sep 17 00:00:00 2001 From: th3r00t Date: Tue, 3 Mar 2020 14:21:31 -0500 Subject: [PATCH 04/57] Delete contributing.md --- .github/contributing.md | 84 ----------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 .github/contributing.md diff --git a/.github/contributing.md b/.github/contributing.md deleted file mode 100644 index 36c4eaa..0000000 --- a/.github/contributing.md +++ /dev/null @@ -1,84 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [enforcement@pyshelf.com](mailto:enforcement@pyshelf.com). All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of actions. - -**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the project community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, -available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations. From 7dea188afecb23fbc580a4d14247e0339e4b1e97 Mon Sep 17 00:00:00 2001 From: Raelon Masters Date: Wed, 4 Mar 2020 23:46:02 -0500 Subject: [PATCH 05/57] Reordered psql start sequence --- installer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer b/installer index c524396..e89bfb5 100644 --- a/installer +++ b/installer @@ -314,8 +314,8 @@ if RequiredServices().db_server_found(req) is False: with open(_sql_file, "w") as sql_file_open: sql_file_open.write(psql_cmd) sql_file_open.close() - os.system("sudo systemctl start postgresql") os.system("sudo -u postgres initdb --locale=en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data") + os.system("sudo systemctl start postgresql") os.system("sudo -u postgres psql -f %s"%_sql_file) messages = messages + [ "PostgreSQL installed and started", From 9327b01ff409507e5b24e759cc45c195b5cc95c4 Mon Sep 17 00:00:00 2001 From: Raelon Masters Date: Fri, 20 Mar 2020 01:15:07 -0400 Subject: [PATCH 06/57] Collections, and installer patches --- LICENSE | 0 README.md | 0 config.json | 2 +- data/.track_this_folder | 0 docs/html/annotated.html | 0 docs/html/bc_s.png | Bin docs/html/bdwn.png | Bin docs/html/classes.html | 0 docs/html/closed.png | Bin ..._1_1lib_1_1display_1_1TerminalDisplay.html | 0 ..._1lib_1_1pyShelf_1_1InitFiles-members.html | 0 ...ests_1_1library__test_1_1Test__Config.html | 2 +- ...tests_1_1library__test_1_1Test__Config.png | Bin ...nd_1_1lib_1_1config_1_1Config-members.html | 0 ...ibrary__test_1_1TestCatalogue-members.html | 0 ...1_1display_1_1TerminalDisplay-members.html | 0 ...ackend_1_1lib_1_1library_1_1Catalogue.html | 18 +- ...backend_1_1lib_1_1library_1_1Catalogue.png | Bin ...library__test_1_1Test__Config-members.html | 0 ...1_1config__test_1_1TestConfig-members.html | 0 ..._1lib_1_1library_1_1Catalogue-members.html | 0 ...1backend_1_1lib_1_1storage_1_1Storage.html | 10 +- ...lib_1_1pyShelf_1_1BookDisplay-members.html | 0 ...nd_1_1lib_1_1api__hooks_1_1DuckDuckGo.html | 2 +- ...sts_1_1library__test_1_1TestCatalogue.html | 0 ...1_1backend_1_1lib_1_1config_1_1Config.html | 4 +- ..._1_1backend_1_1lib_1_1config_1_1Config.png | Bin ...ackend_1_1lib_1_1pyShelf_1_1InitFiles.html | 2 +- ...kend_1_1lib_1_1pyShelf_1_1BookDisplay.html | 8 +- ..._1_1lib_1_1storage_1_1Storage-members.html | 0 ...s_1_1library__test_1_1Test__Catalogue.html | 18 +- ...ts_1_1library__test_1_1Test__Catalogue.png | Bin ...rary__test_1_1Test__Catalogue-members.html | 0 ...b_1_1api__hooks_1_1DuckDuckGo-members.html | 0 ..._1tests_1_1config__test_1_1TestConfig.html | 0 .../dir_1c7294442ce83d360610449d04c9d7fc.html | 0 .../dir_3f615ade772d23cefe5e20dcb18424a2.html | 0 .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 0 .../dir_9020577e2da81c4cf5a5554c26431f94.html | 0 docs/html/doc.png | Bin docs/html/doxygen.css | 59 ++-- docs/html/doxygen.png | Bin docs/html/dynsections.js | 0 docs/html/files.html | 0 docs/html/folderclosed.png | Bin docs/html/folderopen.png | Bin docs/html/functions.html | 0 docs/html/functions_func.html | 0 docs/html/hierarchy.html | 0 docs/html/index.hhc | 0 docs/html/index.hhk | 0 docs/html/index.hhp | 0 docs/html/index.html | 0 docs/html/jquery.js | 2 +- docs/html/menu.js | 0 docs/html/menudata.js | 0 docs/html/nav_f.png | Bin docs/html/nav_g.png | Bin docs/html/nav_h.png | Bin docs/html/open.png | Bin docs/html/splitbar.png | Bin docs/html/sync_off.png | Bin docs/html/sync_on.png | Bin docs/html/tab_a.png | Bin docs/html/tab_b.png | Bin docs/html/tab_h.png | Bin docs/html/tab_s.png | Bin docs/html/tabs.css | 2 +- .../src_backend_lib_api_hooks_DuckDuckGo.3 | 10 +- docs/man/man3/src_backend_lib_config_Config.3 | 14 +- .../src_backend_lib_display_TerminalDisplay.3 | 4 +- .../man3/src_backend_lib_library_Catalogue.3 | 26 +- .../src_backend_lib_pyShelf_BookDisplay.3 | 18 +- .../man3/src_backend_lib_pyShelf_InitFiles.3 | 10 +- .../man3/src_backend_lib_storage_Storage.3 | 18 +- ...src_backend_tests_config_test_TestConfig.3 | 4 +- ...backend_tests_library_test_TestCatalogue.3 | 4 +- ...ackend_tests_library_test_Test_Catalogue.3 | 24 +- ...c_backend_tests_library_test_Test_Config.3 | 8 +- docs/warn.log | 2 +- doxygen.conf | 0 importBooks | 2 +- installer | 63 +++-- pyproject.toml | 0 requirements.txt | 5 +- src/__init__.py | 0 src/backend/empty_bookshelf.sql | 0 src/backend/lib/display.py | 0 src/backend/lib/storage.py | 25 +- src/frontend/settings.py | 2 +- src/frontend/urls.py | 5 + src/interface/migrations/0001_initial.py | 0 .../migrations/0002_auto_20200101_0445.py | 0 .../migrations/0003_auto_20200101_0447.py | 0 src/interface/migrations/0004_collections.py | 30 +- src/interface/models.py | 10 +- .../static/admin/css/autocomplete.css | 0 src/interface/static/admin/css/base.css | 0 .../static/admin/css/changelists.css | 0 src/interface/static/admin/css/dashboard.css | 0 src/interface/static/admin/css/fonts.css | 0 src/interface/static/admin/css/forms.css | 0 src/interface/static/admin/css/login.css | 0 src/interface/static/admin/css/responsive.css | 0 .../static/admin/css/responsive_rtl.css | 0 src/interface/static/admin/css/rtl.css | 0 .../css/vendor/select2/LICENSE-SELECT2.md | 0 .../admin/css/vendor/select2/select2.css | 0 .../admin/css/vendor/select2/select2.min.css | 0 src/interface/static/admin/css/widgets.css | 0 src/interface/static/admin/fonts/LICENSE.txt | 0 src/interface/static/admin/fonts/README.txt | 0 .../admin/fonts/Roboto-Bold-webfont.woff | Bin .../admin/fonts/Roboto-Light-webfont.woff | Bin .../admin/fonts/Roboto-Regular-webfont.woff | Bin src/interface/static/admin/img/LICENSE | 0 src/interface/static/admin/img/README.txt | 0 .../static/admin/img/calendar-icons.svg | 0 .../static/admin/img/gis/move_vertex_off.svg | 0 .../static/admin/img/gis/move_vertex_on.svg | 0 .../static/admin/img/icon-addlink.svg | 0 src/interface/static/admin/img/icon-alert.svg | 0 .../static/admin/img/icon-calendar.svg | 0 .../static/admin/img/icon-changelink.svg | 0 src/interface/static/admin/img/icon-clock.svg | 0 .../static/admin/img/icon-deletelink.svg | 0 src/interface/static/admin/img/icon-no.svg | 0 .../static/admin/img/icon-unknown-alt.svg | 0 .../static/admin/img/icon-unknown.svg | 0 .../static/admin/img/icon-viewlink.svg | 0 src/interface/static/admin/img/icon-yes.svg | 0 .../static/admin/img/inline-delete.svg | 0 src/interface/static/admin/img/search.svg | 0 .../static/admin/img/selector-icons.svg | 0 .../static/admin/img/sorting-icons.svg | 0 .../static/admin/img/tooltag-add.svg | 0 .../static/admin/img/tooltag-arrowright.svg | 0 src/interface/static/admin/js/SelectBox.js | 0 .../static/admin/js/SelectFilter2.js | 0 src/interface/static/admin/js/actions.js | 0 src/interface/static/admin/js/actions.min.js | 0 .../admin/js/admin/DateTimeShortcuts.js | 0 .../admin/js/admin/RelatedObjectLookups.js | 0 src/interface/static/admin/js/autocomplete.js | 0 src/interface/static/admin/js/calendar.js | 0 src/interface/static/admin/js/cancel.js | 0 src/interface/static/admin/js/change_form.js | 0 src/interface/static/admin/js/collapse.js | 0 src/interface/static/admin/js/collapse.min.js | 0 src/interface/static/admin/js/core.js | 0 src/interface/static/admin/js/inlines.js | 0 src/interface/static/admin/js/inlines.min.js | 0 src/interface/static/admin/js/jquery.init.js | 0 .../static/admin/js/popup_response.js | 0 src/interface/static/admin/js/prepopulate.js | 0 .../static/admin/js/prepopulate.min.js | 0 .../static/admin/js/prepopulate_init.js | 0 src/interface/static/admin/js/timeparse.js | 0 src/interface/static/admin/js/urlify.js | 0 .../static/admin/js/vendor/jquery/LICENSE.txt | 0 .../static/admin/js/vendor/jquery/jquery.js | 0 .../admin/js/vendor/jquery/jquery.min.js | 0 .../static/admin/js/vendor/select2/LICENSE.md | 0 .../static/admin/js/vendor/select2/i18n/af.js | 0 .../static/admin/js/vendor/select2/i18n/ar.js | 0 .../static/admin/js/vendor/select2/i18n/az.js | 0 .../static/admin/js/vendor/select2/i18n/bg.js | 0 .../static/admin/js/vendor/select2/i18n/bn.js | 0 .../static/admin/js/vendor/select2/i18n/bs.js | 0 .../static/admin/js/vendor/select2/i18n/ca.js | 0 .../static/admin/js/vendor/select2/i18n/cs.js | 0 .../static/admin/js/vendor/select2/i18n/da.js | 0 .../static/admin/js/vendor/select2/i18n/de.js | 0 .../admin/js/vendor/select2/i18n/dsb.js | 0 .../static/admin/js/vendor/select2/i18n/el.js | 0 .../static/admin/js/vendor/select2/i18n/en.js | 0 .../static/admin/js/vendor/select2/i18n/es.js | 0 .../static/admin/js/vendor/select2/i18n/et.js | 0 .../static/admin/js/vendor/select2/i18n/eu.js | 0 .../static/admin/js/vendor/select2/i18n/fa.js | 0 .../static/admin/js/vendor/select2/i18n/fi.js | 0 .../static/admin/js/vendor/select2/i18n/fr.js | 0 .../static/admin/js/vendor/select2/i18n/gl.js | 0 .../static/admin/js/vendor/select2/i18n/he.js | 0 .../static/admin/js/vendor/select2/i18n/hi.js | 0 .../static/admin/js/vendor/select2/i18n/hr.js | 0 .../admin/js/vendor/select2/i18n/hsb.js | 0 .../static/admin/js/vendor/select2/i18n/hu.js | 0 .../static/admin/js/vendor/select2/i18n/hy.js | 0 .../static/admin/js/vendor/select2/i18n/id.js | 0 .../static/admin/js/vendor/select2/i18n/is.js | 0 .../static/admin/js/vendor/select2/i18n/it.js | 0 .../static/admin/js/vendor/select2/i18n/ja.js | 0 .../static/admin/js/vendor/select2/i18n/ka.js | 0 .../static/admin/js/vendor/select2/i18n/km.js | 0 .../static/admin/js/vendor/select2/i18n/ko.js | 0 .../static/admin/js/vendor/select2/i18n/lt.js | 0 .../static/admin/js/vendor/select2/i18n/lv.js | 0 .../static/admin/js/vendor/select2/i18n/mk.js | 0 .../static/admin/js/vendor/select2/i18n/ms.js | 0 .../static/admin/js/vendor/select2/i18n/nb.js | 0 .../static/admin/js/vendor/select2/i18n/ne.js | 0 .../static/admin/js/vendor/select2/i18n/nl.js | 0 .../static/admin/js/vendor/select2/i18n/pl.js | 0 .../static/admin/js/vendor/select2/i18n/ps.js | 0 .../admin/js/vendor/select2/i18n/pt-BR.js | 0 .../static/admin/js/vendor/select2/i18n/pt.js | 0 .../static/admin/js/vendor/select2/i18n/ro.js | 0 .../static/admin/js/vendor/select2/i18n/ru.js | 0 .../static/admin/js/vendor/select2/i18n/sk.js | 0 .../static/admin/js/vendor/select2/i18n/sl.js | 0 .../static/admin/js/vendor/select2/i18n/sq.js | 0 .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 0 .../static/admin/js/vendor/select2/i18n/sr.js | 0 .../static/admin/js/vendor/select2/i18n/sv.js | 0 .../static/admin/js/vendor/select2/i18n/th.js | 0 .../static/admin/js/vendor/select2/i18n/tk.js | 0 .../static/admin/js/vendor/select2/i18n/tr.js | 0 .../static/admin/js/vendor/select2/i18n/uk.js | 0 .../static/admin/js/vendor/select2/i18n/vi.js | 0 .../admin/js/vendor/select2/i18n/zh-CN.js | 0 .../admin/js/vendor/select2/i18n/zh-TW.js | 0 .../admin/js/vendor/select2/select2.full.js | 0 .../js/vendor/select2/select2.full.min.js | 0 .../admin/js/vendor/xregexp/LICENSE.txt | 0 .../static/admin/js/vendor/xregexp/xregexp.js | 0 .../admin/js/vendor/xregexp/xregexp.min.js | 0 src/interface/static/css/main.css | 264 ++++++++++-------- .../static/debug_toolbar/css/print.css | 0 .../static/debug_toolbar/css/toolbar.css | 0 .../static/debug_toolbar/img/ajax-loader.gif | Bin .../static/debug_toolbar/img/back.png | Bin .../static/debug_toolbar/img/back_hover.png | Bin .../static/debug_toolbar/img/close.png | Bin .../static/debug_toolbar/img/close_hover.png | Bin .../debug_toolbar/img/djdt_vertical.png | Bin .../static/debug_toolbar/img/indicator.png | Bin .../static/debug_toolbar/js/redirect.js | 0 .../static/debug_toolbar/js/toolbar.js | 0 .../debug_toolbar/js/toolbar.profiling.js | 0 .../static/debug_toolbar/js/toolbar.sql.js | 0 .../static/debug_toolbar/js/toolbar.timer.js | 0 .../static/img/discord_logo_color.png | Bin src/interface/static/img/gpl-125x28.png | Bin src/interface/static/img/gpl-150x33.png | Bin src/interface/static/img/gpl-175x39.png | Bin src/interface/static/img/gpl.png | Bin src/interface/static/img/gplv3-or-later.png | Bin .../static/img/open-source-150x25.png | Bin .../static/img/open-source-175x29.png | Bin .../static/img/open-source-200x33.png | Bin src/interface/static/img/open-source.png | Bin .../static/img/pyShelf_frontend_0_1_0.png | Bin .../img/pyShelf_frontend_0_1_0_thumb.png | Bin src/interface/static/js/jquery-3.4.1.min.js | 0 src/interface/static/js/pyshelf_ux.js | 2 +- src/interface/templates/index.html | 91 +++--- src/interface/templates/search.html | 0 src/interface/templatetags/__init__.py | 0 src/interface/templatetags/filters.py | 0 src/interface/views.py | 99 +++++-- uwsgi.ini | 5 +- uwsgi_params | 0 263 files changed, 509 insertions(+), 365 deletions(-) mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 config.json mode change 100644 => 100755 data/.track_this_folder mode change 100644 => 100755 docs/html/annotated.html mode change 100644 => 100755 docs/html/bc_s.png mode change 100644 => 100755 docs/html/bdwn.png mode change 100644 => 100755 docs/html/classes.html mode change 100644 => 100755 docs/html/closed.png mode change 100644 => 100755 docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html mode change 100644 => 100755 docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html mode change 100644 => 100755 docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html mode change 100644 => 100755 docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png mode change 100644 => 100755 docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html mode change 100644 => 100755 docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html mode change 100644 => 100755 docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html mode change 100644 => 100755 docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html mode change 100644 => 100755 docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png mode change 100644 => 100755 docs/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html mode change 100644 => 100755 docs/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html mode change 100644 => 100755 docs/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html mode change 100644 => 100755 docs/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html mode change 100644 => 100755 docs/html/d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html mode change 100644 => 100755 docs/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html mode change 100644 => 100755 docs/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html mode change 100644 => 100755 docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html mode change 100644 => 100755 docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png mode change 100644 => 100755 docs/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html mode change 100644 => 100755 docs/html/db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html mode change 100644 => 100755 docs/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html mode change 100644 => 100755 docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html mode change 100644 => 100755 docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png mode change 100644 => 100755 docs/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html mode change 100644 => 100755 docs/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html mode change 100644 => 100755 docs/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html mode change 100644 => 100755 docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html mode change 100644 => 100755 docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html mode change 100644 => 100755 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html mode change 100644 => 100755 docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html mode change 100644 => 100755 docs/html/doc.png mode change 100644 => 100755 docs/html/doxygen.css mode change 100644 => 100755 docs/html/doxygen.png mode change 100644 => 100755 docs/html/dynsections.js mode change 100644 => 100755 docs/html/files.html mode change 100644 => 100755 docs/html/folderclosed.png mode change 100644 => 100755 docs/html/folderopen.png mode change 100644 => 100755 docs/html/functions.html mode change 100644 => 100755 docs/html/functions_func.html mode change 100644 => 100755 docs/html/hierarchy.html mode change 100644 => 100755 docs/html/index.hhc mode change 100644 => 100755 docs/html/index.hhk mode change 100644 => 100755 docs/html/index.hhp mode change 100644 => 100755 docs/html/index.html mode change 100644 => 100755 docs/html/jquery.js mode change 100644 => 100755 docs/html/menu.js mode change 100644 => 100755 docs/html/menudata.js mode change 100644 => 100755 docs/html/nav_f.png mode change 100644 => 100755 docs/html/nav_g.png mode change 100644 => 100755 docs/html/nav_h.png mode change 100644 => 100755 docs/html/open.png mode change 100644 => 100755 docs/html/splitbar.png mode change 100644 => 100755 docs/html/sync_off.png mode change 100644 => 100755 docs/html/sync_on.png mode change 100644 => 100755 docs/html/tab_a.png mode change 100644 => 100755 docs/html/tab_b.png mode change 100644 => 100755 docs/html/tab_h.png mode change 100644 => 100755 docs/html/tab_s.png mode change 100644 => 100755 docs/html/tabs.css mode change 100644 => 100755 docs/man/man3/src_backend_lib_api_hooks_DuckDuckGo.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_config_Config.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_display_TerminalDisplay.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_library_Catalogue.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_pyShelf_BookDisplay.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_pyShelf_InitFiles.3 mode change 100644 => 100755 docs/man/man3/src_backend_lib_storage_Storage.3 mode change 100644 => 100755 docs/man/man3/src_backend_tests_config_test_TestConfig.3 mode change 100644 => 100755 docs/man/man3/src_backend_tests_library_test_TestCatalogue.3 mode change 100644 => 100755 docs/man/man3/src_backend_tests_library_test_Test_Catalogue.3 mode change 100644 => 100755 docs/man/man3/src_backend_tests_library_test_Test_Config.3 mode change 100644 => 100755 docs/warn.log mode change 100644 => 100755 doxygen.conf mode change 100644 => 100755 installer mode change 100644 => 100755 pyproject.toml mode change 100644 => 100755 requirements.txt mode change 100644 => 100755 src/__init__.py mode change 100644 => 100755 src/backend/empty_bookshelf.sql mode change 100644 => 100755 src/backend/lib/display.py mode change 100644 => 100755 src/interface/migrations/0001_initial.py mode change 100644 => 100755 src/interface/migrations/0002_auto_20200101_0445.py mode change 100644 => 100755 src/interface/migrations/0003_auto_20200101_0447.py mode change 100644 => 100755 src/interface/migrations/0004_collections.py mode change 100644 => 100755 src/interface/static/admin/css/autocomplete.css mode change 100644 => 100755 src/interface/static/admin/css/base.css mode change 100644 => 100755 src/interface/static/admin/css/changelists.css mode change 100644 => 100755 src/interface/static/admin/css/dashboard.css mode change 100644 => 100755 src/interface/static/admin/css/fonts.css mode change 100644 => 100755 src/interface/static/admin/css/forms.css mode change 100644 => 100755 src/interface/static/admin/css/login.css mode change 100644 => 100755 src/interface/static/admin/css/responsive.css mode change 100644 => 100755 src/interface/static/admin/css/responsive_rtl.css mode change 100644 => 100755 src/interface/static/admin/css/rtl.css mode change 100644 => 100755 src/interface/static/admin/css/vendor/select2/LICENSE-SELECT2.md mode change 100644 => 100755 src/interface/static/admin/css/vendor/select2/select2.css mode change 100644 => 100755 src/interface/static/admin/css/vendor/select2/select2.min.css mode change 100644 => 100755 src/interface/static/admin/css/widgets.css mode change 100644 => 100755 src/interface/static/admin/fonts/LICENSE.txt mode change 100644 => 100755 src/interface/static/admin/fonts/README.txt mode change 100644 => 100755 src/interface/static/admin/fonts/Roboto-Bold-webfont.woff mode change 100644 => 100755 src/interface/static/admin/fonts/Roboto-Light-webfont.woff mode change 100644 => 100755 src/interface/static/admin/fonts/Roboto-Regular-webfont.woff mode change 100644 => 100755 src/interface/static/admin/img/LICENSE mode change 100644 => 100755 src/interface/static/admin/img/README.txt mode change 100644 => 100755 src/interface/static/admin/img/calendar-icons.svg mode change 100644 => 100755 src/interface/static/admin/img/gis/move_vertex_off.svg mode change 100644 => 100755 src/interface/static/admin/img/gis/move_vertex_on.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-addlink.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-alert.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-calendar.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-changelink.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-clock.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-deletelink.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-no.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-unknown-alt.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-unknown.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-viewlink.svg mode change 100644 => 100755 src/interface/static/admin/img/icon-yes.svg mode change 100644 => 100755 src/interface/static/admin/img/inline-delete.svg mode change 100644 => 100755 src/interface/static/admin/img/search.svg mode change 100644 => 100755 src/interface/static/admin/img/selector-icons.svg mode change 100644 => 100755 src/interface/static/admin/img/sorting-icons.svg mode change 100644 => 100755 src/interface/static/admin/img/tooltag-add.svg mode change 100644 => 100755 src/interface/static/admin/img/tooltag-arrowright.svg mode change 100644 => 100755 src/interface/static/admin/js/SelectBox.js mode change 100644 => 100755 src/interface/static/admin/js/SelectFilter2.js mode change 100644 => 100755 src/interface/static/admin/js/actions.js mode change 100644 => 100755 src/interface/static/admin/js/actions.min.js mode change 100644 => 100755 src/interface/static/admin/js/admin/DateTimeShortcuts.js mode change 100644 => 100755 src/interface/static/admin/js/admin/RelatedObjectLookups.js mode change 100644 => 100755 src/interface/static/admin/js/autocomplete.js mode change 100644 => 100755 src/interface/static/admin/js/calendar.js mode change 100644 => 100755 src/interface/static/admin/js/cancel.js mode change 100644 => 100755 src/interface/static/admin/js/change_form.js mode change 100644 => 100755 src/interface/static/admin/js/collapse.js mode change 100644 => 100755 src/interface/static/admin/js/collapse.min.js mode change 100644 => 100755 src/interface/static/admin/js/core.js mode change 100644 => 100755 src/interface/static/admin/js/inlines.js mode change 100644 => 100755 src/interface/static/admin/js/inlines.min.js mode change 100644 => 100755 src/interface/static/admin/js/jquery.init.js mode change 100644 => 100755 src/interface/static/admin/js/popup_response.js mode change 100644 => 100755 src/interface/static/admin/js/prepopulate.js mode change 100644 => 100755 src/interface/static/admin/js/prepopulate.min.js mode change 100644 => 100755 src/interface/static/admin/js/prepopulate_init.js mode change 100644 => 100755 src/interface/static/admin/js/timeparse.js mode change 100644 => 100755 src/interface/static/admin/js/urlify.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/jquery/LICENSE.txt mode change 100644 => 100755 src/interface/static/admin/js/vendor/jquery/jquery.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/jquery/jquery.min.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/LICENSE.md mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/af.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ar.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/az.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/bg.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/bn.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/bs.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ca.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/cs.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/da.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/de.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/dsb.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/el.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/en.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/es.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/et.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/eu.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/fa.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/fi.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/fr.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/gl.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/he.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/hi.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/hr.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/hsb.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/hu.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/hy.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/id.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/is.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/it.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ja.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ka.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/km.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ko.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/lt.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/lv.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/mk.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ms.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/nb.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ne.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/nl.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/pl.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ps.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/pt-BR.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/pt.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ro.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/ru.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sk.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sl.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sq.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sr-Cyrl.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sr.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/sv.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/th.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/tk.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/tr.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/uk.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/vi.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/zh-CN.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/i18n/zh-TW.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/select2.full.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/select2/select2.full.min.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/xregexp/LICENSE.txt mode change 100644 => 100755 src/interface/static/admin/js/vendor/xregexp/xregexp.js mode change 100644 => 100755 src/interface/static/admin/js/vendor/xregexp/xregexp.min.js mode change 100644 => 100755 src/interface/static/debug_toolbar/css/print.css mode change 100644 => 100755 src/interface/static/debug_toolbar/css/toolbar.css mode change 100644 => 100755 src/interface/static/debug_toolbar/img/ajax-loader.gif mode change 100644 => 100755 src/interface/static/debug_toolbar/img/back.png mode change 100644 => 100755 src/interface/static/debug_toolbar/img/back_hover.png mode change 100644 => 100755 src/interface/static/debug_toolbar/img/close.png mode change 100644 => 100755 src/interface/static/debug_toolbar/img/close_hover.png mode change 100644 => 100755 src/interface/static/debug_toolbar/img/djdt_vertical.png mode change 100644 => 100755 src/interface/static/debug_toolbar/img/indicator.png mode change 100644 => 100755 src/interface/static/debug_toolbar/js/redirect.js mode change 100644 => 100755 src/interface/static/debug_toolbar/js/toolbar.js mode change 100644 => 100755 src/interface/static/debug_toolbar/js/toolbar.profiling.js mode change 100644 => 100755 src/interface/static/debug_toolbar/js/toolbar.sql.js mode change 100644 => 100755 src/interface/static/debug_toolbar/js/toolbar.timer.js mode change 100644 => 100755 src/interface/static/img/discord_logo_color.png mode change 100644 => 100755 src/interface/static/img/gpl-125x28.png mode change 100644 => 100755 src/interface/static/img/gpl-150x33.png mode change 100644 => 100755 src/interface/static/img/gpl-175x39.png mode change 100644 => 100755 src/interface/static/img/gpl.png mode change 100644 => 100755 src/interface/static/img/gplv3-or-later.png mode change 100644 => 100755 src/interface/static/img/open-source-150x25.png mode change 100644 => 100755 src/interface/static/img/open-source-175x29.png mode change 100644 => 100755 src/interface/static/img/open-source-200x33.png mode change 100644 => 100755 src/interface/static/img/open-source.png mode change 100644 => 100755 src/interface/static/img/pyShelf_frontend_0_1_0.png mode change 100644 => 100755 src/interface/static/img/pyShelf_frontend_0_1_0_thumb.png mode change 100644 => 100755 src/interface/static/js/jquery-3.4.1.min.js mode change 100644 => 100755 src/interface/static/js/pyshelf_ux.js mode change 100644 => 100755 src/interface/templates/search.html mode change 100644 => 100755 src/interface/templatetags/__init__.py mode change 100644 => 100755 src/interface/templatetags/filters.py mode change 100644 => 100755 uwsgi.ini mode change 100644 => 100755 uwsgi_params diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/config.json b/config.json old mode 100644 new mode 100755 index b83d7e3..eabce68 --- a/config.json +++ b/config.json @@ -1 +1 @@ -{"TITLE": "pyShelf E-Book Server", "VERSION": "0.4.1", "BOOKPATH": "", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "hostname": "localhost", "webport": "8000", "wsgiport": "8001"} +{"TITLE": "pyShelf E-Book Server", "VERSION": "0.4.1", "BOOKPATH": "/home/raelon/Books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": "*", "hostname": "localhost", "webport": "8000", "wsgiport": "8001"} diff --git a/data/.track_this_folder b/data/.track_this_folder old mode 100644 new mode 100755 diff --git a/docs/html/annotated.html b/docs/html/annotated.html old mode 100644 new mode 100755 diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png old mode 100644 new mode 100755 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png old mode 100644 new mode 100755 diff --git a/docs/html/classes.html b/docs/html/classes.html old mode 100644 new mode 100755 diff --git a/docs/html/closed.png b/docs/html/closed.png old mode 100644 new mode 100755 diff --git a/docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html b/docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html old mode 100644 new mode 100755 diff --git a/docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html b/docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html old mode 100644 new mode 100755 diff --git a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html b/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html old mode 100644 new mode 100755 index 585ec70..c9dc6cb --- a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html +++ b/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html @@ -148,7 +148,7 @@ Public Attributes
Opens config.json and reads in configuration options
-
+

Reimplemented from src.backend.lib.config.Config.

diff --git a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png b/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png old mode 100644 new mode 100755 diff --git a/docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html b/docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html old mode 100644 new mode 100755 diff --git a/docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html b/docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html old mode 100644 new mode 100755 diff --git a/docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html b/docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html old mode 100644 new mode 100755 diff --git a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html b/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html old mode 100644 new mode 100755 index 9ed75d7..aad2433 --- a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html +++ b/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html @@ -144,7 +144,7 @@ Public Attributes
Calls storage system, gets list of books stored and compares against files on disk
-
+
@@ -179,7 +179,7 @@ Public Attributes
Opens epub as zip file filters then stores as list any files matching opf_regx
-
+
@@ -214,7 +214,7 @@ Public Attributes
Opens epub as zip file filters then stores as list any files matching html_regx
-
+
@@ -249,7 +249,7 @@ Public Attributes
Opens epub as zip file filters then stores as list any files matching cover_regx
-
+
@@ -280,7 +280,7 @@ Public Attributes
Return extracted metadata and cover picture
 book['path'] == Full path to ebook file
 book['files'] == list of files from self.process_book(book)
-
+ @@ -302,7 +302,7 @@ book['files'] == list of files from self.process_book(book) Proceeds to call process_book :returns self._book_list_expanded: json string containing all book metadata - +

Reimplemented in src.backend.tests.library_test.Test_Catalogue.

@@ -335,7 +335,7 @@ Proceeds to call process_book
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.
-
+ @@ -361,7 +361,7 @@ Iterates over list and inserts new books into database.
-
Return dictionary of epub file contents
+
Return dictionary of epub file contents
@@ -390,7 +390,7 @@ Iterates over list and inserts new books into database.
Scan folder by _path, allows recurisive scanning
-
+

The documentation for this class was generated from the following file: