codex 1.5.0a1__py3-none-any.whl → 1.5.0a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of codex might be problematic. Click here for more details.
- codex/__init__.py +1 -0
- codex/_vendor/haystack/apps.py +2 -3
- codex/_vendor/haystack/utils/loading.py +3 -0
- codex/applications/lifespan.py +1 -0
- codex/applications/websocket.py +1 -0
- codex/asgi.py +1 -0
- codex/db_functions.py +1 -0
- codex/exceptions.py +1 -0
- codex/integrity.py +1 -0
- codex/librarian/covers/coverd.py +1 -0
- codex/librarian/covers/create.py +2 -1
- codex/librarian/covers/path.py +1 -0
- codex/librarian/covers/purge.py +1 -0
- codex/librarian/covers/status.py +1 -0
- codex/librarian/covers/tasks.py +1 -0
- codex/librarian/delayed_taskd.py +1 -0
- codex/librarian/importer/aggregate_metadata.py +1 -0
- codex/librarian/importer/clean_metadata.py +1 -0
- codex/librarian/importer/const.py +1 -0
- codex/librarian/importer/create_comics.py +1 -0
- codex/librarian/importer/create_fks.py +1 -0
- codex/librarian/importer/failed_imports.py +1 -0
- codex/librarian/importer/importerd.py +1 -0
- codex/librarian/importer/link_comics.py +2 -3
- codex/librarian/importer/moved.py +17 -15
- codex/librarian/importer/query_fks.py +1 -0
- codex/librarian/importer/status.py +1 -0
- codex/librarian/importer/tasks.py +1 -0
- codex/librarian/janitor/cleanup.py +1 -0
- codex/librarian/janitor/failed_imports.py +1 -0
- codex/librarian/janitor/janitor.py +1 -0
- codex/librarian/janitor/janitord.py +1 -0
- codex/librarian/janitor/status.py +1 -0
- codex/librarian/janitor/tasks.py +1 -0
- codex/librarian/janitor/update.py +1 -0
- codex/librarian/janitor/vacuum.py +1 -0
- codex/librarian/librariand.py +1 -0
- codex/librarian/mp_queue.py +1 -0
- codex/librarian/notifier/notifierd.py +0 -1
- codex/librarian/notifier/tasks.py +1 -0
- codex/librarian/search/merge.py +1 -0
- codex/librarian/search/remove.py +1 -0
- codex/librarian/search/searchd.py +1 -0
- codex/librarian/search/status.py +1 -0
- codex/librarian/search/tasks.py +1 -0
- codex/librarian/search/update.py +1 -0
- codex/librarian/search/version.py +1 -0
- codex/librarian/tasks.py +1 -0
- codex/librarian/watchdog/db_snapshot.py +1 -0
- codex/librarian/watchdog/dir_snapshot_diff.py +1 -0
- codex/librarian/watchdog/emitter.py +18 -1
- codex/librarian/watchdog/event_batcherd.py +1 -0
- codex/librarian/watchdog/events.py +1 -0
- codex/librarian/watchdog/observers.py +8 -1
- codex/librarian/watchdog/status.py +1 -0
- codex/librarian/watchdog/tasks.py +1 -0
- codex/logger/formatter.py +36 -0
- codex/logger/loggerd.py +2 -33
- codex/logger/logging.py +1 -0
- codex/logger/mp_queue.py +1 -0
- codex/logger_base.py +1 -0
- codex/memory.py +1 -0
- codex/middleware.py +1 -0
- codex/migrations/0002_auto_20200826_0622.py +0 -1
- codex/migrations/0003_auto_20200831_2033.py +0 -1
- codex/migrations/0004_failedimport.py +0 -1
- codex/migrations/0005_auto_20200918_0146.py +1 -0
- codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -1
- codex/migrations/0009_alter_comic_parent_folder.py +0 -1
- codex/migrations/0010_haystack.py +0 -1
- codex/migrations/0011_library_groups_and_metadata_changes.py +1 -0
- codex/migrations/0013_int_issue_count_longer_charfields.py +1 -0
- codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +1 -0
- codex/migrations/0015_link_comics_to_top_level_folders.py +1 -0
- codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +1 -0
- codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +1 -0
- codex/migrations/0023_rename_credit_creator_and_more.py +1 -0
- codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -1
- codex/migrations/0026_comicbox_1.py +10 -6
- codex/models/__init__.py +1 -0
- codex/models/admin.py +1 -0
- codex/models/base.py +1 -0
- codex/models/bookmark.py +1 -0
- codex/models/comic.py +1 -0
- codex/models/groups.py +1 -0
- codex/models/library.py +1 -0
- codex/models/named.py +1 -0
- codex/models/paths.py +1 -0
- codex/permissions.py +1 -0
- codex/registration.py +1 -0
- codex/run.py +1 -0
- codex/search/backend.py +7 -1
- codex/search/engine.py +1 -0
- codex/search/indexes.py +1 -0
- codex/search/writing.py +1 -0
- codex/serializers/admin.py +1 -0
- codex/serializers/browser/choices.py +1 -0
- codex/serializers/browser/filters.py +1 -0
- codex/serializers/browser/page.py +3 -0
- codex/serializers/browser/settings.py +1 -0
- codex/serializers/choices.py +7 -3
- codex/serializers/homepage.py +1 -0
- codex/serializers/metadata.py +1 -0
- codex/serializers/mixins.py +1 -0
- codex/serializers/models/admin.py +1 -0
- codex/serializers/models/base.py +1 -0
- codex/serializers/models/bookmark.py +1 -0
- codex/serializers/models/comic.py +1 -0
- codex/serializers/models/groups.py +1 -0
- codex/serializers/models/named.py +1 -0
- codex/serializers/models/pycountry.py +1 -0
- codex/serializers/opds/authentication.py +1 -0
- codex/serializers/opds/v1.py +1 -0
- codex/serializers/opds/v2_unused.py +1 -0
- codex/serializers/reader.py +3 -0
- codex/serializers/redirect.py +1 -0
- codex/serializers/versions.py +1 -0
- codex/settings/hypercorn.py +1 -0
- codex/settings/logging.py +1 -0
- codex/settings/secret_key.py +1 -0
- codex/settings/settings.py +1 -0
- codex/settings/timezone.py +1 -0
- codex/settings/whitenoise.py +1 -0
- codex/signals/django_signals.py +1 -0
- codex/signals/os_signals.py +1 -0
- codex/startup.py +1 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.016ed8d222c4.css +1 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.016ed8d222c4.css.br +0 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.016ed8d222c4.css.gz +0 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.css +1 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.css.br +0 -0
- codex/static_root/assets/VCheckbox-CMKdyl0R.css.gz +0 -0
- codex/static_root/assets/VCheckbox-CeROBShW.13efd0db94ad.js +1 -0
- codex/static_root/assets/VCheckbox-CeROBShW.13efd0db94ad.js.br +0 -0
- codex/static_root/assets/VCheckbox-CeROBShW.13efd0db94ad.js.gz +0 -0
- codex/static_root/assets/VCheckbox-CeROBShW.js +1 -0
- codex/static_root/assets/VCheckbox-CeROBShW.js.br +0 -0
- codex/static_root/assets/VCheckbox-CeROBShW.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.024342a993d5.js +1 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.024342a993d5.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.024342a993d5.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.js +1 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DsXzjZmq.js.gz +0 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.8fe8fb5f133b.js +1 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.8fe8fb5f133b.js.br +0 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.8fe8fb5f133b.js.gz +0 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.js +1 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.js.br +0 -0
- codex/static_root/assets/VCombobox-BkNOTgy1.js.gz +0 -0
- codex/static_root/assets/VCombobox-BksEr4D_.73429bb75f42.css +1 -0
- codex/static_root/assets/VCombobox-BksEr4D_.73429bb75f42.css.br +0 -0
- codex/static_root/assets/VCombobox-BksEr4D_.73429bb75f42.css.gz +0 -0
- codex/static_root/assets/VCombobox-BksEr4D_.css +1 -0
- codex/static_root/assets/VCombobox-BksEr4D_.css.br +0 -0
- codex/static_root/assets/VCombobox-BksEr4D_.css.gz +0 -0
- codex/static_root/assets/{VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css → VDataTableVirtual-Cbj7IGxa.24039b2ebc61.css} +1 -1
- codex/static_root/assets/VDataTableVirtual-Cbj7IGxa.24039b2ebc61.css.br +0 -0
- codex/static_root/assets/VDataTableVirtual-Cbj7IGxa.24039b2ebc61.css.gz +0 -0
- codex/static_root/assets/{VDataTableVirtual-cJ9EDO4X.css → VDataTableVirtual-Cbj7IGxa.css} +1 -1
- codex/static_root/assets/VDataTableVirtual-Cbj7IGxa.css.br +0 -0
- codex/static_root/assets/VDataTableVirtual-Cbj7IGxa.css.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.a039eb46d778.js +1 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.a039eb46d778.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.a039eb46d778.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.js +1 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-xoo8biCM.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanel-gdSap9-6.212a9add7ff2.css → VExpansionPanel-BgvW2DKJ.cd604d70ceee.css} +1 -1
- codex/static_root/assets/VExpansionPanel-BgvW2DKJ.cd604d70ceee.css.br +0 -0
- codex/static_root/assets/VExpansionPanel-BgvW2DKJ.cd604d70ceee.css.gz +0 -0
- codex/static_root/assets/{VExpansionPanel-gdSap9-6.css → VExpansionPanel-BgvW2DKJ.css} +1 -1
- codex/static_root/assets/VExpansionPanel-BgvW2DKJ.css.br +0 -0
- codex/static_root/assets/VExpansionPanel-BgvW2DKJ.css.gz +0 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.f038a64c77fe.js +1 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.f038a64c77fe.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.f038a64c77fe.js.gz +0 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.js +1 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-CvNJm3e_.js.gz +0 -0
- codex/static_root/assets/{VMain-MR9pvpIS.ffd0ac6a1519.js → VMain-C7hhAcs8.bdcb5a3f2a40.js} +1 -1
- codex/static_root/assets/VMain-C7hhAcs8.bdcb5a3f2a40.js.br +0 -0
- codex/static_root/assets/VMain-C7hhAcs8.bdcb5a3f2a40.js.gz +0 -0
- codex/static_root/assets/{VMain-MR9pvpIS.js → VMain-C7hhAcs8.js} +1 -1
- codex/static_root/assets/VMain-C7hhAcs8.js.br +0 -0
- codex/static_root/assets/VMain-C7hhAcs8.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.caf3bf08435a.js +1 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.caf3bf08435a.js.br +0 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.caf3bf08435a.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.js +1 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.js.br +0 -0
- codex/static_root/assets/VRadioGroup-C_4z_UxB.js.gz +0 -0
- codex/static_root/assets/VSelect-mJnmdX3T.f376a225b78d.js +1 -0
- codex/static_root/assets/VSelect-mJnmdX3T.f376a225b78d.js.br +0 -0
- codex/static_root/assets/VSelect-mJnmdX3T.f376a225b78d.js.gz +0 -0
- codex/static_root/assets/VSelect-mJnmdX3T.js +1 -0
- codex/static_root/assets/VSelect-mJnmdX3T.js.br +0 -0
- codex/static_root/assets/VSelect-mJnmdX3T.js.gz +0 -0
- codex/static_root/assets/VSelect-udkSZJsa.1873bae92d9d.css +1 -0
- codex/static_root/assets/VSelect-udkSZJsa.1873bae92d9d.css.br +0 -0
- codex/static_root/assets/VSelect-udkSZJsa.1873bae92d9d.css.gz +0 -0
- codex/static_root/assets/VSelect-udkSZJsa.css +1 -0
- codex/static_root/assets/VSelect-udkSZJsa.css.br +0 -0
- codex/static_root/assets/VSelect-udkSZJsa.css.gz +0 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.a06799bce7a2.js +1 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.a06799bce7a2.js.br +0 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.a06799bce7a2.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.js +1 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.js.br +0 -0
- codex/static_root/assets/VSelectionControl-Dl-z80yK.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.a9ccd72e815b.js +1 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.a9ccd72e815b.js.br +0 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.a9ccd72e815b.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.js +1 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.js.br +0 -0
- codex/static_root/assets/VSlideGroup-D7-cGh6b.js.gz +0 -0
- codex/static_root/assets/{VTextField-8NJPNEpH.190723039dea.css → VSlideGroup-Z7BhHtYB.90de84ac696c.css} +1 -1
- codex/static_root/assets/VSlideGroup-Z7BhHtYB.90de84ac696c.css.br +0 -0
- codex/static_root/assets/VSlideGroup-Z7BhHtYB.90de84ac696c.css.gz +0 -0
- codex/static_root/assets/{VTextField-8NJPNEpH.css → VSlideGroup-Z7BhHtYB.css} +1 -1
- codex/static_root/assets/VSlideGroup-Z7BhHtYB.css.br +0 -0
- codex/static_root/assets/VSlideGroup-Z7BhHtYB.css.gz +0 -0
- codex/static_root/assets/{VTable-XNR_fTYM.4be31a3a6cd7.js → VTable-D3ZmQmNr.ae26ea41abdd.js} +1 -1
- codex/static_root/assets/VTable-D3ZmQmNr.ae26ea41abdd.js.br +0 -0
- codex/static_root/assets/VTable-D3ZmQmNr.ae26ea41abdd.js.gz +0 -0
- codex/static_root/assets/{VTable-XNR_fTYM.js → VTable-D3ZmQmNr.js} +1 -1
- codex/static_root/assets/VTable-D3ZmQmNr.js.br +0 -0
- codex/static_root/assets/VTable-D3ZmQmNr.js.gz +0 -0
- codex/static_root/assets/VTable-DflzroDq.160504d82195.css +1 -0
- codex/static_root/assets/VTable-DflzroDq.160504d82195.css.br +0 -0
- codex/static_root/assets/VTable-DflzroDq.160504d82195.css.gz +0 -0
- codex/static_root/assets/VTable-DflzroDq.css +1 -0
- codex/static_root/assets/VTable-DflzroDq.css.br +0 -0
- codex/static_root/assets/VTable-DflzroDq.css.gz +0 -0
- codex/static_root/assets/VToolbar-C5QbEltS.6de3ffa35a37.css +1 -0
- codex/static_root/assets/VToolbar-C5QbEltS.6de3ffa35a37.css.br +0 -0
- codex/static_root/assets/VToolbar-C5QbEltS.6de3ffa35a37.css.gz +0 -0
- codex/static_root/assets/VToolbar-C5QbEltS.css +1 -0
- codex/static_root/assets/VToolbar-C5QbEltS.css.br +0 -0
- codex/static_root/assets/VToolbar-C5QbEltS.css.gz +0 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.95e33cc12ad9.js +7 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.95e33cc12ad9.js.br +0 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.95e33cc12ad9.js.gz +0 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.js +7 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.js.br +0 -0
- codex/static_root/assets/VToolbar-_8U2Zy9o.js.gz +0 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.d6854cb3e107.js +1 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.d6854cb3e107.js.br +0 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.d6854cb3e107.js.gz +0 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.js +1 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.js.br +0 -0
- codex/static_root/assets/VWindowItem-BL-3IAQN.js.gz +0 -0
- codex/static_root/assets/{VWindowItem--TlRwQ5R.css → VWindowItem-ByIod57Y.css} +1 -1
- codex/static_root/assets/VWindowItem-ByIod57Y.css.br +0 -0
- codex/static_root/assets/VWindowItem-ByIod57Y.css.gz +0 -0
- codex/static_root/assets/{VWindowItem--TlRwQ5R.fe195e056b07.css → VWindowItem-ByIod57Y.f7fb19752bf3.css} +1 -1
- codex/static_root/assets/VWindowItem-ByIod57Y.f7fb19752bf3.css.br +0 -0
- codex/static_root/assets/VWindowItem-ByIod57Y.f7fb19752bf3.css.gz +0 -0
- codex/static_root/assets/admin-DB_W6AqP.c4baa268ac64.js +1 -0
- codex/static_root/assets/admin-DB_W6AqP.c4baa268ac64.js.br +0 -0
- codex/static_root/assets/admin-DB_W6AqP.c4baa268ac64.js.gz +0 -0
- codex/static_root/assets/admin-DB_W6AqP.js +1 -0
- codex/static_root/assets/admin-DB_W6AqP.js.br +0 -0
- codex/static_root/assets/admin-DB_W6AqP.js.gz +0 -0
- codex/static_root/assets/{admin-MwCSFwIp.6de10f13b01b.css → admin-Df82-Qcj.4c3f0406ee54.css} +1 -1
- codex/static_root/assets/admin-Df82-Qcj.4c3f0406ee54.css.br +0 -0
- codex/static_root/assets/admin-Df82-Qcj.4c3f0406ee54.css.gz +0 -0
- codex/static_root/assets/{admin-MwCSFwIp.css → admin-Df82-Qcj.css} +1 -1
- codex/static_root/assets/admin-Df82-Qcj.css.br +0 -0
- codex/static_root/assets/admin-Df82-Qcj.css.gz +0 -0
- codex/static_root/assets/{admin-drawer-panel-qf94Ysts.css → admin-drawer-panel-CsBUDBLE.08509b8ed15f.css} +1 -1
- codex/static_root/assets/admin-drawer-panel-CsBUDBLE.08509b8ed15f.css.br +0 -0
- codex/static_root/assets/admin-drawer-panel-CsBUDBLE.08509b8ed15f.css.gz +0 -0
- codex/static_root/assets/{admin-drawer-panel-qf94Ysts.c0696c636fab.css → admin-drawer-panel-CsBUDBLE.css} +1 -1
- codex/static_root/assets/admin-drawer-panel-CsBUDBLE.css.br +0 -0
- codex/static_root/assets/admin-drawer-panel-CsBUDBLE.css.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.9ff3ea099676.js +30 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.9ff3ea099676.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.9ff3ea099676.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.js +30 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-d5nWfOhv.js.gz +0 -0
- codex/static_root/assets/browser-C8SJwVGz.0f7daf93b064.css +1 -0
- codex/static_root/assets/browser-C8SJwVGz.0f7daf93b064.css.br +0 -0
- codex/static_root/assets/browser-C8SJwVGz.0f7daf93b064.css.gz +0 -0
- codex/static_root/assets/browser-C8SJwVGz.css +1 -0
- codex/static_root/assets/browser-C8SJwVGz.css.br +0 -0
- codex/static_root/assets/browser-C8SJwVGz.css.gz +0 -0
- codex/static_root/assets/browser-WCnHQaMI.83b81e02a6c9.js +1 -0
- codex/static_root/assets/browser-WCnHQaMI.83b81e02a6c9.js.br +0 -0
- codex/static_root/assets/browser-WCnHQaMI.83b81e02a6c9.js.gz +0 -0
- codex/static_root/assets/browser-WCnHQaMI.js +1 -0
- codex/static_root/assets/browser-WCnHQaMI.js.br +0 -0
- codex/static_root/assets/browser-WCnHQaMI.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.d1c607e833e1.js +1 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.d1c607e833e1.js.br +0 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.d1c607e833e1.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.js +1 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.js.br +0 -0
- codex/static_root/assets/change-password-dialog-D_VAW-nW.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-oEnGefnv.b1227348d465.js → confirm-dialog-cCUg3s1r.619d5623b44d.js} +1 -1
- codex/static_root/assets/confirm-dialog-cCUg3s1r.619d5623b44d.js.br +0 -0
- codex/static_root/assets/confirm-dialog-cCUg3s1r.619d5623b44d.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-oEnGefnv.js → confirm-dialog-cCUg3s1r.js} +1 -1
- codex/static_root/assets/confirm-dialog-cCUg3s1r.js.br +0 -0
- codex/static_root/assets/confirm-dialog-cCUg3s1r.js.gz +0 -0
- codex/static_root/assets/{confirm-footer-wmmDHzIL.04fb93e7daf3.css → confirm-footer-VFepxcJs.4150131304bd.css} +1 -1
- codex/static_root/assets/confirm-footer-VFepxcJs.4150131304bd.css.br +0 -0
- codex/static_root/assets/confirm-footer-VFepxcJs.4150131304bd.css.gz +0 -0
- codex/static_root/assets/{confirm-footer-wmmDHzIL.css → confirm-footer-VFepxcJs.css} +1 -1
- codex/static_root/assets/confirm-footer-VFepxcJs.css.br +0 -0
- codex/static_root/assets/confirm-footer-VFepxcJs.css.gz +0 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.9511476b5d4d.js +1 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.9511476b5d4d.js.br +0 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.9511476b5d4d.js.gz +0 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.js +1 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.js.br +0 -0
- codex/static_root/assets/confirm-footer-g19OD_Ro.js.gz +0 -0
- codex/static_root/assets/{datetime-column-wfJgH61c.5e9a5e4f4942.js → datetime-column-D40geMT4.7b07d44a9935.js} +1 -1
- codex/static_root/assets/datetime-column-D40geMT4.7b07d44a9935.js.br +0 -0
- codex/static_root/assets/datetime-column-D40geMT4.7b07d44a9935.js.gz +0 -0
- codex/static_root/assets/{datetime-column-wfJgH61c.js → datetime-column-D40geMT4.js} +1 -1
- codex/static_root/assets/datetime-column-D40geMT4.js.br +0 -0
- codex/static_root/assets/datetime-column-D40geMT4.js.gz +0 -0
- codex/static_root/assets/filter-DbyVndkN.3a89dcf851f7.js +1 -0
- codex/static_root/assets/filter-DbyVndkN.3a89dcf851f7.js.br +0 -0
- codex/static_root/assets/filter-DbyVndkN.3a89dcf851f7.js.gz +0 -0
- codex/static_root/assets/filter-DbyVndkN.js +1 -0
- codex/static_root/assets/filter-DbyVndkN.js.br +0 -0
- codex/static_root/assets/filter-DbyVndkN.js.gz +0 -0
- codex/static_root/assets/{flag-tab-g9dmSvT7.64fc848dba03.js → flag-tab-Beq9QsKv.1caf7342b359.js} +1 -1
- codex/static_root/assets/flag-tab-Beq9QsKv.1caf7342b359.js.br +0 -0
- codex/static_root/assets/flag-tab-Beq9QsKv.1caf7342b359.js.gz +0 -0
- codex/static_root/assets/{flag-tab-g9dmSvT7.js → flag-tab-Beq9QsKv.js} +1 -1
- codex/static_root/assets/flag-tab-Beq9QsKv.js.br +0 -0
- codex/static_root/assets/flag-tab-Beq9QsKv.js.gz +0 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.48613b45cd25.js +1 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.48613b45cd25.js.br +0 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.48613b45cd25.js.gz +0 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.js +1 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.js.br +0 -0
- codex/static_root/assets/group-tab-D_Xc9f5l.js.gz +0 -0
- codex/static_root/assets/http-error-MvZTJwze.c2f1ef9de95d.js +1 -0
- codex/static_root/assets/http-error-MvZTJwze.c2f1ef9de95d.js.br +0 -0
- codex/static_root/assets/http-error-MvZTJwze.c2f1ef9de95d.js.gz +0 -0
- codex/static_root/assets/http-error-MvZTJwze.js +1 -0
- codex/static_root/assets/http-error-MvZTJwze.js.br +0 -0
- codex/static_root/assets/http-error-MvZTJwze.js.gz +0 -0
- codex/static_root/assets/library-tab-BekMoaXp.b6db20b5b272.js +1 -0
- codex/static_root/assets/library-tab-BekMoaXp.b6db20b5b272.js.br +0 -0
- codex/static_root/assets/library-tab-BekMoaXp.b6db20b5b272.js.gz +0 -0
- codex/static_root/assets/library-tab-BekMoaXp.js +1 -0
- codex/static_root/assets/library-tab-BekMoaXp.js.br +0 -0
- codex/static_root/assets/library-tab-BekMoaXp.js.gz +0 -0
- codex/static_root/assets/main-CXxSyR20.34af24d11af1.js +37 -0
- codex/static_root/assets/main-CXxSyR20.34af24d11af1.js.br +0 -0
- codex/static_root/assets/main-CXxSyR20.34af24d11af1.js.gz +0 -0
- codex/static_root/assets/main-CXxSyR20.js +37 -0
- codex/static_root/assets/main-CXxSyR20.js.br +0 -0
- codex/static_root/assets/main-CXxSyR20.js.gz +0 -0
- codex/static_root/assets/{main-eLpQR-nY.052265de7d69.css → main-CacfwsKA.4f849ef1c5db.css} +2 -2
- codex/static_root/assets/main-CacfwsKA.4f849ef1c5db.css.br +0 -0
- codex/static_root/assets/main-CacfwsKA.4f849ef1c5db.css.gz +0 -0
- codex/static_root/assets/{main-eLpQR-nY.css → main-CacfwsKA.css} +2 -2
- codex/static_root/assets/main-CacfwsKA.css.br +0 -0
- codex/static_root/assets/main-CacfwsKA.css.gz +0 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.c9fc03399abd.js +1 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.c9fc03399abd.js.br +0 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.c9fc03399abd.js.gz +0 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.js +1 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.js.br +0 -0
- codex/static_root/assets/metadata-dialog-Bs652L_u.js.gz +0 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css +1 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css.br +0 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css.gz +0 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.css +1 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.css.br +0 -0
- codex/static_root/assets/metadata-dialog-DPxDDFDy.css.gz +0 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css +1 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css.br +0 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css.gz +0 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.css +1 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.css.br +0 -0
- codex/static_root/assets/pdf-doc-CMzaSV_K.css.gz +0 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.3a68571faee3.js +35 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.3a68571faee3.js.br +0 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.3a68571faee3.js.gz +0 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.js +35 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.js.br +0 -0
- codex/static_root/assets/pdf-doc-CQL4P7bj.js.gz +0 -0
- codex/static_root/assets/reader-B4hkFEOb.d0dd217d177e.js +7 -0
- codex/static_root/assets/reader-B4hkFEOb.d0dd217d177e.js.br +0 -0
- codex/static_root/assets/reader-B4hkFEOb.d0dd217d177e.js.gz +0 -0
- codex/static_root/assets/reader-B4hkFEOb.js +7 -0
- codex/static_root/assets/reader-B4hkFEOb.js.br +0 -0
- codex/static_root/assets/reader-B4hkFEOb.js.gz +0 -0
- codex/static_root/assets/reader-DHZzx6Jl.17879ea49fff.css +1 -0
- codex/static_root/assets/reader-DHZzx6Jl.17879ea49fff.css.br +0 -0
- codex/static_root/assets/reader-DHZzx6Jl.17879ea49fff.css.gz +0 -0
- codex/static_root/assets/reader-DHZzx6Jl.css +1 -0
- codex/static_root/assets/reader-DHZzx6Jl.css.br +0 -0
- codex/static_root/assets/reader-DHZzx6Jl.css.gz +0 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css +1 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css.br +0 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css.gz +0 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.css +1 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.css.br +0 -0
- codex/static_root/assets/stats-tab-BTZLMBCU.css.gz +0 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.9eec298d5175.js +1 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.9eec298d5175.js.br +0 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.9eec298d5175.js.gz +0 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.js +1 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.js.br +0 -0
- codex/static_root/assets/stats-tab-Cb-54N4z.js.gz +0 -0
- codex/static_root/assets/task-tab-DoX9OA37.9bb355f36dbf.css +1 -0
- codex/static_root/assets/task-tab-DoX9OA37.9bb355f36dbf.css.br +2 -0
- codex/static_root/assets/task-tab-DoX9OA37.9bb355f36dbf.css.gz +0 -0
- codex/static_root/assets/task-tab-DoX9OA37.css +1 -0
- codex/static_root/assets/task-tab-DoX9OA37.css.br +2 -0
- codex/static_root/assets/task-tab-DoX9OA37.css.gz +0 -0
- codex/static_root/assets/task-tab-QhcQNvG8.ed4e7a9b6d9d.js +1 -0
- codex/static_root/assets/task-tab-QhcQNvG8.ed4e7a9b6d9d.js.br +0 -0
- codex/static_root/assets/task-tab-QhcQNvG8.ed4e7a9b6d9d.js.gz +0 -0
- codex/static_root/assets/task-tab-QhcQNvG8.js +1 -0
- codex/static_root/assets/task-tab-QhcQNvG8.js.br +0 -0
- codex/static_root/assets/task-tab-QhcQNvG8.js.gz +0 -0
- codex/static_root/assets/to-case-kUm8NPpW.5b3369f511b8.js +1 -0
- codex/static_root/assets/to-case-kUm8NPpW.js +1 -0
- codex/static_root/assets/user-tab-BuianwBU.df5cefd3b550.js +1 -0
- codex/static_root/assets/user-tab-BuianwBU.df5cefd3b550.js.br +0 -0
- codex/static_root/assets/user-tab-BuianwBU.df5cefd3b550.js.gz +0 -0
- codex/static_root/assets/user-tab-BuianwBU.js +1 -0
- codex/static_root/assets/user-tab-BuianwBU.js.br +0 -0
- codex/static_root/assets/user-tab-BuianwBU.js.gz +0 -0
- codex/static_root/manifest.bb70f9bc6689.json +573 -0
- codex/static_root/manifest.bb70f9bc6689.json.br +0 -0
- codex/static_root/manifest.bb70f9bc6689.json.gz +0 -0
- codex/static_root/manifest.json +378 -377
- codex/static_root/manifest.json.br +0 -0
- codex/static_root/manifest.json.gz +0 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.css +4 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.css.br +0 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.css.gz +0 -0
- codex/static_root/rest_framework/css/{bootstrap-tweaks.46ed116b0edd.css → bootstrap-tweaks.ee4ee6acf9eb.css} +4 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css.br +0 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css.gz +0 -0
- codex/static_root/rest_framework/js/{ajax-form.0ea6e6052ab5.js → ajax-form.4e1cdcb7acab.js} +6 -0
- codex/static_root/rest_framework/js/ajax-form.4e1cdcb7acab.js.br +0 -0
- codex/static_root/rest_framework/js/ajax-form.4e1cdcb7acab.js.gz +0 -0
- codex/static_root/rest_framework/js/ajax-form.js +6 -0
- codex/static_root/rest_framework/js/ajax-form.js.br +0 -0
- codex/static_root/rest_framework/js/ajax-form.js.gz +0 -0
- codex/static_root/rest_framework/js/{csrf.969930007329.js → csrf.455080a7b2ce.js} +1 -0
- codex/static_root/rest_framework/js/csrf.455080a7b2ce.js.br +0 -0
- codex/static_root/rest_framework/js/csrf.455080a7b2ce.js.gz +0 -0
- codex/static_root/rest_framework/js/csrf.js +1 -0
- codex/static_root/rest_framework/js/csrf.js.br +0 -0
- codex/static_root/rest_framework/js/csrf.js.gz +0 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js +2 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js.br +0 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js.gz +0 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.js +2 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.js.br +0 -0
- codex/static_root/rest_framework/js/jquery-3.7.1.min.js.gz +0 -0
- codex/static_root/rest_framework/js/load-ajax-form.8cdb3a9f3466.js +3 -0
- codex/static_root/rest_framework/js/load-ajax-form.8cdb3a9f3466.js.br +0 -0
- codex/static_root/rest_framework/js/load-ajax-form.js +3 -0
- codex/static_root/rest_framework/js/load-ajax-form.js.br +0 -0
- codex/static_root/staticfiles.json +1 -1
- codex/status.py +1 -0
- codex/status_controller.py +1 -0
- codex/threads.py +1 -0
- codex/urls/api/admin.py +1 -0
- codex/urls/api/auth.py +1 -0
- codex/urls/api/browser.py +7 -6
- codex/urls/api/reader.py +3 -5
- codex/urls/api/root.py +1 -0
- codex/urls/api/v3.py +1 -0
- codex/urls/app.py +10 -0
- codex/urls/const.py +6 -0
- codex/urls/converters.py +1 -0
- codex/urls/opds/authentication.py +3 -3
- codex/urls/opds/binary.py +2 -3
- codex/urls/opds/root.py +1 -0
- codex/urls/opds/v1.py +4 -4
- codex/urls/opds/v2.py +4 -1
- codex/urls/pwa.py +5 -4
- codex/urls/root.py +1 -2
- codex/version.py +1 -0
- codex/views/admin/api_key.py +1 -0
- codex/views/admin/flag.py +1 -0
- codex/views/admin/group.py +1 -0
- codex/views/admin/library.py +1 -0
- codex/views/admin/stats.py +1 -0
- codex/views/admin/tasks.py +1 -0
- codex/views/admin/user.py +1 -0
- codex/views/auth.py +1 -0
- codex/views/bookmark.py +42 -5
- codex/views/browser/base.py +1 -0
- codex/views/browser/browser.py +1 -0
- codex/views/browser/browser_annotations.py +6 -0
- codex/views/browser/browser_order_by.py +1 -0
- codex/views/browser/choices.py +1 -0
- codex/views/browser/filters/bookmark.py +1 -0
- codex/views/browser/filters/field.py +1 -0
- codex/views/browser/filters/group.py +1 -0
- codex/views/browser/filters/search.py +1 -0
- codex/views/browser/metadata.py +18 -12
- codex/views/browser/session.py +1 -0
- codex/views/const.py +1 -0
- codex/views/cover.py +1 -0
- codex/views/download.py +18 -2
- codex/views/error.py +1 -0
- codex/views/frontend.py +1 -0
- codex/views/opds/authentication_v1.py +1 -0
- codex/views/opds/binary.py +1 -0
- codex/views/opds/util.py +1 -0
- codex/views/opds/v1/data.py +1 -0
- codex/views/opds/v1/entry/data.py +1 -0
- codex/views/opds/v1/entry/entry.py +1 -0
- codex/views/opds/v1/entry/links.py +1 -0
- codex/views/opds/v1/facets.py +1 -0
- codex/views/opds/v1/feed.py +1 -0
- codex/views/opds/v1/links.py +1 -0
- codex/views/opds/v1/opensearch_v1.py +1 -0
- codex/views/opds/v2/const.py +1 -0
- codex/views/opds/v2/feed.py +1 -0
- codex/views/opds/v2/links.py +1 -0
- codex/views/opds/v2/publications.py +1 -0
- codex/views/opds/v2/top_links.py +1 -0
- codex/views/pwa.py +1 -0
- codex/views/reader/reader.py +3 -0
- codex/views/reader/session.py +1 -0
- codex/views/session.py +1 -0
- codex/views/template.py +1 -0
- codex/views/version.py +1 -0
- codex/websockets/aio_queue.py +1 -0
- codex/websockets/consumers.py +1 -0
- codex/websockets/listener.py +1 -0
- codex/worker_base.py +1 -0
- {codex-1.5.0a1.dist-info → codex-1.5.0a3.dist-info}/METADATA +64 -28
- codex-1.5.0a3.dist-info/RECORD +935 -0
- {codex-1.5.0a1.dist-info → codex-1.5.0a3.dist-info}/WHEEL +1 -1
- codex/static_root/assets/VCheckbox-Flv8K2j6.89239120bde3.css +0 -1
- codex/static_root/assets/VCheckbox-Flv8K2j6.89239120bde3.css.br +0 -0
- codex/static_root/assets/VCheckbox-Flv8K2j6.css +0 -1
- codex/static_root/assets/VCheckbox-Flv8K2j6.css.br +0 -0
- codex/static_root/assets/VCheckbox-lZu_HyjX.55532edda1c7.js +0 -1
- codex/static_root/assets/VCheckbox-lZu_HyjX.55532edda1c7.js.br +0 -0
- codex/static_root/assets/VCheckbox-lZu_HyjX.55532edda1c7.js.gz +0 -0
- codex/static_root/assets/VCheckbox-lZu_HyjX.js +0 -1
- codex/static_root/assets/VCheckbox-lZu_HyjX.js.br +0 -0
- codex/static_root/assets/VCheckbox-lZu_HyjX.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.38d5f5ce18bb.js +0 -1
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.38d5f5ce18bb.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.38d5f5ce18bb.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.js +0 -1
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DTj7-ezn.js.gz +0 -0
- codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css +0 -1
- codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css.br +0 -0
- codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css.gz +0 -0
- codex/static_root/assets/VCombobox-JDYDwU3-.css +0 -1
- codex/static_root/assets/VCombobox-JDYDwU3-.css.br +0 -0
- codex/static_root/assets/VCombobox-JDYDwU3-.css.gz +0 -0
- codex/static_root/assets/VCombobox-yrK61bne.46ffe20c03cb.js +0 -1
- codex/static_root/assets/VCombobox-yrK61bne.46ffe20c03cb.js.br +0 -0
- codex/static_root/assets/VCombobox-yrK61bne.46ffe20c03cb.js.gz +0 -0
- codex/static_root/assets/VCombobox-yrK61bne.js +0 -1
- codex/static_root/assets/VCombobox-yrK61bne.js.br +0 -0
- codex/static_root/assets/VCombobox-yrK61bne.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.38e36085850a.js +0 -1
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.38e36085850a.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.38e36085850a.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.js +0 -1
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-XCcE5Jzw.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css.br +0 -0
- codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.css.br +0 -0
- codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.css.gz +0 -0
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.0eb9e9b66a59.js +0 -1
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.0eb9e9b66a59.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.0eb9e9b66a59.js.gz +0 -0
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.js +0 -1
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-CNbQXKrU.js.gz +0 -0
- codex/static_root/assets/VExpansionPanel-gdSap9-6.212a9add7ff2.css.br +0 -0
- codex/static_root/assets/VExpansionPanel-gdSap9-6.212a9add7ff2.css.gz +0 -0
- codex/static_root/assets/VExpansionPanel-gdSap9-6.css.br +0 -0
- codex/static_root/assets/VExpansionPanel-gdSap9-6.css.gz +0 -0
- codex/static_root/assets/VMain-MR9pvpIS.ffd0ac6a1519.js.br +0 -0
- codex/static_root/assets/VMain-MR9pvpIS.ffd0ac6a1519.js.gz +0 -0
- codex/static_root/assets/VMain-MR9pvpIS.js.br +0 -0
- codex/static_root/assets/VMain-MR9pvpIS.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.00e15ce8aed7.js +0 -1
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.00e15ce8aed7.js.br +0 -4
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.00e15ce8aed7.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.js +0 -1
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.js.br +0 -4
- codex/static_root/assets/VRadioGroup-VGTs8Mzg.js.gz +0 -0
- codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css +0 -1
- codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css.br +0 -0
- codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css.gz +0 -0
- codex/static_root/assets/VSelect-3jR8Um8C.css +0 -1
- codex/static_root/assets/VSelect-3jR8Um8C.css.br +0 -0
- codex/static_root/assets/VSelect-3jR8Um8C.css.gz +0 -0
- codex/static_root/assets/VSelect-X8dbnoNh.ecc201f01af0.js +0 -1
- codex/static_root/assets/VSelect-X8dbnoNh.ecc201f01af0.js.br +0 -0
- codex/static_root/assets/VSelect-X8dbnoNh.ecc201f01af0.js.gz +0 -0
- codex/static_root/assets/VSelect-X8dbnoNh.js +0 -1
- codex/static_root/assets/VSelect-X8dbnoNh.js.br +0 -0
- codex/static_root/assets/VSelect-X8dbnoNh.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-7--lqaSd.b5af1380564c.js +0 -1
- codex/static_root/assets/VSelectionControl-7--lqaSd.b5af1380564c.js.br +0 -0
- codex/static_root/assets/VSelectionControl-7--lqaSd.b5af1380564c.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-7--lqaSd.js +0 -1
- codex/static_root/assets/VSelectionControl-7--lqaSd.js.br +0 -0
- codex/static_root/assets/VSelectionControl-7--lqaSd.js.gz +0 -0
- codex/static_root/assets/VTable-XNR_fTYM.4be31a3a6cd7.js.br +0 -0
- codex/static_root/assets/VTable-XNR_fTYM.4be31a3a6cd7.js.gz +0 -0
- codex/static_root/assets/VTable-XNR_fTYM.js.br +0 -0
- codex/static_root/assets/VTable-XNR_fTYM.js.gz +0 -0
- codex/static_root/assets/VTable-aiByCThw.85589025b93b.css +0 -1
- codex/static_root/assets/VTable-aiByCThw.85589025b93b.css.br +0 -0
- codex/static_root/assets/VTable-aiByCThw.85589025b93b.css.gz +0 -0
- codex/static_root/assets/VTable-aiByCThw.css +0 -1
- codex/static_root/assets/VTable-aiByCThw.css.br +0 -0
- codex/static_root/assets/VTable-aiByCThw.css.gz +0 -0
- codex/static_root/assets/VTextField-1_gRJ3Nt.6a1540e0ed41.js +0 -1
- codex/static_root/assets/VTextField-1_gRJ3Nt.6a1540e0ed41.js.br +0 -0
- codex/static_root/assets/VTextField-1_gRJ3Nt.6a1540e0ed41.js.gz +0 -0
- codex/static_root/assets/VTextField-1_gRJ3Nt.js +0 -1
- codex/static_root/assets/VTextField-1_gRJ3Nt.js.br +0 -0
- codex/static_root/assets/VTextField-1_gRJ3Nt.js.gz +0 -0
- codex/static_root/assets/VTextField-8NJPNEpH.190723039dea.css.br +0 -0
- codex/static_root/assets/VTextField-8NJPNEpH.190723039dea.css.gz +0 -0
- codex/static_root/assets/VTextField-8NJPNEpH.css.br +0 -0
- codex/static_root/assets/VTextField-8NJPNEpH.css.gz +0 -0
- codex/static_root/assets/VToolbar-PLads6MY.css +0 -1
- codex/static_root/assets/VToolbar-PLads6MY.css.br +0 -0
- codex/static_root/assets/VToolbar-PLads6MY.css.gz +0 -0
- codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css +0 -1
- codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css.br +0 -0
- codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css.gz +0 -0
- codex/static_root/assets/VToolbar-g8yJLQO4.87d49e1177ce.js +0 -7
- codex/static_root/assets/VToolbar-g8yJLQO4.87d49e1177ce.js.br +0 -0
- codex/static_root/assets/VToolbar-g8yJLQO4.87d49e1177ce.js.gz +0 -0
- codex/static_root/assets/VToolbar-g8yJLQO4.js +0 -7
- codex/static_root/assets/VToolbar-g8yJLQO4.js.br +0 -0
- codex/static_root/assets/VToolbar-g8yJLQO4.js.gz +0 -0
- codex/static_root/assets/VWindowItem--TlRwQ5R.css.br +0 -0
- codex/static_root/assets/VWindowItem--TlRwQ5R.css.gz +0 -0
- codex/static_root/assets/VWindowItem--TlRwQ5R.fe195e056b07.css.br +0 -0
- codex/static_root/assets/VWindowItem--TlRwQ5R.fe195e056b07.css.gz +0 -0
- codex/static_root/assets/VWindowItem-i5tFRaI4.8a8af6c6de17.js +0 -1
- codex/static_root/assets/VWindowItem-i5tFRaI4.8a8af6c6de17.js.br +0 -0
- codex/static_root/assets/VWindowItem-i5tFRaI4.8a8af6c6de17.js.gz +0 -0
- codex/static_root/assets/VWindowItem-i5tFRaI4.js +0 -1
- codex/static_root/assets/VWindowItem-i5tFRaI4.js.br +0 -0
- codex/static_root/assets/VWindowItem-i5tFRaI4.js.gz +0 -0
- codex/static_root/assets/admin-MwCSFwIp.6de10f13b01b.css.br +0 -0
- codex/static_root/assets/admin-MwCSFwIp.6de10f13b01b.css.gz +0 -0
- codex/static_root/assets/admin-MwCSFwIp.css.br +0 -0
- codex/static_root/assets/admin-MwCSFwIp.css.gz +0 -0
- codex/static_root/assets/admin-Vvc8IQ8V.f128fffcff98.js +0 -1
- codex/static_root/assets/admin-Vvc8IQ8V.f128fffcff98.js.br +0 -0
- codex/static_root/assets/admin-Vvc8IQ8V.f128fffcff98.js.gz +0 -0
- codex/static_root/assets/admin-Vvc8IQ8V.js +0 -1
- codex/static_root/assets/admin-Vvc8IQ8V.js.br +0 -0
- codex/static_root/assets/admin-Vvc8IQ8V.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-qf94Ysts.c0696c636fab.css.br +0 -0
- codex/static_root/assets/admin-drawer-panel-qf94Ysts.c0696c636fab.css.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-qf94Ysts.css.br +0 -0
- codex/static_root/assets/admin-drawer-panel-qf94Ysts.css.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.e17cb629a39c.js +0 -33
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.e17cb629a39c.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.e17cb629a39c.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.js +0 -33
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-vjNsHbQp.js.gz +0 -0
- codex/static_root/assets/browser-R-Dbyfan.380647195802.js +0 -1
- codex/static_root/assets/browser-R-Dbyfan.380647195802.js.br +0 -0
- codex/static_root/assets/browser-R-Dbyfan.380647195802.js.gz +0 -0
- codex/static_root/assets/browser-R-Dbyfan.js +0 -1
- codex/static_root/assets/browser-R-Dbyfan.js.br +0 -0
- codex/static_root/assets/browser-R-Dbyfan.js.gz +0 -0
- codex/static_root/assets/browser-hLiDgCIH.6dd225a38a22.css +0 -1
- codex/static_root/assets/browser-hLiDgCIH.6dd225a38a22.css.br +0 -0
- codex/static_root/assets/browser-hLiDgCIH.6dd225a38a22.css.gz +0 -0
- codex/static_root/assets/browser-hLiDgCIH.css +0 -1
- codex/static_root/assets/browser-hLiDgCIH.css.br +0 -0
- codex/static_root/assets/browser-hLiDgCIH.css.gz +0 -0
- codex/static_root/assets/change-password-dialog-xWZubfnu.f721e940b573.js +0 -1
- codex/static_root/assets/change-password-dialog-xWZubfnu.f721e940b573.js.br +0 -0
- codex/static_root/assets/change-password-dialog-xWZubfnu.f721e940b573.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-xWZubfnu.js +0 -1
- codex/static_root/assets/change-password-dialog-xWZubfnu.js.br +0 -0
- codex/static_root/assets/change-password-dialog-xWZubfnu.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-oEnGefnv.b1227348d465.js.br +0 -0
- codex/static_root/assets/confirm-dialog-oEnGefnv.b1227348d465.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-oEnGefnv.js.br +0 -0
- codex/static_root/assets/confirm-dialog-oEnGefnv.js.gz +0 -0
- codex/static_root/assets/confirm-footer-wmmDHzIL.04fb93e7daf3.css.br +0 -0
- codex/static_root/assets/confirm-footer-wmmDHzIL.04fb93e7daf3.css.gz +0 -0
- codex/static_root/assets/confirm-footer-wmmDHzIL.css.br +0 -0
- codex/static_root/assets/confirm-footer-wmmDHzIL.css.gz +0 -0
- codex/static_root/assets/confirm-footer-xJ8_9LG8.5a506ba86e71.js +0 -1
- codex/static_root/assets/confirm-footer-xJ8_9LG8.5a506ba86e71.js.br +0 -0
- codex/static_root/assets/confirm-footer-xJ8_9LG8.5a506ba86e71.js.gz +0 -0
- codex/static_root/assets/confirm-footer-xJ8_9LG8.js +0 -1
- codex/static_root/assets/confirm-footer-xJ8_9LG8.js.br +0 -0
- codex/static_root/assets/confirm-footer-xJ8_9LG8.js.gz +0 -0
- codex/static_root/assets/datetime-column-wfJgH61c.5e9a5e4f4942.js.br +0 -0
- codex/static_root/assets/datetime-column-wfJgH61c.5e9a5e4f4942.js.gz +0 -0
- codex/static_root/assets/datetime-column-wfJgH61c.js.br +0 -0
- codex/static_root/assets/datetime-column-wfJgH61c.js.gz +0 -0
- codex/static_root/assets/filter-4tBtSdTO.5bc46faa2c9b.js +0 -1
- codex/static_root/assets/filter-4tBtSdTO.5bc46faa2c9b.js.br +0 -0
- codex/static_root/assets/filter-4tBtSdTO.5bc46faa2c9b.js.gz +0 -0
- codex/static_root/assets/filter-4tBtSdTO.js +0 -1
- codex/static_root/assets/filter-4tBtSdTO.js.br +0 -0
- codex/static_root/assets/filter-4tBtSdTO.js.gz +0 -0
- codex/static_root/assets/flag-tab-g9dmSvT7.64fc848dba03.js.br +0 -0
- codex/static_root/assets/flag-tab-g9dmSvT7.64fc848dba03.js.gz +0 -0
- codex/static_root/assets/flag-tab-g9dmSvT7.js.br +0 -0
- codex/static_root/assets/flag-tab-g9dmSvT7.js.gz +0 -0
- codex/static_root/assets/group-tab-RJPwy0ju.ea278c40018d.js +0 -1
- codex/static_root/assets/group-tab-RJPwy0ju.ea278c40018d.js.br +0 -0
- codex/static_root/assets/group-tab-RJPwy0ju.ea278c40018d.js.gz +0 -0
- codex/static_root/assets/group-tab-RJPwy0ju.js +0 -1
- codex/static_root/assets/group-tab-RJPwy0ju.js.br +0 -0
- codex/static_root/assets/group-tab-RJPwy0ju.js.gz +0 -0
- codex/static_root/assets/http-error-Afzc_2W_.2be94674f63d.js +0 -1
- codex/static_root/assets/http-error-Afzc_2W_.2be94674f63d.js.br +0 -3
- codex/static_root/assets/http-error-Afzc_2W_.2be94674f63d.js.gz +0 -0
- codex/static_root/assets/http-error-Afzc_2W_.js +0 -1
- codex/static_root/assets/http-error-Afzc_2W_.js.br +0 -3
- codex/static_root/assets/http-error-Afzc_2W_.js.gz +0 -0
- codex/static_root/assets/library-tab-62PYybeF.64cdd617bb68.js +0 -1
- codex/static_root/assets/library-tab-62PYybeF.64cdd617bb68.js.br +0 -0
- codex/static_root/assets/library-tab-62PYybeF.64cdd617bb68.js.gz +0 -0
- codex/static_root/assets/library-tab-62PYybeF.js +0 -1
- codex/static_root/assets/library-tab-62PYybeF.js.br +0 -0
- codex/static_root/assets/library-tab-62PYybeF.js.gz +0 -0
- codex/static_root/assets/main-0jpTXekm.ad88f977847a.js +0 -37
- codex/static_root/assets/main-0jpTXekm.ad88f977847a.js.br +0 -0
- codex/static_root/assets/main-0jpTXekm.ad88f977847a.js.gz +0 -0
- codex/static_root/assets/main-0jpTXekm.js +0 -37
- codex/static_root/assets/main-0jpTXekm.js.br +0 -0
- codex/static_root/assets/main-0jpTXekm.js.gz +0 -0
- codex/static_root/assets/main-eLpQR-nY.052265de7d69.css.br +0 -0
- codex/static_root/assets/main-eLpQR-nY.052265de7d69.css.gz +0 -0
- codex/static_root/assets/main-eLpQR-nY.css.br +0 -0
- codex/static_root/assets/main-eLpQR-nY.css.gz +0 -0
- codex/static_root/assets/metadata-dialog-GoqskInA.4e2d05d79644.css +0 -1
- codex/static_root/assets/metadata-dialog-GoqskInA.4e2d05d79644.css.br +0 -0
- codex/static_root/assets/metadata-dialog-GoqskInA.4e2d05d79644.css.gz +0 -0
- codex/static_root/assets/metadata-dialog-GoqskInA.css +0 -1
- codex/static_root/assets/metadata-dialog-GoqskInA.css.br +0 -0
- codex/static_root/assets/metadata-dialog-GoqskInA.css.gz +0 -0
- codex/static_root/assets/metadata-dialog-jRRTHoGu.8b30e318e621.js +0 -1
- codex/static_root/assets/metadata-dialog-jRRTHoGu.8b30e318e621.js.br +0 -0
- codex/static_root/assets/metadata-dialog-jRRTHoGu.8b30e318e621.js.gz +0 -0
- codex/static_root/assets/metadata-dialog-jRRTHoGu.js +0 -1
- codex/static_root/assets/metadata-dialog-jRRTHoGu.js.br +0 -0
- codex/static_root/assets/metadata-dialog-jRRTHoGu.js.gz +0 -0
- codex/static_root/assets/page-pdf-Pldb5VSY.css +0 -1
- codex/static_root/assets/page-pdf-Pldb5VSY.css.br +0 -0
- codex/static_root/assets/page-pdf-Pldb5VSY.css.gz +0 -0
- codex/static_root/assets/page-pdf-Pldb5VSY.e936ccb145bf.css +0 -1
- codex/static_root/assets/page-pdf-Pldb5VSY.e936ccb145bf.css.br +0 -0
- codex/static_root/assets/page-pdf-Pldb5VSY.e936ccb145bf.css.gz +0 -0
- codex/static_root/assets/page-pdf-hfPKZiCx.7ac17df40bdf.js +0 -64
- codex/static_root/assets/page-pdf-hfPKZiCx.7ac17df40bdf.js.br +0 -0
- codex/static_root/assets/page-pdf-hfPKZiCx.7ac17df40bdf.js.gz +0 -0
- codex/static_root/assets/page-pdf-hfPKZiCx.js +0 -64
- codex/static_root/assets/page-pdf-hfPKZiCx.js.br +0 -0
- codex/static_root/assets/page-pdf-hfPKZiCx.js.gz +0 -0
- codex/static_root/assets/reader-3_PJt6OE.96d9a71d08ab.css +0 -1
- codex/static_root/assets/reader-3_PJt6OE.96d9a71d08ab.css.br +0 -0
- codex/static_root/assets/reader-3_PJt6OE.96d9a71d08ab.css.gz +0 -0
- codex/static_root/assets/reader-3_PJt6OE.css +0 -1
- codex/static_root/assets/reader-3_PJt6OE.css.br +0 -0
- codex/static_root/assets/reader-3_PJt6OE.css.gz +0 -0
- codex/static_root/assets/reader-x2nc0L9U.ec4cbd748751.js +0 -7
- codex/static_root/assets/reader-x2nc0L9U.ec4cbd748751.js.br +0 -0
- codex/static_root/assets/reader-x2nc0L9U.ec4cbd748751.js.gz +0 -0
- codex/static_root/assets/reader-x2nc0L9U.js +0 -7
- codex/static_root/assets/reader-x2nc0L9U.js.br +0 -0
- codex/static_root/assets/reader-x2nc0L9U.js.gz +0 -0
- codex/static_root/assets/stats-tab-MzBiUauN.ce46aa5fafd1.js +0 -1
- codex/static_root/assets/stats-tab-MzBiUauN.ce46aa5fafd1.js.br +0 -0
- codex/static_root/assets/stats-tab-MzBiUauN.ce46aa5fafd1.js.gz +0 -0
- codex/static_root/assets/stats-tab-MzBiUauN.js +0 -1
- codex/static_root/assets/stats-tab-MzBiUauN.js.br +0 -0
- codex/static_root/assets/stats-tab-MzBiUauN.js.gz +0 -0
- codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css +0 -1
- codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css.br +0 -0
- codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css.gz +0 -0
- codex/static_root/assets/stats-tab-p4QMYgdc.css +0 -1
- codex/static_root/assets/stats-tab-p4QMYgdc.css.br +0 -0
- codex/static_root/assets/stats-tab-p4QMYgdc.css.gz +0 -0
- codex/static_root/assets/task-tab-EZTIgaEM.f85bea0d3d37.js +0 -1
- codex/static_root/assets/task-tab-EZTIgaEM.f85bea0d3d37.js.br +0 -0
- codex/static_root/assets/task-tab-EZTIgaEM.f85bea0d3d37.js.gz +0 -0
- codex/static_root/assets/task-tab-EZTIgaEM.js +0 -1
- codex/static_root/assets/task-tab-EZTIgaEM.js.br +0 -0
- codex/static_root/assets/task-tab-EZTIgaEM.js.gz +0 -0
- codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css +0 -1
- codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css.br +0 -4
- codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css.gz +0 -0
- codex/static_root/assets/task-tab-ZlzQK_L_.css +0 -1
- codex/static_root/assets/task-tab-ZlzQK_L_.css.br +0 -4
- codex/static_root/assets/task-tab-ZlzQK_L_.css.gz +0 -0
- codex/static_root/assets/to-case-FdEoSAB7.98a284e67723.js +0 -1
- codex/static_root/assets/to-case-FdEoSAB7.98a284e67723.js.br +0 -0
- codex/static_root/assets/to-case-FdEoSAB7.js +0 -1
- codex/static_root/assets/to-case-FdEoSAB7.js.br +0 -0
- codex/static_root/assets/user-tab-pfW96Jlo.93e4cca2d548.js +0 -1
- codex/static_root/assets/user-tab-pfW96Jlo.93e4cca2d548.js.br +0 -0
- codex/static_root/assets/user-tab-pfW96Jlo.93e4cca2d548.js.gz +0 -0
- codex/static_root/assets/user-tab-pfW96Jlo.js +0 -1
- codex/static_root/assets/user-tab-pfW96Jlo.js.br +0 -0
- codex/static_root/assets/user-tab-pfW96Jlo.js.gz +0 -0
- codex/static_root/manifest.0416a9c9f599.json +0 -572
- codex/static_root/manifest.0416a9c9f599.json.br +0 -0
- codex/static_root/manifest.0416a9c9f599.json.gz +0 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.br +0 -0
- codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.gz +0 -0
- codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.br +0 -0
- codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.gz +0 -0
- codex/static_root/rest_framework/js/csrf.969930007329.js.br +0 -0
- codex/static_root/rest_framework/js/csrf.969930007329.js.gz +0 -0
- codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js +0 -2
- codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.br +0 -0
- codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.gz +0 -0
- codex/static_root/rest_framework/js/jquery-3.5.1.min.js +0 -2
- codex/static_root/rest_framework/js/jquery-3.5.1.min.js.br +0 -0
- codex/static_root/rest_framework/js/jquery-3.5.1.min.js.gz +0 -0
- codex-1.5.0a1.dist-info/RECORD +0 -929
- /codex/static_root/assets/{VMain-crd-1eHM.a00e206f3cfa.css → VMain-Byt37V4c.a00e206f3cfa.css} +0 -0
- /codex/static_root/assets/{VMain-crd-1eHM.a00e206f3cfa.css.br → VMain-Byt37V4c.a00e206f3cfa.css.br} +0 -0
- /codex/static_root/assets/{VMain-crd-1eHM.a00e206f3cfa.css.gz → VMain-Byt37V4c.a00e206f3cfa.css.gz} +0 -0
- /codex/static_root/assets/{VMain-crd-1eHM.css → VMain-Byt37V4c.css} +0 -0
- /codex/static_root/assets/{VMain-crd-1eHM.css.br → VMain-Byt37V4c.css.br} +0 -0
- /codex/static_root/assets/{VMain-crd-1eHM.css.gz → VMain-Byt37V4c.css.gz} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.8e3741381961.css → VRadioGroup-i2qP9Wu9.8e3741381961.css} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.8e3741381961.css.br → VRadioGroup-i2qP9Wu9.8e3741381961.css.br} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.8e3741381961.css.gz → VRadioGroup-i2qP9Wu9.8e3741381961.css.gz} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.css → VRadioGroup-i2qP9Wu9.css} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.css.br → VRadioGroup-i2qP9Wu9.css.br} +0 -0
- /codex/static_root/assets/{VRadioGroup-Itqj_Vrv.css.gz → VRadioGroup-i2qP9Wu9.css.gz} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.9687c77461fc.css → VSelectionControl-BFq--28I.9687c77461fc.css} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.9687c77461fc.css.br → VSelectionControl-BFq--28I.9687c77461fc.css.br} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.9687c77461fc.css.gz → VSelectionControl-BFq--28I.9687c77461fc.css.gz} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.css → VSelectionControl-BFq--28I.css} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.css.br → VSelectionControl-BFq--28I.css.br} +0 -0
- /codex/static_root/assets/{VSelectionControl-RavvtvCK.css.gz → VSelectionControl-BFq--28I.css.gz} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.2fead58a78c7.css → change-password-dialog-BRmvkNir.2fead58a78c7.css} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.2fead58a78c7.css.br → change-password-dialog-BRmvkNir.2fead58a78c7.css.br} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.2fead58a78c7.css.gz → change-password-dialog-BRmvkNir.2fead58a78c7.css.gz} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.css → change-password-dialog-BRmvkNir.css} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.css.br → change-password-dialog-BRmvkNir.css.br} +0 -0
- /codex/static_root/assets/{change-password-dialog-UZr5DYqw.css.gz → change-password-dialog-BRmvkNir.css.gz} +0 -0
- /codex/static_root/assets/{confirm-dialog-ZoXnSwsX.7c2103d319d4.css → confirm-dialog-BmhedLCx.7c2103d319d4.css} +0 -0
- /codex/static_root/assets/{confirm-dialog-ZoXnSwsX.css → confirm-dialog-BmhedLCx.css} +0 -0
- /codex/static_root/assets/{datetime-column-Vln78oZ2.a4a94ba57c73.css → datetime-column-BWWfvyhn.a4a94ba57c73.css} +0 -0
- /codex/static_root/assets/{datetime-column-Vln78oZ2.a4a94ba57c73.css.br → datetime-column-BWWfvyhn.a4a94ba57c73.css.br} +0 -0
- /codex/static_root/assets/{datetime-column-Vln78oZ2.css → datetime-column-BWWfvyhn.css} +0 -0
- /codex/static_root/assets/{datetime-column-Vln78oZ2.css.br → datetime-column-BWWfvyhn.css.br} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.6bf1e65123e6.css → flag-tab-huWPjDaW.6bf1e65123e6.css} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.6bf1e65123e6.css.br → flag-tab-huWPjDaW.6bf1e65123e6.css.br} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.6bf1e65123e6.css.gz → flag-tab-huWPjDaW.6bf1e65123e6.css.gz} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.css → flag-tab-huWPjDaW.css} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.css.br → flag-tab-huWPjDaW.css.br} +0 -0
- /codex/static_root/assets/{flag-tab-Iblj4w2l.css.gz → flag-tab-huWPjDaW.css.gz} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.5fc2cfa31669.css → group-tab-3DXxSetf.5fc2cfa31669.css} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.5fc2cfa31669.css.br → group-tab-3DXxSetf.5fc2cfa31669.css.br} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.5fc2cfa31669.css.gz → group-tab-3DXxSetf.5fc2cfa31669.css.gz} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.css → group-tab-3DXxSetf.css} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.css.br → group-tab-3DXxSetf.css.br} +0 -0
- /codex/static_root/assets/{group-tab-Nw18UnrX.css.gz → group-tab-3DXxSetf.css.gz} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.1c7337ad6e1d.css → http-error-C25WdjWC.1c7337ad6e1d.css} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.1c7337ad6e1d.css.br → http-error-C25WdjWC.1c7337ad6e1d.css.br} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.1c7337ad6e1d.css.gz → http-error-C25WdjWC.1c7337ad6e1d.css.gz} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.css → http-error-C25WdjWC.css} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.css.br → http-error-C25WdjWC.css.br} +0 -0
- /codex/static_root/assets/{http-error-tuVnY1gp.css.gz → http-error-C25WdjWC.css.gz} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.36d50c91b2c1.js → index-DUjeNg4x.36d50c91b2c1.js} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.36d50c91b2c1.js.br → index-DUjeNg4x.36d50c91b2c1.js.br} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.36d50c91b2c1.js.gz → index-DUjeNg4x.36d50c91b2c1.js.gz} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.js → index-DUjeNg4x.js} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.js.br → index-DUjeNg4x.js.br} +0 -0
- /codex/static_root/assets/{index-RrPhDVxT.js.gz → index-DUjeNg4x.js.gz} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.c8123e4bc5a4.css → library-tab-DZKDtQ5v.c8123e4bc5a4.css} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.c8123e4bc5a4.css.br → library-tab-DZKDtQ5v.c8123e4bc5a4.css.br} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.c8123e4bc5a4.css.gz → library-tab-DZKDtQ5v.c8123e4bc5a4.css.gz} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.css → library-tab-DZKDtQ5v.css} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.css.br → library-tab-DZKDtQ5v.css.br} +0 -0
- /codex/static_root/assets/{library-tab-2Sg7UOb_.css.gz → library-tab-DZKDtQ5v.css.gz} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.6e435534bd35.ttf → materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.6e435534bd35.ttf.br → materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf.br} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.6e435534bd35.ttf.gz → materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf.gz} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.ttf → materialdesignicons-webfont-B7mPwVP_.ttf} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.ttf.br → materialdesignicons-webfont-B7mPwVP_.ttf.br} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-e5j8FT_3.ttf.gz → materialdesignicons-webfont-B7mPwVP_.ttf.gz} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.8ced95a05e3c.eot → materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.8ced95a05e3c.eot.br → materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot.br} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.8ced95a05e3c.eot.gz → materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot.gz} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.eot → materialdesignicons-webfont-CSr8KVlo.eot} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.eot.br → materialdesignicons-webfont-CSr8KVlo.eot.br} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-kq_ClZaA.eot.gz → materialdesignicons-webfont-CSr8KVlo.eot.gz} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-6eb_lmTU.1d7bcee1b302.woff2 → materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-6eb_lmTU.woff2 → materialdesignicons-webfont-Dp5v-WZN.woff2} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-D15t_tsC.026b7ac9c43c.woff → materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff} +0 -0
- /codex/static_root/assets/{materialdesignicons-webfont-D15t_tsC.woff → materialdesignicons-webfont-PXm3-2wK.woff} +0 -0
- {codex-1.5.0a1.dist-info → codex-1.5.0a3.dist-info}/LICENSE +0 -0
- {codex-1.5.0a1.dist-info → codex-1.5.0a3.dist-info}/entry_points.txt +0 -0
codex/__init__.py
CHANGED
codex/_vendor/haystack/apps.py
CHANGED
|
@@ -6,9 +6,8 @@ from django.conf import settings
|
|
|
6
6
|
from ..haystack import connection_router, connections
|
|
7
7
|
from ..haystack.utils import loading
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
class HaystackConfig(AppConfig):
|
|
11
|
-
name = "
|
|
10
|
+
name = loading.VENDOR_PREFIX + "haystack"
|
|
12
11
|
signal_processor = None
|
|
13
12
|
stream = None
|
|
14
13
|
|
|
@@ -24,7 +23,7 @@ class HaystackConfig(AppConfig):
|
|
|
24
23
|
signal_processor_path = getattr(
|
|
25
24
|
settings,
|
|
26
25
|
"HAYSTACK_SIGNAL_PROCESSOR",
|
|
27
|
-
"
|
|
26
|
+
loading.VENDOR_PREFIX + "haystack.signals.BaseSignalProcessor",
|
|
28
27
|
)
|
|
29
28
|
signal_processor_class = loading.import_class(signal_processor_path)
|
|
30
29
|
self.signal_processor = signal_processor_class(
|
|
@@ -13,8 +13,11 @@ from ...haystack.exceptions import NotHandled, SearchFieldError
|
|
|
13
13
|
from ...haystack.utils import importlib
|
|
14
14
|
from ...haystack.utils.app_loading import haystack_get_app_modules
|
|
15
15
|
|
|
16
|
+
VENDOR_PREFIX = "codex._vendor."
|
|
16
17
|
|
|
17
18
|
def import_class(path):
|
|
19
|
+
if path.startswith("haystack"):
|
|
20
|
+
path = VENDOR_PREFIX + path
|
|
18
21
|
path_bits = path.split(".")
|
|
19
22
|
# Cut off the class name at the end.
|
|
20
23
|
class_name = path_bits.pop()
|
codex/applications/lifespan.py
CHANGED
codex/applications/websocket.py
CHANGED
codex/asgi.py
CHANGED
|
@@ -5,6 +5,7 @@ It exposes the ASGI callable as a module-level variable named ``DJANGO_APPLICATI
|
|
|
5
5
|
For more information on this file, see
|
|
6
6
|
https://docs.djangoproject.com/en/dev/howto/deployment/asgi/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from channels.routing import ProtocolTypeRouter
|
|
9
10
|
from django.core.asgi import get_asgi_application
|
|
10
11
|
|
codex/db_functions.py
CHANGED
codex/exceptions.py
CHANGED
codex/integrity.py
CHANGED
codex/librarian/covers/coverd.py
CHANGED
codex/librarian/covers/create.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Create comic cover paths."""
|
|
2
|
+
|
|
2
3
|
from io import BytesIO
|
|
3
4
|
from time import time
|
|
4
5
|
|
|
@@ -75,7 +76,7 @@ class CoverCreateMixin(CoverPathMixin):
|
|
|
75
76
|
if data:
|
|
76
77
|
with cover_path.open("wb") as cover_file:
|
|
77
78
|
cover_file.write(data)
|
|
78
|
-
|
|
79
|
+
elif not cover_path.exists():
|
|
79
80
|
cover_path.symlink_to(self.MISSING_COVER_PATH)
|
|
80
81
|
|
|
81
82
|
def _bulk_create_comic_covers(self, comic_pks):
|
codex/librarian/covers/path.py
CHANGED
codex/librarian/covers/purge.py
CHANGED
codex/librarian/covers/status.py
CHANGED
codex/librarian/covers/tasks.py
CHANGED
codex/librarian/delayed_taskd.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Bulk update and create comic objects and bulk update m2m fields."""
|
|
2
|
+
|
|
2
3
|
from codex.librarian.importer.const import BULK_UPDATE_COMIC_FIELDS
|
|
3
4
|
from codex.librarian.importer.link_comics import LinkComicsMixin
|
|
4
5
|
from codex.librarian.importer.status import ImportStatusTypes, status_notify
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Bulk update m2m fields."""
|
|
2
|
+
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
|
|
4
5
|
from django.db.models import Q
|
|
@@ -214,9 +215,7 @@ class LinkComicsMixin(QueuedThread):
|
|
|
214
215
|
unique_fields=update_fields,
|
|
215
216
|
)
|
|
216
217
|
if created_count := len(tms):
|
|
217
|
-
self.log.info(
|
|
218
|
-
f"Linked {created_count} new {field_name}s to altered comics."
|
|
219
|
-
)
|
|
218
|
+
self.log.info(f"Linked {created_count} new {field_name} to altered comics.")
|
|
220
219
|
if status:
|
|
221
220
|
status.complete = status.complete or 0
|
|
222
221
|
status.complete += created_count
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Bulk import and move comics and folders."""
|
|
2
|
+
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
|
|
4
5
|
from django.db.models.functions import Now
|
|
@@ -41,27 +42,25 @@ class MovedMixin(CreateComicsMixin, CreateForeignKeysMixin, QueryForeignKeysMixi
|
|
|
41
42
|
|
|
42
43
|
folder_m2m_links = {}
|
|
43
44
|
now = Now()
|
|
44
|
-
|
|
45
|
+
updated_comics = []
|
|
45
46
|
for comic in comics.iterator():
|
|
46
47
|
try:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
path=new_path.parent
|
|
54
|
-
)
|
|
48
|
+
new_path = moved_paths[comic.path]
|
|
49
|
+
comic.path = new_path
|
|
50
|
+
new_path = Path(new_path)
|
|
51
|
+
comic.parent_folder = Folder.objects.get( # type: ignore
|
|
52
|
+
path=new_path.parent
|
|
53
|
+
)
|
|
55
54
|
comic.updated_at = now
|
|
56
55
|
comic.set_stat()
|
|
57
56
|
folder_m2m_links[comic.pk] = Folder.objects.filter(
|
|
58
57
|
path__in=new_path.parents
|
|
59
58
|
).values_list("pk", flat=True)
|
|
60
|
-
|
|
59
|
+
updated_comics.append(comic)
|
|
61
60
|
except Exception:
|
|
62
61
|
self.log.exception(f"moving {comic.path}")
|
|
63
62
|
|
|
64
|
-
Comic.objects.bulk_update(
|
|
63
|
+
Comic.objects.bulk_update(updated_comics, _MOVED_BULK_COMIC_UPDATE_FIELDS)
|
|
65
64
|
|
|
66
65
|
# Update m2m field
|
|
67
66
|
if folder_m2m_links:
|
|
@@ -78,9 +77,10 @@ class MovedMixin(CreateComicsMixin, CreateForeignKeysMixin, QueryForeignKeysMixi
|
|
|
78
77
|
dest_parent_folder_paths = set()
|
|
79
78
|
for dest_folder_path in dest_folder_paths:
|
|
80
79
|
dest_parent_path = str(Path(dest_folder_path).parent)
|
|
81
|
-
|
|
80
|
+
if dest_parent_path not in dest_folder_paths:
|
|
81
|
+
dest_parent_folder_paths.add(dest_parent_path)
|
|
82
82
|
|
|
83
|
-
# Create intermediate subfolders.
|
|
83
|
+
# Create only intermediate subfolders.
|
|
84
84
|
existing_folder_paths = Folder.objects.filter(
|
|
85
85
|
library=library, path__in=dest_parent_folder_paths
|
|
86
86
|
).values_list("path", flat=True)
|
|
@@ -111,11 +111,13 @@ class MovedMixin(CreateComicsMixin, CreateForeignKeysMixin, QueryForeignKeysMixi
|
|
|
111
111
|
)
|
|
112
112
|
|
|
113
113
|
src_folder_paths = frozenset(folders_moved.keys())
|
|
114
|
-
|
|
114
|
+
folders_to_move = Folder.objects.filter(
|
|
115
|
+
library=library, path__in=src_folder_paths
|
|
116
|
+
).order_by("path")
|
|
115
117
|
|
|
116
118
|
update_folders = []
|
|
117
119
|
now = Now()
|
|
118
|
-
for folder in
|
|
120
|
+
for folder in folders_to_move.iterator():
|
|
119
121
|
new_path = folders_moved[folder.path]
|
|
120
122
|
folder.name = Path(new_path).name
|
|
121
123
|
folder.path = new_path
|
codex/librarian/janitor/tasks.py
CHANGED
codex/librarian/librariand.py
CHANGED
codex/librarian/mp_queue.py
CHANGED
codex/librarian/search/merge.py
CHANGED
codex/librarian/search/remove.py
CHANGED
codex/librarian/search/status.py
CHANGED
codex/librarian/search/tasks.py
CHANGED
codex/librarian/search/update.py
CHANGED
codex/librarian/tasks.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""A Codex database event emitter for use by the observer."""
|
|
2
|
+
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
from threading import Condition
|
|
4
5
|
|
|
@@ -24,6 +25,20 @@ from codex.models import Library
|
|
|
24
25
|
from codex.status import Status
|
|
25
26
|
from codex.worker_base import WorkerBaseMixin
|
|
26
27
|
|
|
28
|
+
_CODEX_EVENT_FILTER = frozenset(
|
|
29
|
+
{
|
|
30
|
+
FileMovedEvent,
|
|
31
|
+
FileModifiedEvent,
|
|
32
|
+
FileCreatedEvent,
|
|
33
|
+
FileDeletedEvent,
|
|
34
|
+
# FileClosedEvent,
|
|
35
|
+
# FileOpenedEvent,
|
|
36
|
+
DirMovedEvent,
|
|
37
|
+
DirModifiedEvent,
|
|
38
|
+
DirDeletedEvent,
|
|
39
|
+
# DirCreatedEvent,
|
|
40
|
+
}
|
|
41
|
+
)
|
|
27
42
|
_DOCKER_UNMOUNTED_FN = "DOCKER_UNMOUNTED_VOLUME"
|
|
28
43
|
|
|
29
44
|
|
|
@@ -46,7 +61,9 @@ class DatabasePollingEmitter(EventEmitter, WorkerBaseMixin):
|
|
|
46
61
|
self._force = False
|
|
47
62
|
self._watch_path = Path(watch.path)
|
|
48
63
|
self._watch_path_unmounted = self._watch_path / _DOCKER_UNMOUNTED_FN
|
|
49
|
-
super().__init__(
|
|
64
|
+
super().__init__(
|
|
65
|
+
event_queue, watch, timeout=timeout, event_filter=_CODEX_EVENT_FILTER
|
|
66
|
+
)
|
|
50
67
|
|
|
51
68
|
self._take_dir_snapshot = lambda: DirectorySnapshot(
|
|
52
69
|
self._watch.path,
|
|
@@ -5,6 +5,7 @@ but the built-in filesystem event emitters serialize them, so the most
|
|
|
5
5
|
consistent thing is for the DBEmitter to serialize them in the same way
|
|
6
6
|
and then re-serialize everything in this batcher and the event Handler
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from contextlib import suppress
|
|
9
10
|
from copy import deepcopy
|
|
10
11
|
from types import MappingProxyType
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""The Codex Library Watchdog Observer threads."""
|
|
2
|
+
|
|
2
3
|
from watchdog.observers import Observer
|
|
3
4
|
from watchdog.observers.api import (
|
|
4
5
|
DEFAULT_OBSERVER_TIMEOUT,
|
|
@@ -89,7 +90,13 @@ class UatuMixin(BaseObserver, WorkerBaseMixin):
|
|
|
89
90
|
except Exception:
|
|
90
91
|
self.log.exception(f"{self.__class__.__name__} sync library watches")
|
|
91
92
|
|
|
92
|
-
def schedule(
|
|
93
|
+
def schedule( # type: ignore
|
|
94
|
+
self,
|
|
95
|
+
event_handler,
|
|
96
|
+
path,
|
|
97
|
+
recursive=False,
|
|
98
|
+
_event_filter=None,
|
|
99
|
+
):
|
|
93
100
|
"""Override BaseObserver for Codex emitter class.
|
|
94
101
|
|
|
95
102
|
https://pythonhosted.org/watchdog/_modules/watchdog/observers/api.html#BaseObserver
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Logging Color Formatter."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from types import MappingProxyType
|
|
5
|
+
|
|
6
|
+
from colors import color
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ColorFormatter(logging.Formatter):
|
|
10
|
+
"""Logging Formatter to add colors and count warning / errors."""
|
|
11
|
+
|
|
12
|
+
FORMAT_COLORS = MappingProxyType(
|
|
13
|
+
{
|
|
14
|
+
"CRITICAL": {"fg": "red", "style": "bold"},
|
|
15
|
+
"ERROR": {"fg": "red"},
|
|
16
|
+
"WARNING": {"fg": "yellow"},
|
|
17
|
+
"INFO": {"fg": "green"},
|
|
18
|
+
"DEBUG": {"fg": "black", "style": "bold"},
|
|
19
|
+
"NOTSET": {"fg": "blue"},
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
def __init__(self, fmt, **kwargs):
|
|
24
|
+
"""Set up the FORMATS dict."""
|
|
25
|
+
super().__init__(**kwargs)
|
|
26
|
+
self.formatters = {}
|
|
27
|
+
for level_name, args in self.FORMAT_COLORS.items():
|
|
28
|
+
levelno = getattr(logging, level_name)
|
|
29
|
+
template = color(fmt, **args)
|
|
30
|
+
formatter = logging.Formatter(fmt=template, **kwargs)
|
|
31
|
+
self.formatters[levelno] = formatter
|
|
32
|
+
|
|
33
|
+
def format(self, record):
|
|
34
|
+
"""Format each log message."""
|
|
35
|
+
formatter = self.formatters[record.levelno]
|
|
36
|
+
return formatter.format(record)
|
codex/logger/loggerd.py
CHANGED
|
@@ -1,43 +1,12 @@
|
|
|
1
1
|
"""Central Logging Thread."""
|
|
2
|
+
|
|
2
3
|
import logging
|
|
3
4
|
from logging.handlers import QueueListener, RotatingFileHandler
|
|
4
|
-
from types import MappingProxyType
|
|
5
|
-
|
|
6
|
-
from colors import color
|
|
7
5
|
|
|
6
|
+
from codex.logger.formatter import ColorFormatter
|
|
8
7
|
from codex.settings.settings import DEBUG, LOG_DIR, LOG_TO_CONSOLE, LOG_TO_FILE
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
class ColorFormatter(logging.Formatter):
|
|
12
|
-
"""Logging Formatter to add colors and count warning / errors."""
|
|
13
|
-
|
|
14
|
-
FORMAT_COLORS = MappingProxyType(
|
|
15
|
-
{
|
|
16
|
-
"CRITICAL": {"fg": "red", "style": "bold"},
|
|
17
|
-
"ERROR": {"fg": "red"},
|
|
18
|
-
"WARNING": {"fg": "yellow"},
|
|
19
|
-
"INFO": {"fg": "green"},
|
|
20
|
-
"DEBUG": {"fg": "black", "style": "bold"},
|
|
21
|
-
"NOTSET": {"fg": "blue"},
|
|
22
|
-
}
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
def __init__(self, fmt, **kwargs):
|
|
26
|
-
"""Set up the FORMATS dict."""
|
|
27
|
-
super().__init__(**kwargs)
|
|
28
|
-
self.formatters = {}
|
|
29
|
-
for level_name, args in self.FORMAT_COLORS.items():
|
|
30
|
-
levelno = getattr(logging, level_name)
|
|
31
|
-
template = color(fmt, **args)
|
|
32
|
-
formatter = logging.Formatter(fmt=template, **kwargs)
|
|
33
|
-
self.formatters[levelno] = formatter
|
|
34
|
-
|
|
35
|
-
def format(self, record):
|
|
36
|
-
"""Format each log message."""
|
|
37
|
-
formatter = self.formatters[record.levelno]
|
|
38
|
-
return formatter.format(record)
|
|
39
|
-
|
|
40
|
-
|
|
41
10
|
class CodexLogQueueListener(QueueListener):
|
|
42
11
|
"""Host for logging queue listener."""
|
|
43
12
|
|