codex 1.7.3__py3-none-any.whl → 1.7.3a1__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/asgi.py +1 -2
- codex/choices.py +6 -3
- codex/choices_to_json.py +8 -8
- codex/db.py +2 -2
- codex/exceptions.py +6 -5
- codex/librarian/bookmark/bookmarkd.py +4 -8
- codex/librarian/bookmark/update.py +2 -2
- codex/librarian/covers/create.py +8 -10
- codex/librarian/covers/path.py +5 -6
- codex/librarian/covers/purge.py +2 -2
- codex/librarian/importer/aggregate.py +2 -2
- codex/librarian/importer/cache.py +4 -1
- codex/librarian/importer/create_comics.py +2 -2
- codex/librarian/importer/create_covers.py +1 -1
- codex/librarian/importer/create_fks.py +3 -4
- codex/librarian/importer/deleted.py +3 -3
- codex/librarian/importer/extract.py +2 -2
- codex/librarian/importer/failed_imports.py +1 -1
- codex/librarian/importer/importer.py +1 -3
- codex/librarian/importer/importerd.py +3 -3
- codex/librarian/importer/link_comics.py +1 -2
- codex/librarian/importer/moved.py +7 -2
- codex/librarian/importer/query_fks.py +4 -1
- codex/librarian/importer/tasks.py +1 -1
- codex/librarian/janitor/integrity.py +20 -27
- codex/librarian/janitor/janitor.py +1 -1
- codex/librarian/janitor/latest_version.py +1 -1
- codex/librarian/janitor/update.py +2 -2
- codex/librarian/janitor/vacuum.py +1 -1
- codex/librarian/librariand.py +2 -3
- codex/librarian/notifier/notifierd.py +1 -2
- codex/librarian/search/optimize.py +1 -1
- codex/librarian/search/remove.py +1 -1
- codex/librarian/search/update.py +3 -3
- codex/librarian/telemeter/stats.py +6 -7
- codex/librarian/telemeter/telemeter.py +1 -0
- codex/librarian/watchdog/db_snapshot.py +3 -3
- codex/librarian/watchdog/dir_snapshot_diff.py +4 -3
- codex/librarian/watchdog/emitter.py +4 -4
- codex/librarian/watchdog/event_batcherd.py +1 -2
- codex/librarian/watchdog/events.py +2 -1
- codex/librarian/watchdog/observers.py +10 -15
- codex/logger/logging.py +1 -1
- codex/memory.py +2 -3
- codex/migrations/0001_init.py +2 -1
- codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +2 -1
- codex/migrations/0018_rename_userbookmark_bookmark.py +2 -1
- codex/migrations/0028_telemeter.py +5 -1
- codex/migrations/0031_adminflag_banner.py +1 -1
- codex/models/admin.py +1 -1
- codex/models/base.py +1 -3
- codex/models/bookmark.py +7 -4
- codex/models/comic.py +2 -2
- codex/models/functions.py +5 -12
- codex/models/groups.py +1 -1
- codex/models/library.py +1 -1
- codex/models/paths.py +4 -4
- codex/models/query.py +4 -8
- codex/models/util.py +1 -1
- codex/permissions.py +1 -1
- codex/run.py +1 -1
- codex/serializers/admin/libraries.py +3 -1
- codex/serializers/browser/choices.py +2 -2
- codex/serializers/browser/mixins.py +1 -5
- codex/serializers/browser/settings.py +2 -2
- codex/serializers/fields.py +7 -7
- codex/serializers/models/base.py +1 -1
- codex/serializers/models/comic.py +2 -2
- codex/serializers/models/groups.py +2 -0
- codex/serializers/opds/authentication.py +1 -2
- codex/serializers/opds/v2/feed.py +1 -2
- codex/serializers/opds/v2/links.py +12 -14
- codex/serializers/opds/v2/metadata.py +1 -2
- codex/serializers/opds/v2/progression.py +2 -4
- codex/serializers/opds/v2/publication.py +11 -14
- codex/serializers/opds/v2/unused.py +8 -15
- codex/serializers/route.py +2 -2
- codex/settings/settings.py +3 -4
- codex/signals/django_signals.py +1 -1
- codex/static_root/assets/{VCheckbox-Dv6fwaDb.56abbfb00c8a.js → VCheckbox-BV02IXFk.7b1ac0cc0c68.js} +1 -1
- codex/static_root/assets/VCheckbox-BV02IXFk.7b1ac0cc0c68.js.br +0 -0
- codex/static_root/assets/VCheckbox-BV02IXFk.7b1ac0cc0c68.js.gz +0 -0
- codex/static_root/assets/{VCheckbox-Dv6fwaDb.js → VCheckbox-BV02IXFk.js} +1 -1
- codex/static_root/assets/VCheckbox-BV02IXFk.js.br +0 -0
- codex/static_root/assets/VCheckbox-BV02IXFk.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-CNMFahfF.4ee9778a562e.js → VCheckboxBtn-DRCMElDO.e3bc3b165786.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-DRCMElDO.e3bc3b165786.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DRCMElDO.e3bc3b165786.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-CNMFahfF.js → VCheckboxBtn-DRCMElDO.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-DRCMElDO.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DRCMElDO.js.gz +0 -0
- codex/static_root/assets/{VCombobox-DqBFki-9.2806f95c938d.js → VCombobox-BUzWpAvZ.ec97d55d18d6.js} +1 -1
- codex/static_root/assets/VCombobox-BUzWpAvZ.ec97d55d18d6.js.br +0 -0
- codex/static_root/assets/VCombobox-BUzWpAvZ.ec97d55d18d6.js.gz +0 -0
- codex/static_root/assets/{VCombobox-DqBFki-9.js → VCombobox-BUzWpAvZ.js} +1 -1
- codex/static_root/assets/VCombobox-BUzWpAvZ.js.br +0 -0
- codex/static_root/assets/VCombobox-BUzWpAvZ.js.gz +0 -0
- codex/static_root/assets/{VDialog-CQXjBvDZ.1a576c5e472f.js → VDialog-CvyPs47z.06bd89160727.js} +1 -1
- codex/static_root/assets/VDialog-CvyPs47z.06bd89160727.js.br +0 -0
- codex/static_root/assets/VDialog-CvyPs47z.06bd89160727.js.gz +0 -0
- codex/static_root/assets/{VDialog-CQXjBvDZ.js → VDialog-CvyPs47z.js} +1 -1
- codex/static_root/assets/VDialog-CvyPs47z.js.br +0 -0
- codex/static_root/assets/VDialog-CvyPs47z.js.gz +0 -0
- codex/static_root/assets/{VDivider-DUxQu-IZ.73d92ae2a07e.js → VDivider-DxA4gr8D.a62a378b1691.js} +1 -1
- codex/static_root/assets/VDivider-DxA4gr8D.a62a378b1691.js.br +0 -0
- codex/static_root/assets/VDivider-DxA4gr8D.a62a378b1691.js.gz +0 -0
- codex/static_root/assets/{VDivider-DUxQu-IZ.js → VDivider-DxA4gr8D.js} +1 -1
- codex/static_root/assets/VDivider-DxA4gr8D.js.br +0 -0
- codex/static_root/assets/VDivider-DxA4gr8D.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-BaYzHUJp.5346826103eb.js → VExpansionPanels-_Hd_Icpj.4670cf36fda0.js} +1 -1
- codex/static_root/assets/VExpansionPanels-_Hd_Icpj.4670cf36fda0.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-_Hd_Icpj.4670cf36fda0.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-BaYzHUJp.js → VExpansionPanels-_Hd_Icpj.js} +1 -1
- codex/static_root/assets/VExpansionPanels-_Hd_Icpj.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-_Hd_Icpj.js.gz +0 -0
- codex/static_root/assets/{VForm-hB4C5jVd.a2b90ddcd8ee.js → VForm-B4doHkrL.1f48583f2de6.js} +1 -1
- codex/static_root/assets/VForm-B4doHkrL.1f48583f2de6.js.br +0 -0
- codex/static_root/assets/VForm-B4doHkrL.1f48583f2de6.js.gz +0 -0
- codex/static_root/assets/{VForm-hB4C5jVd.js → VForm-B4doHkrL.js} +1 -1
- codex/static_root/assets/VForm-B4doHkrL.js.br +0 -0
- codex/static_root/assets/VForm-B4doHkrL.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-DOjw38qB.cbf2922d05af.js → VRadioGroup-DT7JWkoW.28cd429e5a15.js} +1 -1
- codex/static_root/assets/VRadioGroup-DT7JWkoW.28cd429e5a15.js.br +0 -0
- codex/static_root/assets/VRadioGroup-DT7JWkoW.28cd429e5a15.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-DOjw38qB.js → VRadioGroup-DT7JWkoW.js} +1 -1
- codex/static_root/assets/VRadioGroup-DT7JWkoW.js.br +0 -0
- codex/static_root/assets/VRadioGroup-DT7JWkoW.js.gz +0 -0
- codex/static_root/assets/{VSelect-L4v_m3ag.db9fb8348617.js → VSelect-DtYhH7Mk.67eae5723992.js} +1 -1
- codex/static_root/assets/VSelect-DtYhH7Mk.67eae5723992.js.br +0 -0
- codex/static_root/assets/VSelect-DtYhH7Mk.67eae5723992.js.gz +0 -0
- codex/static_root/assets/{VSelect-L4v_m3ag.js → VSelect-DtYhH7Mk.js} +1 -1
- codex/static_root/assets/VSelect-DtYhH7Mk.js.br +0 -0
- codex/static_root/assets/VSelect-DtYhH7Mk.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-BqB1JeKa.2fb68a673402.js → VSelectionControl-BJm6ORIw.efe501dcf742.js} +1 -1
- codex/static_root/assets/VSelectionControl-BJm6ORIw.efe501dcf742.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BJm6ORIw.efe501dcf742.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-BqB1JeKa.js → VSelectionControl-BJm6ORIw.js} +1 -1
- codex/static_root/assets/VSelectionControl-BJm6ORIw.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BJm6ORIw.js.gz +0 -0
- codex/static_root/assets/{VTable-CtorAbOx.bbda450cbd73.js → VTable-Bpr_wGHh.65e8b5288ad7.js} +1 -1
- codex/static_root/assets/VTable-Bpr_wGHh.65e8b5288ad7.js.br +0 -0
- codex/static_root/assets/VTable-Bpr_wGHh.65e8b5288ad7.js.gz +0 -0
- codex/static_root/assets/{VTable-CtorAbOx.js → VTable-Bpr_wGHh.js} +1 -1
- codex/static_root/assets/VTable-Bpr_wGHh.js.br +0 -0
- codex/static_root/assets/VTable-Bpr_wGHh.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-Bl-fa3ss.334e6b813775.js → VWindowItem-C1nqmRqv.aa75e27fc15e.js} +1 -1
- codex/static_root/assets/VWindowItem-C1nqmRqv.aa75e27fc15e.js.br +0 -0
- codex/static_root/assets/VWindowItem-C1nqmRqv.aa75e27fc15e.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-Bl-fa3ss.js → VWindowItem-C1nqmRqv.js} +1 -1
- codex/static_root/assets/VWindowItem-C1nqmRqv.js.br +0 -0
- codex/static_root/assets/VWindowItem-C1nqmRqv.js.gz +0 -0
- codex/static_root/assets/{admin-CHuFhx_t.a54700f97fc8.js → admin-BYCwfr2h.581e490b1ec8.js} +1 -1
- codex/static_root/assets/admin-BYCwfr2h.581e490b1ec8.js.br +0 -0
- codex/static_root/assets/admin-BYCwfr2h.581e490b1ec8.js.gz +0 -0
- codex/static_root/assets/{admin-CHuFhx_t.js → admin-BYCwfr2h.js} +1 -1
- codex/static_root/assets/admin-BYCwfr2h.js.br +0 -0
- codex/static_root/assets/admin-BYCwfr2h.js.gz +0 -0
- codex/static_root/assets/{admin-BAVKNREt.23c0966bd683.js → admin-Do4UwPej.6beffbe88dd0.js} +1 -1
- codex/static_root/assets/admin-Do4UwPej.6beffbe88dd0.js.br +0 -0
- codex/static_root/assets/admin-Do4UwPej.6beffbe88dd0.js.gz +0 -0
- codex/static_root/assets/{admin-BAVKNREt.js → admin-Do4UwPej.js} +1 -1
- codex/static_root/assets/admin-Do4UwPej.js.br +0 -0
- codex/static_root/assets/admin-Do4UwPej.js.gz +0 -0
- codex/static_root/assets/{admin-menu-T8WJ_x0C.4f011540bb4c.js → admin-menu-DyaS3ZkH.34c055460f79.js} +1 -1
- codex/static_root/assets/admin-menu-DyaS3ZkH.34c055460f79.js.br +0 -0
- codex/static_root/assets/admin-menu-DyaS3ZkH.34c055460f79.js.gz +0 -0
- codex/static_root/assets/{admin-menu-T8WJ_x0C.js → admin-menu-DyaS3ZkH.js} +1 -1
- codex/static_root/assets/admin-menu-DyaS3ZkH.js.br +0 -0
- codex/static_root/assets/admin-menu-DyaS3ZkH.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-w_CqTSMl.7b36216f68b5.js → admin-settings-button-progress-BKp0yruZ.550d96596ce5.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-BKp0yruZ.550d96596ce5.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-BKp0yruZ.550d96596ce5.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-w_CqTSMl.js → admin-settings-button-progress-BKp0yruZ.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-BKp0yruZ.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-BKp0yruZ.js.gz +0 -0
- codex/static_root/assets/browser-BcXpHHP5.ef6076284520.js +1 -0
- codex/static_root/assets/browser-BcXpHHP5.ef6076284520.js.br +0 -0
- codex/static_root/assets/browser-BcXpHHP5.ef6076284520.js.gz +0 -0
- codex/static_root/assets/browser-BcXpHHP5.js +1 -0
- codex/static_root/assets/browser-BcXpHHP5.js.br +0 -0
- codex/static_root/assets/browser-BcXpHHP5.js.gz +0 -0
- codex/static_root/assets/{browser-DNzQvgkY.aea8b7d7ca40.css → browser-CReWGhn_.521193ab0710.css} +1 -1
- codex/static_root/assets/browser-CReWGhn_.521193ab0710.css.br +0 -0
- codex/static_root/assets/browser-CReWGhn_.521193ab0710.css.gz +0 -0
- codex/static_root/assets/{browser-DNzQvgkY.css → browser-CReWGhn_.css} +1 -1
- codex/static_root/assets/browser-CReWGhn_.css.br +0 -0
- codex/static_root/assets/browser-CReWGhn_.css.gz +0 -0
- codex/static_root/assets/{change-password-dialog-Cy1tU-tj.416ef5bdfd46.js → change-password-dialog-DB0tGBYA.8712454eb2b5.js} +1 -1
- codex/static_root/assets/change-password-dialog-DB0tGBYA.8712454eb2b5.js.br +0 -0
- codex/static_root/assets/change-password-dialog-DB0tGBYA.8712454eb2b5.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-Cy1tU-tj.js → change-password-dialog-DB0tGBYA.js} +1 -1
- codex/static_root/assets/change-password-dialog-DB0tGBYA.js.br +0 -0
- codex/static_root/assets/change-password-dialog-DB0tGBYA.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-B_Y3KKiL.1070d18f6b2d.js → confirm-dialog-CUfR1UVh.d59ed57fbf3c.js} +1 -1
- codex/static_root/assets/confirm-dialog-CUfR1UVh.d59ed57fbf3c.js.br +0 -0
- codex/static_root/assets/confirm-dialog-CUfR1UVh.d59ed57fbf3c.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-B_Y3KKiL.js → confirm-dialog-CUfR1UVh.js} +1 -1
- codex/static_root/assets/confirm-dialog-CUfR1UVh.js.br +0 -0
- codex/static_root/assets/confirm-dialog-CUfR1UVh.js.gz +0 -0
- codex/static_root/assets/{datetime-column-DVC0YqHC.03bb52c198e9.js → datetime-column-DWwCltHX.be3a30e165e2.js} +1 -1
- codex/static_root/assets/datetime-column-DWwCltHX.be3a30e165e2.js.br +2 -0
- codex/static_root/assets/datetime-column-DWwCltHX.be3a30e165e2.js.gz +0 -0
- codex/static_root/assets/{datetime-column-DVC0YqHC.js → datetime-column-DWwCltHX.js} +1 -1
- codex/static_root/assets/datetime-column-DWwCltHX.js.br +2 -0
- codex/static_root/assets/datetime-column-DWwCltHX.js.gz +0 -0
- codex/static_root/assets/{filter-xcEcgcIx.be1bb4725c89.js → filter-DUzmOcWQ.62e2578018fc.js} +1 -1
- codex/static_root/assets/filter-DUzmOcWQ.62e2578018fc.js.br +0 -0
- codex/static_root/assets/filter-DUzmOcWQ.62e2578018fc.js.gz +0 -0
- codex/static_root/assets/{filter-xcEcgcIx.js → filter-DUzmOcWQ.js} +1 -1
- codex/static_root/assets/filter-DUzmOcWQ.js.br +0 -0
- codex/static_root/assets/filter-DUzmOcWQ.js.gz +0 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.2b7ef394b850.css +1 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.2b7ef394b850.css.br +0 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.2b7ef394b850.css.gz +0 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.css +1 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.css.br +0 -0
- codex/static_root/assets/flag-tab-DHGfv0Q3.css.gz +0 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.35d270069e4f.js +1 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.35d270069e4f.js.br +0 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.35d270069e4f.js.gz +0 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.js +1 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.js.br +0 -0
- codex/static_root/assets/flag-tab-DI0mJlXh.js.gz +0 -0
- codex/static_root/assets/{forwardRefs-D1ZDjzWx.96fccf773093.js → forwardRefs-hLICxMEm.fd43ec456950.js} +1 -1
- codex/static_root/assets/forwardRefs-hLICxMEm.fd43ec456950.js.br +0 -0
- codex/static_root/assets/forwardRefs-hLICxMEm.fd43ec456950.js.gz +0 -0
- codex/static_root/assets/{forwardRefs-D1ZDjzWx.js → forwardRefs-hLICxMEm.js} +1 -1
- codex/static_root/assets/forwardRefs-hLICxMEm.js.br +0 -0
- codex/static_root/assets/forwardRefs-hLICxMEm.js.gz +0 -0
- codex/static_root/assets/{group-tab-DkAIGL8z.527cad03c21d.js → group-tab-Ch6sd19Y.15f92ebc959d.js} +1 -1
- codex/static_root/assets/group-tab-Ch6sd19Y.15f92ebc959d.js.br +0 -0
- codex/static_root/assets/group-tab-Ch6sd19Y.15f92ebc959d.js.gz +0 -0
- codex/static_root/assets/{group-tab-DkAIGL8z.js → group-tab-Ch6sd19Y.js} +1 -1
- codex/static_root/assets/group-tab-Ch6sd19Y.js.br +0 -0
- codex/static_root/assets/group-tab-Ch6sd19Y.js.gz +0 -0
- codex/static_root/assets/{http-error-CjSb8orc.ad6fc5733ed8.js → http-error-BQoj78jv.fc5280352b17.js} +1 -1
- codex/static_root/assets/http-error-BQoj78jv.fc5280352b17.js.br +0 -0
- codex/static_root/assets/http-error-BQoj78jv.fc5280352b17.js.gz +0 -0
- codex/static_root/assets/{http-error-CjSb8orc.js → http-error-BQoj78jv.js} +1 -1
- codex/static_root/assets/http-error-BQoj78jv.js.br +0 -0
- codex/static_root/assets/http-error-BQoj78jv.js.gz +0 -0
- codex/static_root/assets/{index-CoFXW6I0.27f397e1425e.js → index-DtVx0ej4.9ca3e3d32eb8.js} +1 -1
- codex/static_root/assets/index-DtVx0ej4.9ca3e3d32eb8.js.br +0 -0
- codex/static_root/assets/index-DtVx0ej4.9ca3e3d32eb8.js.gz +0 -0
- codex/static_root/assets/{index-CoFXW6I0.js → index-DtVx0ej4.js} +1 -1
- codex/static_root/assets/index-DtVx0ej4.js.br +0 -0
- codex/static_root/assets/index-DtVx0ej4.js.gz +0 -0
- codex/static_root/assets/{library-tab-hkMMBz1x.02270491d822.js → library-tab-DEvrF6PF.c7a68c22664c.js} +1 -1
- codex/static_root/assets/library-tab-DEvrF6PF.c7a68c22664c.js.br +0 -0
- codex/static_root/assets/library-tab-DEvrF6PF.c7a68c22664c.js.gz +0 -0
- codex/static_root/assets/{library-tab-hkMMBz1x.js → library-tab-DEvrF6PF.js} +1 -1
- codex/static_root/assets/library-tab-DEvrF6PF.js.br +0 -0
- codex/static_root/assets/library-tab-DEvrF6PF.js.gz +0 -0
- codex/static_root/assets/{main-DCaPxp2h.076707ddd123.js → main-DTplblFl.b8e4b708287f.js} +3 -3
- codex/static_root/assets/main-DTplblFl.b8e4b708287f.js.br +0 -0
- codex/static_root/assets/main-DTplblFl.b8e4b708287f.js.gz +0 -0
- codex/static_root/assets/{main-DCaPxp2h.js → main-DTplblFl.js} +3 -3
- codex/static_root/assets/main-DTplblFl.js.br +0 -0
- codex/static_root/assets/main-DTplblFl.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.627b621aa583.js +1 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.627b621aa583.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.627b621aa583.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.js +1 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-JIU1UvrN.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-DoqxSygU.f985bc705fe5.js → pagination-toolbar-DHVJWGeE.c70de5ca6915.js} +1 -1
- codex/static_root/assets/pagination-toolbar-DHVJWGeE.c70de5ca6915.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-DHVJWGeE.c70de5ca6915.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-DoqxSygU.js → pagination-toolbar-DHVJWGeE.js} +1 -1
- codex/static_root/assets/pagination-toolbar-DHVJWGeE.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-DHVJWGeE.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-BwxvAx1z.96cbc39c321d.js → pdf-doc-DjtoQWxA.2c9fd3017300.js} +1 -1
- codex/static_root/assets/pdf-doc-DjtoQWxA.2c9fd3017300.js.br +0 -0
- codex/static_root/assets/pdf-doc-DjtoQWxA.2c9fd3017300.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-BwxvAx1z.js → pdf-doc-DjtoQWxA.js} +1 -1
- codex/static_root/assets/pdf-doc-DjtoQWxA.js.br +0 -0
- codex/static_root/assets/pdf-doc-DjtoQWxA.js.gz +0 -0
- codex/static_root/assets/{reader-hHIonVbA.4c12219242a9.js → reader-DIjUh67D.061a8b501e35.js} +2 -2
- codex/static_root/assets/reader-DIjUh67D.061a8b501e35.js.br +0 -0
- codex/static_root/assets/reader-DIjUh67D.061a8b501e35.js.gz +0 -0
- codex/static_root/assets/{reader-hHIonVbA.js → reader-DIjUh67D.js} +2 -2
- codex/static_root/assets/reader-DIjUh67D.js.br +0 -0
- codex/static_root/assets/reader-DIjUh67D.js.gz +0 -0
- codex/static_root/assets/{relation-chips-D7-5kPem.4443b085aca2.js → relation-chips-ByFsclaN.2b9dc61299f6.js} +1 -1
- codex/static_root/assets/relation-chips-ByFsclaN.2b9dc61299f6.js.br +0 -0
- codex/static_root/assets/relation-chips-ByFsclaN.2b9dc61299f6.js.gz +0 -0
- codex/static_root/assets/{relation-chips-D7-5kPem.js → relation-chips-ByFsclaN.js} +1 -1
- codex/static_root/assets/relation-chips-ByFsclaN.js.br +0 -0
- codex/static_root/assets/relation-chips-ByFsclaN.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-CdFmOhnd.f7dcd12b3ebc.js → settings-drawer-DWa5PBWW.dee5ebeb24fe.js} +2 -2
- codex/static_root/assets/settings-drawer-DWa5PBWW.dee5ebeb24fe.js.br +0 -0
- codex/static_root/assets/settings-drawer-DWa5PBWW.dee5ebeb24fe.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-CdFmOhnd.js → settings-drawer-DWa5PBWW.js} +2 -2
- codex/static_root/assets/settings-drawer-DWa5PBWW.js.br +0 -0
- codex/static_root/assets/settings-drawer-DWa5PBWW.js.gz +0 -0
- codex/static_root/assets/{stats-tab-BzaipD0m.b6bf627ea860.js → stats-tab-B_i6PH1G.f11e0562b20d.js} +1 -1
- codex/static_root/assets/stats-tab-B_i6PH1G.f11e0562b20d.js.br +0 -0
- codex/static_root/assets/stats-tab-B_i6PH1G.f11e0562b20d.js.gz +0 -0
- codex/static_root/assets/{stats-tab-BzaipD0m.js → stats-tab-B_i6PH1G.js} +1 -1
- codex/static_root/assets/stats-tab-B_i6PH1G.js.br +0 -0
- codex/static_root/assets/stats-tab-B_i6PH1G.js.gz +0 -0
- codex/static_root/assets/{task-tab-DCnS1sM9.44d8435b4989.js → task-tab-DOEbnSf2.fe4907da1530.js} +1 -1
- codex/static_root/assets/task-tab-DOEbnSf2.fe4907da1530.js.br +0 -0
- codex/static_root/assets/task-tab-DOEbnSf2.fe4907da1530.js.gz +0 -0
- codex/static_root/assets/{task-tab-DCnS1sM9.js → task-tab-DOEbnSf2.js} +1 -1
- codex/static_root/assets/task-tab-DOEbnSf2.js.br +0 -0
- codex/static_root/assets/task-tab-DOEbnSf2.js.gz +0 -0
- codex/static_root/assets/{unauthorized-DJSr03Dw.7555cbcf1064.js → unauthorized-Cblht_KD.e0c38cb1a24c.js} +1 -1
- codex/static_root/assets/unauthorized-Cblht_KD.e0c38cb1a24c.js.br +0 -0
- codex/static_root/assets/unauthorized-Cblht_KD.e0c38cb1a24c.js.gz +0 -0
- codex/static_root/assets/{unauthorized-DJSr03Dw.js → unauthorized-Cblht_KD.js} +1 -1
- codex/static_root/assets/unauthorized-Cblht_KD.js.br +0 -0
- codex/static_root/assets/unauthorized-Cblht_KD.js.gz +0 -0
- codex/static_root/assets/{user-tab-DAK_Deoh.1832877d449a.js → user-tab-CdvLJrTe.e52c18781b89.js} +1 -1
- codex/static_root/assets/user-tab-CdvLJrTe.e52c18781b89.js.br +0 -0
- codex/static_root/assets/user-tab-CdvLJrTe.e52c18781b89.js.gz +0 -0
- codex/static_root/assets/{user-tab-DAK_Deoh.js → user-tab-CdvLJrTe.js} +1 -1
- codex/static_root/assets/user-tab-CdvLJrTe.js.br +0 -0
- codex/static_root/assets/user-tab-CdvLJrTe.js.gz +0 -0
- codex/static_root/manifest.e3e070ebb908.json +735 -0
- codex/static_root/manifest.e3e070ebb908.json.br +0 -0
- codex/static_root/manifest.e3e070ebb908.json.gz +0 -0
- codex/static_root/manifest.json +305 -305
- codex/static_root/manifest.json.br +0 -0
- codex/static_root/manifest.json.gz +0 -0
- codex/static_root/staticfiles.json +1 -1
- codex/status_controller.py +12 -9
- codex/urls/root.py +3 -4
- codex/views/admin/api_key.py +4 -1
- codex/views/admin/library.py +4 -4
- codex/views/admin/stats.py +10 -10
- codex/views/admin/tasks.py +9 -9
- codex/views/auth.py +8 -3
- codex/views/bookmark.py +3 -3
- codex/views/browser/annotate/card.py +2 -2
- codex/views/browser/annotate/order.py +7 -6
- codex/views/browser/bookmark.py +1 -1
- codex/views/browser/breadcrumbs.py +5 -6
- codex/views/browser/browser.py +2 -2
- codex/views/browser/choices.py +5 -6
- codex/views/browser/cover.py +3 -6
- codex/views/browser/download.py +1 -2
- codex/views/browser/filters/bookmark.py +1 -1
- codex/views/browser/filters/field.py +1 -1
- codex/views/browser/filters/filter.py +8 -6
- codex/views/browser/filters/group.py +4 -5
- codex/views/browser/filters/search/field/expression.py +2 -1
- codex/views/browser/filters/search/field/optimize.py +1 -1
- codex/views/browser/filters/search/field/parse.py +2 -2
- codex/views/browser/filters/search/parse.py +19 -4
- codex/views/browser/group_mtime.py +1 -1
- codex/views/browser/metadata/copy_intersections.py +1 -1
- codex/views/browser/metadata/metadata.py +1 -1
- codex/views/browser/mtime.py +1 -1
- codex/views/browser/order_by.py +5 -3
- codex/views/browser/params.py +1 -1
- codex/views/browser/settings.py +1 -1
- codex/views/browser/validate.py +5 -8
- codex/views/const.py +3 -0
- codex/views/frontend.py +1 -1
- codex/views/mixins.py +2 -3
- codex/views/opds/authentication_v1.py +1 -1
- codex/views/opds/const.py +4 -4
- codex/views/opds/util.py +3 -3
- codex/views/opds/v1/entry/entry.py +2 -4
- codex/views/opds/v1/entry/links.py +5 -4
- codex/views/opds/v1/facets.py +4 -8
- codex/views/opds/v1/feed.py +5 -5
- codex/views/opds/v1/links.py +6 -11
- codex/views/opds/v2/const.py +2 -5
- codex/views/opds/v2/feed.py +3 -3
- codex/views/opds/v2/progression.py +9 -8
- codex/views/opds/v2/publications.py +20 -10
- codex/views/public.py +1 -1
- codex/views/reader/books.py +2 -3
- codex/views/reader/page.py +3 -3
- codex/views/reader/params.py +2 -2
- codex/views/reader/reader.py +6 -6
- codex/views/reader/settings.py +1 -1
- codex/views/session.py +2 -8
- codex/views/settings.py +2 -2
- codex/views/timezone.py +2 -2
- codex/views/util.py +9 -10
- codex/views/version.py +1 -1
- {codex-1.7.3.dist-info → codex-1.7.3a1.dist-info}/METADATA +1 -2
- {codex-1.7.3.dist-info → codex-1.7.3a1.dist-info}/RECORD +565 -565
- {codex-1.7.3.dist-info → codex-1.7.3a1.dist-info}/WHEEL +1 -1
- codex/static_root/assets/VCheckbox-Dv6fwaDb.56abbfb00c8a.js.br +0 -0
- codex/static_root/assets/VCheckbox-Dv6fwaDb.56abbfb00c8a.js.gz +0 -0
- codex/static_root/assets/VCheckbox-Dv6fwaDb.js.br +0 -0
- codex/static_root/assets/VCheckbox-Dv6fwaDb.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-CNMFahfF.4ee9778a562e.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-CNMFahfF.4ee9778a562e.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-CNMFahfF.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-CNMFahfF.js.gz +0 -0
- codex/static_root/assets/VCombobox-DqBFki-9.2806f95c938d.js.br +0 -0
- codex/static_root/assets/VCombobox-DqBFki-9.2806f95c938d.js.gz +0 -0
- codex/static_root/assets/VCombobox-DqBFki-9.js.br +0 -0
- codex/static_root/assets/VCombobox-DqBFki-9.js.gz +0 -0
- codex/static_root/assets/VDialog-CQXjBvDZ.1a576c5e472f.js.br +0 -0
- codex/static_root/assets/VDialog-CQXjBvDZ.1a576c5e472f.js.gz +0 -0
- codex/static_root/assets/VDialog-CQXjBvDZ.js.br +0 -0
- codex/static_root/assets/VDialog-CQXjBvDZ.js.gz +0 -0
- codex/static_root/assets/VDivider-DUxQu-IZ.73d92ae2a07e.js.br +0 -0
- codex/static_root/assets/VDivider-DUxQu-IZ.73d92ae2a07e.js.gz +0 -0
- codex/static_root/assets/VDivider-DUxQu-IZ.js.br +0 -0
- codex/static_root/assets/VDivider-DUxQu-IZ.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-BaYzHUJp.5346826103eb.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-BaYzHUJp.5346826103eb.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-BaYzHUJp.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-BaYzHUJp.js.gz +0 -0
- codex/static_root/assets/VForm-hB4C5jVd.a2b90ddcd8ee.js.br +0 -0
- codex/static_root/assets/VForm-hB4C5jVd.a2b90ddcd8ee.js.gz +0 -0
- codex/static_root/assets/VForm-hB4C5jVd.js.br +0 -0
- codex/static_root/assets/VForm-hB4C5jVd.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-DOjw38qB.cbf2922d05af.js.br +0 -0
- codex/static_root/assets/VRadioGroup-DOjw38qB.cbf2922d05af.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-DOjw38qB.js.br +0 -0
- codex/static_root/assets/VRadioGroup-DOjw38qB.js.gz +0 -0
- codex/static_root/assets/VSelect-L4v_m3ag.db9fb8348617.js.br +0 -0
- codex/static_root/assets/VSelect-L4v_m3ag.db9fb8348617.js.gz +0 -0
- codex/static_root/assets/VSelect-L4v_m3ag.js.br +0 -0
- codex/static_root/assets/VSelect-L4v_m3ag.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-BqB1JeKa.2fb68a673402.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BqB1JeKa.2fb68a673402.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-BqB1JeKa.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BqB1JeKa.js.gz +0 -0
- codex/static_root/assets/VTable-CtorAbOx.bbda450cbd73.js.br +0 -0
- codex/static_root/assets/VTable-CtorAbOx.bbda450cbd73.js.gz +0 -0
- codex/static_root/assets/VTable-CtorAbOx.js.br +0 -0
- codex/static_root/assets/VTable-CtorAbOx.js.gz +0 -0
- codex/static_root/assets/VWindowItem-Bl-fa3ss.334e6b813775.js.br +0 -0
- codex/static_root/assets/VWindowItem-Bl-fa3ss.334e6b813775.js.gz +0 -0
- codex/static_root/assets/VWindowItem-Bl-fa3ss.js.br +0 -0
- codex/static_root/assets/VWindowItem-Bl-fa3ss.js.gz +0 -0
- codex/static_root/assets/admin-BAVKNREt.23c0966bd683.js.br +0 -0
- codex/static_root/assets/admin-BAVKNREt.23c0966bd683.js.gz +0 -0
- codex/static_root/assets/admin-BAVKNREt.js.br +0 -0
- codex/static_root/assets/admin-BAVKNREt.js.gz +0 -0
- codex/static_root/assets/admin-CHuFhx_t.a54700f97fc8.js.br +0 -0
- codex/static_root/assets/admin-CHuFhx_t.a54700f97fc8.js.gz +0 -0
- codex/static_root/assets/admin-CHuFhx_t.js.br +0 -0
- codex/static_root/assets/admin-CHuFhx_t.js.gz +0 -0
- codex/static_root/assets/admin-menu-T8WJ_x0C.4f011540bb4c.js.br +0 -0
- codex/static_root/assets/admin-menu-T8WJ_x0C.4f011540bb4c.js.gz +0 -0
- codex/static_root/assets/admin-menu-T8WJ_x0C.js.br +0 -0
- codex/static_root/assets/admin-menu-T8WJ_x0C.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-w_CqTSMl.7b36216f68b5.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-w_CqTSMl.7b36216f68b5.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-w_CqTSMl.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-w_CqTSMl.js.gz +0 -0
- codex/static_root/assets/browser-DNzQvgkY.aea8b7d7ca40.css.br +0 -0
- codex/static_root/assets/browser-DNzQvgkY.aea8b7d7ca40.css.gz +0 -0
- codex/static_root/assets/browser-DNzQvgkY.css.br +0 -0
- codex/static_root/assets/browser-DNzQvgkY.css.gz +0 -0
- codex/static_root/assets/browser-DdLCtUlr.380b79bea4a7.js +0 -1
- codex/static_root/assets/browser-DdLCtUlr.380b79bea4a7.js.br +0 -0
- codex/static_root/assets/browser-DdLCtUlr.380b79bea4a7.js.gz +0 -0
- codex/static_root/assets/browser-DdLCtUlr.js +0 -1
- codex/static_root/assets/browser-DdLCtUlr.js.br +0 -0
- codex/static_root/assets/browser-DdLCtUlr.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-Cy1tU-tj.416ef5bdfd46.js.br +0 -0
- codex/static_root/assets/change-password-dialog-Cy1tU-tj.416ef5bdfd46.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-Cy1tU-tj.js.br +0 -0
- codex/static_root/assets/change-password-dialog-Cy1tU-tj.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-B_Y3KKiL.1070d18f6b2d.js.br +0 -0
- codex/static_root/assets/confirm-dialog-B_Y3KKiL.1070d18f6b2d.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-B_Y3KKiL.js.br +0 -0
- codex/static_root/assets/confirm-dialog-B_Y3KKiL.js.gz +0 -0
- codex/static_root/assets/datetime-column-DVC0YqHC.03bb52c198e9.js.br +0 -0
- codex/static_root/assets/datetime-column-DVC0YqHC.03bb52c198e9.js.gz +0 -0
- codex/static_root/assets/datetime-column-DVC0YqHC.js.br +0 -0
- codex/static_root/assets/datetime-column-DVC0YqHC.js.gz +0 -0
- codex/static_root/assets/filter-xcEcgcIx.be1bb4725c89.js.br +0 -0
- codex/static_root/assets/filter-xcEcgcIx.be1bb4725c89.js.gz +0 -0
- codex/static_root/assets/filter-xcEcgcIx.js.br +0 -0
- codex/static_root/assets/filter-xcEcgcIx.js.gz +0 -0
- codex/static_root/assets/flag-tab-BOyQb0kr.842fca93f19c.js +0 -1
- codex/static_root/assets/flag-tab-BOyQb0kr.842fca93f19c.js.br +0 -0
- codex/static_root/assets/flag-tab-BOyQb0kr.842fca93f19c.js.gz +0 -0
- codex/static_root/assets/flag-tab-BOyQb0kr.js +0 -1
- codex/static_root/assets/flag-tab-BOyQb0kr.js.br +0 -0
- codex/static_root/assets/flag-tab-BOyQb0kr.js.gz +0 -0
- codex/static_root/assets/flag-tab-D2MYXCHk.0f57e109c01b.css +0 -1
- codex/static_root/assets/flag-tab-D2MYXCHk.0f57e109c01b.css.br +0 -0
- codex/static_root/assets/flag-tab-D2MYXCHk.0f57e109c01b.css.gz +0 -0
- codex/static_root/assets/flag-tab-D2MYXCHk.css +0 -1
- codex/static_root/assets/flag-tab-D2MYXCHk.css.br +0 -0
- codex/static_root/assets/flag-tab-D2MYXCHk.css.gz +0 -0
- codex/static_root/assets/forwardRefs-D1ZDjzWx.96fccf773093.js.br +0 -0
- codex/static_root/assets/forwardRefs-D1ZDjzWx.96fccf773093.js.gz +0 -0
- codex/static_root/assets/forwardRefs-D1ZDjzWx.js.br +0 -0
- codex/static_root/assets/forwardRefs-D1ZDjzWx.js.gz +0 -0
- codex/static_root/assets/group-tab-DkAIGL8z.527cad03c21d.js.br +0 -0
- codex/static_root/assets/group-tab-DkAIGL8z.527cad03c21d.js.gz +0 -0
- codex/static_root/assets/group-tab-DkAIGL8z.js.br +0 -0
- codex/static_root/assets/group-tab-DkAIGL8z.js.gz +0 -0
- codex/static_root/assets/http-error-CjSb8orc.ad6fc5733ed8.js.br +0 -0
- codex/static_root/assets/http-error-CjSb8orc.ad6fc5733ed8.js.gz +0 -0
- codex/static_root/assets/http-error-CjSb8orc.js.br +0 -0
- codex/static_root/assets/http-error-CjSb8orc.js.gz +0 -0
- codex/static_root/assets/index-CoFXW6I0.27f397e1425e.js.br +0 -0
- codex/static_root/assets/index-CoFXW6I0.27f397e1425e.js.gz +0 -0
- codex/static_root/assets/index-CoFXW6I0.js.br +0 -0
- codex/static_root/assets/index-CoFXW6I0.js.gz +0 -0
- codex/static_root/assets/library-tab-hkMMBz1x.02270491d822.js.br +0 -0
- codex/static_root/assets/library-tab-hkMMBz1x.02270491d822.js.gz +0 -0
- codex/static_root/assets/library-tab-hkMMBz1x.js.br +0 -0
- codex/static_root/assets/library-tab-hkMMBz1x.js.gz +0 -0
- codex/static_root/assets/main-DCaPxp2h.076707ddd123.js.br +0 -0
- codex/static_root/assets/main-DCaPxp2h.076707ddd123.js.gz +0 -0
- codex/static_root/assets/main-DCaPxp2h.js.br +0 -0
- codex/static_root/assets/main-DCaPxp2h.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.e7dfdd2a6937.js +0 -1
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.e7dfdd2a6937.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.e7dfdd2a6937.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.js +0 -1
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-CwmA9y3l.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-DoqxSygU.f985bc705fe5.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-DoqxSygU.f985bc705fe5.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-DoqxSygU.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-DoqxSygU.js.gz +0 -0
- codex/static_root/assets/pdf-doc-BwxvAx1z.96cbc39c321d.js.br +0 -0
- codex/static_root/assets/pdf-doc-BwxvAx1z.96cbc39c321d.js.gz +0 -0
- codex/static_root/assets/pdf-doc-BwxvAx1z.js.br +0 -0
- codex/static_root/assets/pdf-doc-BwxvAx1z.js.gz +0 -0
- codex/static_root/assets/reader-hHIonVbA.4c12219242a9.js.br +0 -0
- codex/static_root/assets/reader-hHIonVbA.4c12219242a9.js.gz +0 -0
- codex/static_root/assets/reader-hHIonVbA.js.br +0 -0
- codex/static_root/assets/reader-hHIonVbA.js.gz +0 -0
- codex/static_root/assets/relation-chips-D7-5kPem.4443b085aca2.js.br +0 -0
- codex/static_root/assets/relation-chips-D7-5kPem.4443b085aca2.js.gz +0 -0
- codex/static_root/assets/relation-chips-D7-5kPem.js.br +0 -0
- codex/static_root/assets/relation-chips-D7-5kPem.js.gz +0 -0
- codex/static_root/assets/settings-drawer-CdFmOhnd.f7dcd12b3ebc.js.br +0 -0
- codex/static_root/assets/settings-drawer-CdFmOhnd.f7dcd12b3ebc.js.gz +0 -0
- codex/static_root/assets/settings-drawer-CdFmOhnd.js.br +0 -0
- codex/static_root/assets/settings-drawer-CdFmOhnd.js.gz +0 -0
- codex/static_root/assets/stats-tab-BzaipD0m.b6bf627ea860.js.br +0 -0
- codex/static_root/assets/stats-tab-BzaipD0m.b6bf627ea860.js.gz +0 -0
- codex/static_root/assets/stats-tab-BzaipD0m.js.br +0 -0
- codex/static_root/assets/stats-tab-BzaipD0m.js.gz +0 -0
- codex/static_root/assets/task-tab-DCnS1sM9.44d8435b4989.js.br +0 -0
- codex/static_root/assets/task-tab-DCnS1sM9.44d8435b4989.js.gz +0 -0
- codex/static_root/assets/task-tab-DCnS1sM9.js.br +0 -0
- codex/static_root/assets/task-tab-DCnS1sM9.js.gz +0 -0
- codex/static_root/assets/unauthorized-DJSr03Dw.7555cbcf1064.js.br +0 -0
- codex/static_root/assets/unauthorized-DJSr03Dw.7555cbcf1064.js.gz +0 -0
- codex/static_root/assets/unauthorized-DJSr03Dw.js.br +0 -0
- codex/static_root/assets/unauthorized-DJSr03Dw.js.gz +0 -0
- codex/static_root/assets/user-tab-DAK_Deoh.1832877d449a.js.br +0 -0
- codex/static_root/assets/user-tab-DAK_Deoh.1832877d449a.js.gz +0 -0
- codex/static_root/assets/user-tab-DAK_Deoh.js.br +0 -0
- codex/static_root/assets/user-tab-DAK_Deoh.js.gz +0 -0
- codex/static_root/manifest.cbc39bca88fc.json +0 -735
- codex/static_root/manifest.cbc39bca88fc.json.br +0 -0
- codex/static_root/manifest.cbc39bca88fc.json.gz +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.016ed8d222c4.css → VCheckbox-CMKdyl0R.016ed8d222c4.css} +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.016ed8d222c4.css.br → VCheckbox-CMKdyl0R.016ed8d222c4.css.br} +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.016ed8d222c4.css.gz → VCheckbox-CMKdyl0R.016ed8d222c4.css.gz} +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.css → VCheckbox-CMKdyl0R.css} +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.css.br → VCheckbox-CMKdyl0R.css.br} +0 -0
- /codex/static_root/assets/{VCheckbox-CvH8ekHL.css.gz → VCheckbox-CMKdyl0R.css.gz} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.9f25a34994e2.css → VCombobox-bwEYrXCg.9f25a34994e2.css} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.9f25a34994e2.css.br → VCombobox-bwEYrXCg.9f25a34994e2.css.br} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.9f25a34994e2.css.gz → VCombobox-bwEYrXCg.9f25a34994e2.css.gz} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.css → VCombobox-bwEYrXCg.css} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.css.br → VCombobox-bwEYrXCg.css.br} +0 -0
- /codex/static_root/assets/{VCombobox-BQHELb_o.css.gz → VCombobox-bwEYrXCg.css.gz} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.b07aca713774.css → VDialog-Dyd05WHA.b07aca713774.css} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.b07aca713774.css.br → VDialog-Dyd05WHA.b07aca713774.css.br} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.b07aca713774.css.gz → VDialog-Dyd05WHA.b07aca713774.css.gz} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.css → VDialog-Dyd05WHA.css} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.css.br → VDialog-Dyd05WHA.css.br} +0 -0
- /codex/static_root/assets/{VDialog-DWos4S54.css.gz → VDialog-Dyd05WHA.css.gz} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.3d2e17799e5c.css → VDivider-DE8MJPGz.3d2e17799e5c.css} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.3d2e17799e5c.css.br → VDivider-DE8MJPGz.3d2e17799e5c.css.br} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.3d2e17799e5c.css.gz → VDivider-DE8MJPGz.3d2e17799e5c.css.gz} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.css → VDivider-DE8MJPGz.css} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.css.br → VDivider-DE8MJPGz.css.br} +0 -0
- /codex/static_root/assets/{VDivider-DU47sRrT.css.gz → VDivider-DE8MJPGz.css.gz} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.5b17872981df.css → VExpansionPanels-6G1AUajL.5b17872981df.css} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.5b17872981df.css.br → VExpansionPanels-6G1AUajL.5b17872981df.css.br} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.5b17872981df.css.gz → VExpansionPanels-6G1AUajL.5b17872981df.css.gz} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.css → VExpansionPanels-6G1AUajL.css} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.css.br → VExpansionPanels-6G1AUajL.css.br} +0 -0
- /codex/static_root/assets/{VExpansionPanels-RsCANmDP.css.gz → VExpansionPanels-6G1AUajL.css.gz} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.138c0b89b6fc.css → VForm-v1Gmu6E1.138c0b89b6fc.css} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.138c0b89b6fc.css.br → VForm-v1Gmu6E1.138c0b89b6fc.css.br} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.138c0b89b6fc.css.gz → VForm-v1Gmu6E1.138c0b89b6fc.css.gz} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.css → VForm-v1Gmu6E1.css} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.css.br → VForm-v1Gmu6E1.css.br} +0 -0
- /codex/static_root/assets/{VForm-DxBt30-N.css.gz → VForm-v1Gmu6E1.css.gz} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.8e3741381961.css → VRadioGroup-i2qP9Wu9.8e3741381961.css} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.8e3741381961.css.br → VRadioGroup-i2qP9Wu9.8e3741381961.css.br} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.8e3741381961.css.gz → VRadioGroup-i2qP9Wu9.8e3741381961.css.gz} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.css → VRadioGroup-i2qP9Wu9.css} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.css.br → VRadioGroup-i2qP9Wu9.css.br} +0 -0
- /codex/static_root/assets/{VRadioGroup-Cp9mZ7cb.css.gz → VRadioGroup-i2qP9Wu9.css.gz} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.6309f7bf17bb.css → VSelect-8MFoaOUz.6309f7bf17bb.css} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.6309f7bf17bb.css.br → VSelect-8MFoaOUz.6309f7bf17bb.css.br} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.6309f7bf17bb.css.gz → VSelect-8MFoaOUz.6309f7bf17bb.css.gz} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.css → VSelect-8MFoaOUz.css} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.css.br → VSelect-8MFoaOUz.css.br} +0 -0
- /codex/static_root/assets/{VSelect-CP_CVb8s.css.gz → VSelect-8MFoaOUz.css.gz} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.cc18de4e83f6.css → VSelectionControl-DLxcLoTI.cc18de4e83f6.css} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.cc18de4e83f6.css.br → VSelectionControl-DLxcLoTI.cc18de4e83f6.css.br} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.cc18de4e83f6.css.gz → VSelectionControl-DLxcLoTI.cc18de4e83f6.css.gz} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.css → VSelectionControl-DLxcLoTI.css} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.css.br → VSelectionControl-DLxcLoTI.css.br} +0 -0
- /codex/static_root/assets/{VSelectionControl-DPpfgCW2.css.gz → VSelectionControl-DLxcLoTI.css.gz} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.c36f0a6a30cf.css → VTable-Y5Sc3hJd.c36f0a6a30cf.css} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.c36f0a6a30cf.css.br → VTable-Y5Sc3hJd.c36f0a6a30cf.css.br} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.c36f0a6a30cf.css.gz → VTable-Y5Sc3hJd.c36f0a6a30cf.css.gz} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.css → VTable-Y5Sc3hJd.css} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.css.br → VTable-Y5Sc3hJd.css.br} +0 -0
- /codex/static_root/assets/{VTable-BnxSZ_W5.css.gz → VTable-Y5Sc3hJd.css.gz} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.css → VWindowItem-ByIod57Y.css} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.css.br → VWindowItem-ByIod57Y.css.br} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.css.gz → VWindowItem-ByIod57Y.css.gz} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.f7fb19752bf3.css → VWindowItem-ByIod57Y.f7fb19752bf3.css} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.f7fb19752bf3.css.br → VWindowItem-ByIod57Y.f7fb19752bf3.css.br} +0 -0
- /codex/static_root/assets/{VWindowItem-CWBhiE_Y.f7fb19752bf3.css.gz → VWindowItem-ByIod57Y.f7fb19752bf3.css.gz} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.06cb213f624d.css → admin-VRLEt4I5.06cb213f624d.css} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.06cb213f624d.css.br → admin-VRLEt4I5.06cb213f624d.css.br} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.06cb213f624d.css.gz → admin-VRLEt4I5.06cb213f624d.css.gz} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.css → admin-VRLEt4I5.css} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.css.br → admin-VRLEt4I5.css.br} +0 -0
- /codex/static_root/assets/{admin-C3iCIUnm.css.gz → admin-VRLEt4I5.css.gz} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.c13b7df2ff57.css → admin-menu-B9bzD6hV.c13b7df2ff57.css} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.c13b7df2ff57.css.br → admin-menu-B9bzD6hV.c13b7df2ff57.css.br} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.c13b7df2ff57.css.gz → admin-menu-B9bzD6hV.c13b7df2ff57.css.gz} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.css → admin-menu-B9bzD6hV.css} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.css.br → admin-menu-B9bzD6hV.css.br} +0 -0
- /codex/static_root/assets/{admin-menu-B3iXsOyy.css.gz → admin-menu-B9bzD6hV.css.gz} +0 -0
- /codex/static_root/assets/{admin-settings-button-progress-BGB22oTD.2548c49a853e.css → admin-settings-button-progress-DUUQfVsZ.2548c49a853e.css} +0 -0
- /codex/static_root/assets/{admin-settings-button-progress-BGB22oTD.css → admin-settings-button-progress-DUUQfVsZ.css} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.a30e68c6e303.css → change-password-dialog-C_EOKOn9.a30e68c6e303.css} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.a30e68c6e303.css.br → change-password-dialog-C_EOKOn9.a30e68c6e303.css.br} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.a30e68c6e303.css.gz → change-password-dialog-C_EOKOn9.a30e68c6e303.css.gz} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.css → change-password-dialog-C_EOKOn9.css} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.css.br → change-password-dialog-C_EOKOn9.css.br} +0 -0
- /codex/static_root/assets/{change-password-dialog-D0ymWcl_.css.gz → change-password-dialog-C_EOKOn9.css.gz} +0 -0
- /codex/static_root/assets/{confirm-dialog-B1ABbGMU.9b5915b112c0.css → confirm-dialog-54rblwf7.9b5915b112c0.css} +0 -0
- /codex/static_root/assets/{confirm-dialog-B1ABbGMU.9b5915b112c0.css.br → confirm-dialog-54rblwf7.9b5915b112c0.css.br} +0 -0
- /codex/static_root/assets/{confirm-dialog-B1ABbGMU.css → confirm-dialog-54rblwf7.css} +0 -0
- /codex/static_root/assets/{confirm-dialog-B1ABbGMU.css.br → confirm-dialog-54rblwf7.css.br} +0 -0
- /codex/static_root/assets/{datetime-column-BavtvLnf.1f3bf499e063.css → datetime-column-DeCthByU.1f3bf499e063.css} +0 -0
- /codex/static_root/assets/{datetime-column-BavtvLnf.css → datetime-column-DeCthByU.css} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.9b56b4459240.css → forwardRefs-zKOZsbbr.9b56b4459240.css} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.9b56b4459240.css.br → forwardRefs-zKOZsbbr.9b56b4459240.css.br} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.9b56b4459240.css.gz → forwardRefs-zKOZsbbr.9b56b4459240.css.gz} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.css → forwardRefs-zKOZsbbr.css} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.css.br → forwardRefs-zKOZsbbr.css.br} +0 -0
- /codex/static_root/assets/{forwardRefs-CFNX6kJ2.css.gz → forwardRefs-zKOZsbbr.css.gz} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.948e907b1e6b.css → group-tab-DkIN1Heu.948e907b1e6b.css} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.948e907b1e6b.css.br → group-tab-DkIN1Heu.948e907b1e6b.css.br} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.948e907b1e6b.css.gz → group-tab-DkIN1Heu.948e907b1e6b.css.gz} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.css → group-tab-DkIN1Heu.css} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.css.br → group-tab-DkIN1Heu.css.br} +0 -0
- /codex/static_root/assets/{group-tab-_vKWzoyd.css.gz → group-tab-DkIN1Heu.css.gz} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.8c13689ae574.css → http-error-DEJmFobt.8c13689ae574.css} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.8c13689ae574.css.br → http-error-DEJmFobt.8c13689ae574.css.br} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.8c13689ae574.css.gz → http-error-DEJmFobt.8c13689ae574.css.gz} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.css → http-error-DEJmFobt.css} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.css.br → http-error-DEJmFobt.css.br} +0 -0
- /codex/static_root/assets/{http-error-CODU7jcH.css.gz → http-error-DEJmFobt.css.gz} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.523d7b3d350f.css → index-CL_6g4tJ.523d7b3d350f.css} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.523d7b3d350f.css.br → index-CL_6g4tJ.523d7b3d350f.css.br} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.523d7b3d350f.css.gz → index-CL_6g4tJ.523d7b3d350f.css.gz} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.css → index-CL_6g4tJ.css} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.css.br → index-CL_6g4tJ.css.br} +0 -0
- /codex/static_root/assets/{index-BHXJTQ4V.css.gz → index-CL_6g4tJ.css.gz} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.75baedb7e976.css → library-tab-Ce6qaeCV.75baedb7e976.css} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.75baedb7e976.css.br → library-tab-Ce6qaeCV.75baedb7e976.css.br} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.75baedb7e976.css.gz → library-tab-Ce6qaeCV.75baedb7e976.css.gz} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.css → library-tab-Ce6qaeCV.css} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.css.br → library-tab-Ce6qaeCV.css.br} +0 -0
- /codex/static_root/assets/{library-tab-CgsXOX_r.css.gz → library-tab-Ce6qaeCV.css.gz} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.css → main-BZ73p_WW.css} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.css.br → main-BZ73p_WW.css.br} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.css.gz → main-BZ73p_WW.css.gz} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css → main-BZ73p_WW.d529e8b3f52a.css} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css.br → main-BZ73p_WW.d529e8b3f52a.css.br} +0 -0
- /codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css.gz → main-BZ73p_WW.d529e8b3f52a.css.gz} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.css → pagination-toolbar-DSe0TkMm.css} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.css.br → pagination-toolbar-DSe0TkMm.css.br} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.css.gz → pagination-toolbar-DSe0TkMm.css.gz} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.dcb0eba65827.css → pagination-toolbar-DSe0TkMm.dcb0eba65827.css} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.dcb0eba65827.css.br → pagination-toolbar-DSe0TkMm.dcb0eba65827.css.br} +0 -0
- /codex/static_root/assets/{pagination-toolbar-D5VQREy5.dcb0eba65827.css.gz → pagination-toolbar-DSe0TkMm.dcb0eba65827.css.gz} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.b94aac7e3313.css → pdf-doc-CG5-AZ2M.b94aac7e3313.css} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.b94aac7e3313.css.br → pdf-doc-CG5-AZ2M.b94aac7e3313.css.br} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.b94aac7e3313.css.gz → pdf-doc-CG5-AZ2M.b94aac7e3313.css.gz} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.css → pdf-doc-CG5-AZ2M.css} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.css.br → pdf-doc-CG5-AZ2M.css.br} +0 -0
- /codex/static_root/assets/{pdf-doc-B4cGW_Hl.css.gz → pdf-doc-CG5-AZ2M.css.gz} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.2ed32f08e906.css → reader-B3hgta6g.2ed32f08e906.css} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.2ed32f08e906.css.br → reader-B3hgta6g.2ed32f08e906.css.br} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.2ed32f08e906.css.gz → reader-B3hgta6g.2ed32f08e906.css.gz} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.css → reader-B3hgta6g.css} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.css.br → reader-B3hgta6g.css.br} +0 -0
- /codex/static_root/assets/{reader-D_3ruSqa.css.gz → reader-B3hgta6g.css.gz} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.01269a188e01.css → relation-chips-ByfWwuQc.01269a188e01.css} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.01269a188e01.css.br → relation-chips-ByfWwuQc.01269a188e01.css.br} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.01269a188e01.css.gz → relation-chips-ByfWwuQc.01269a188e01.css.gz} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.css → relation-chips-ByfWwuQc.css} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.css.br → relation-chips-ByfWwuQc.css.br} +0 -0
- /codex/static_root/assets/{relation-chips-DpbzrZxT.css.gz → relation-chips-ByfWwuQc.css.gz} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.75a6ea969e71.css → settings-drawer-CqJ4gXLq.75a6ea969e71.css} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.75a6ea969e71.css.br → settings-drawer-CqJ4gXLq.75a6ea969e71.css.br} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.75a6ea969e71.css.gz → settings-drawer-CqJ4gXLq.75a6ea969e71.css.gz} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.css → settings-drawer-CqJ4gXLq.css} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.css.br → settings-drawer-CqJ4gXLq.css.br} +0 -0
- /codex/static_root/assets/{settings-drawer-DMSsWF8c.css.gz → settings-drawer-CqJ4gXLq.css.gz} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.9fdb0106124d.css → stats-tab-BlXGStge.9fdb0106124d.css} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.9fdb0106124d.css.br → stats-tab-BlXGStge.9fdb0106124d.css.br} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.9fdb0106124d.css.gz → stats-tab-BlXGStge.9fdb0106124d.css.gz} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.css → stats-tab-BlXGStge.css} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.css.br → stats-tab-BlXGStge.css.br} +0 -0
- /codex/static_root/assets/{stats-tab-WvF2acoZ.css.gz → stats-tab-BlXGStge.css.gz} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.478e74041f80.css → task-tab-EGlhcKTH.478e74041f80.css} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.478e74041f80.css.br → task-tab-EGlhcKTH.478e74041f80.css.br} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.478e74041f80.css.gz → task-tab-EGlhcKTH.478e74041f80.css.gz} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.css → task-tab-EGlhcKTH.css} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.css.br → task-tab-EGlhcKTH.css.br} +0 -0
- /codex/static_root/assets/{task-tab-DfdUY9Rc.css.gz → task-tab-EGlhcKTH.css.gz} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.c5536d9dae75.css → unauthorized-VnIXUO1w.c5536d9dae75.css} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.c5536d9dae75.css.br → unauthorized-VnIXUO1w.c5536d9dae75.css.br} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.c5536d9dae75.css.gz → unauthorized-VnIXUO1w.c5536d9dae75.css.gz} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.css → unauthorized-VnIXUO1w.css} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.css.br → unauthorized-VnIXUO1w.css.br} +0 -0
- /codex/static_root/assets/{unauthorized-CsSak07X.css.gz → unauthorized-VnIXUO1w.css.gz} +0 -0
- {codex-1.7.3.dist-info → codex-1.7.3a1.dist-info}/LICENSE +0 -0
- {codex-1.7.3.dist-info → codex-1.7.3a1.dist-info}/entry_points.txt +0 -0
codex/models/groups.py
CHANGED
|
@@ -136,7 +136,7 @@ class WatchedPathBrowserGroup(BrowserGroupModel, WatchedPath):
|
|
|
136
136
|
super().presave()
|
|
137
137
|
WatchedPath.presave(self)
|
|
138
138
|
|
|
139
|
-
class Meta(
|
|
139
|
+
class Meta(WatchedPath.Meta): # type: ignore
|
|
140
140
|
"""Use Mixin Meta."""
|
|
141
141
|
|
|
142
142
|
abstract = True
|
codex/models/library.py
CHANGED
|
@@ -23,7 +23,7 @@ __all__ = ("Library", "validate_dir_exists")
|
|
|
23
23
|
def validate_dir_exists(path):
|
|
24
24
|
"""Validate that a library exists."""
|
|
25
25
|
if not Path(path).is_dir():
|
|
26
|
-
raise ValidationError(_("{path} is not a directory"), params={"path": path})
|
|
26
|
+
raise ValidationError(_(f"{path} is not a directory"), params={"path": path})
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class Library(BaseModel):
|
codex/models/paths.py
CHANGED
|
@@ -36,11 +36,11 @@ class WatchedPath(BaseModel):
|
|
|
36
36
|
st[0] = st_record.st_mode
|
|
37
37
|
st[1] = st_record.st_ino
|
|
38
38
|
# st[2] = st_record.st_dev is ignored by diff
|
|
39
|
-
# st[3] = st_record.st_nlink
|
|
40
|
-
# st[4] = st_record.st_uid
|
|
41
|
-
# st[5] = st_record.st_gid
|
|
39
|
+
# st[3] = st_record.st_nlink
|
|
40
|
+
# st[4] = st_record.st_uid
|
|
41
|
+
# st[5] = st_record.st_gid
|
|
42
42
|
st[6] = st_record.st_size
|
|
43
|
-
# st[7] = st_record.st_atime
|
|
43
|
+
# st[7] = st_record.st_atime
|
|
44
44
|
st[8] = st_record.st_mtime
|
|
45
45
|
self.stat = st
|
|
46
46
|
|
codex/models/query.py
CHANGED
|
@@ -45,7 +45,7 @@ class GroupByQuery(Query):
|
|
|
45
45
|
self.force_group_by_table = ""
|
|
46
46
|
self.force_group_by_fields = ()
|
|
47
47
|
|
|
48
|
-
def get_compiler(self, using=None, connection=None, elide_empty=True):
|
|
48
|
+
def get_compiler(self, using=None, connection=None, elide_empty=True):
|
|
49
49
|
"""Use the custom compiler instead of SQLCompiler."""
|
|
50
50
|
if self.compiler == "SQLCompiler":
|
|
51
51
|
if using is None and connection is None:
|
|
@@ -59,11 +59,7 @@ class GroupByQuery(Query):
|
|
|
59
59
|
)
|
|
60
60
|
else:
|
|
61
61
|
# Normal super() operation.
|
|
62
|
-
compiler = super().get_compiler(
|
|
63
|
-
using=using,
|
|
64
|
-
connection=connection,
|
|
65
|
-
elide_empty=elide_empty, # type: ignore[reportCallIssue]
|
|
66
|
-
)
|
|
62
|
+
compiler = super().get_compiler(using, connection, elide_empty) # type: ignore
|
|
67
63
|
|
|
68
64
|
return compiler
|
|
69
65
|
|
|
@@ -86,13 +82,13 @@ class GroupByQuerySet(QuerySet):
|
|
|
86
82
|
|
|
87
83
|
def group_by(self, *fields, model=None):
|
|
88
84
|
"""Force group_by operator."""
|
|
89
|
-
obj = self._chain() # type: ignore
|
|
85
|
+
obj = self._chain() # type: ignore
|
|
90
86
|
obj.query.set_force_group_by(fields, model=model)
|
|
91
87
|
return obj
|
|
92
88
|
|
|
93
89
|
def demote_joins(self, tables):
|
|
94
90
|
"""Force INNER JOINS."""
|
|
95
|
-
obj = self._chain() # type: ignore
|
|
91
|
+
obj = self._chain() # type: ignore
|
|
96
92
|
obj.query.demote_joins(tables)
|
|
97
93
|
return obj
|
|
98
94
|
|
codex/models/util.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Utilities for models."""
|
|
2
2
|
|
|
3
3
|
_ARTICLES = frozenset(
|
|
4
|
-
("a", "an", "the") # en # noqa
|
|
4
|
+
("a", "an", "the") # en # noqa RUF005
|
|
5
5
|
+ ("un", "unos", "unas", "el", "los", "la", "las") # es
|
|
6
6
|
+ ("un", "une", "le", "les", "la", "les", "l'") # fr
|
|
7
7
|
+ ("o", "a", "os") # pt
|
codex/permissions.py
CHANGED
|
@@ -8,7 +8,7 @@ from codex.models import Timestamp
|
|
|
8
8
|
class HasAPIKeyOrIsAdminUser(BasePermission):
|
|
9
9
|
"""Does the request have the current api key."""
|
|
10
10
|
|
|
11
|
-
def has_permission(self, request, view):
|
|
11
|
+
def has_permission(self, request, view): # type: ignore
|
|
12
12
|
"""Test the request api key against the database."""
|
|
13
13
|
data = request.GET if request.method == "GET" else request.POST
|
|
14
14
|
api_key = data.get("apiKey")
|
codex/run.py
CHANGED
|
@@ -85,4 +85,6 @@ class AdminFolderSerializer(Serializer):
|
|
|
85
85
|
|
|
86
86
|
def validate_show_hidden(self, show_hidden):
|
|
87
87
|
"""Snakecase the showHidden field."""
|
|
88
|
-
return
|
|
88
|
+
return (
|
|
89
|
+
show_hidden == "true" or self.initial_data.get("showHidden") == "true" # type: ignore
|
|
90
|
+
)
|
|
@@ -50,9 +50,9 @@ class BrowserChoicesFilterSerializer(Serializer):
|
|
|
50
50
|
if serializer_class:
|
|
51
51
|
value = serializer_class(choices, many=True).data
|
|
52
52
|
elif not serializer_class and field_name in _LIST_FIELDS:
|
|
53
|
-
field: ListField = (
|
|
53
|
+
field: ListField = (
|
|
54
54
|
BrowserSettingsFilterSerializer().get_fields().get(field_name)
|
|
55
|
-
)
|
|
55
|
+
) # type: ignore
|
|
56
56
|
value = field.to_representation(choices)
|
|
57
57
|
else:
|
|
58
58
|
value = BrowserChoicesIntegerPkSerializer(choices, many=True).data
|
|
@@ -64,9 +64,5 @@ class BrowserAggregateSerializerMixin(Serializer):
|
|
|
64
64
|
)
|
|
65
65
|
mtime = self._get_max_updated_at(EPOCH_START, updated_ats)
|
|
66
66
|
if obj.bmua_is_max:
|
|
67
|
-
mtime: datetime
|
|
68
|
-
mtime, obj.bookmark_updated_at, EPOCH_START
|
|
69
|
-
)
|
|
70
|
-
if mtime is None:
|
|
71
|
-
return 0
|
|
67
|
+
mtime: datetime = max_none(mtime, obj.bookmark_updated_at, EPOCH_START) # type: ignore
|
|
72
68
|
return int(mtime.timestamp() * 1000)
|
|
@@ -51,6 +51,7 @@ class BrowserCoverInputSerializer(BrowserCoverInputSerializerBase):
|
|
|
51
51
|
class BrowserSettingsSerializerBase(BrowserCoverInputSerializerBase):
|
|
52
52
|
"""Base Serializer for Browser & OPDS Settings."""
|
|
53
53
|
|
|
54
|
+
# search_results_limit = IntegerField(required=False)
|
|
54
55
|
top_group = TopGroupField(required=False)
|
|
55
56
|
|
|
56
57
|
|
|
@@ -63,8 +64,7 @@ class OPDSSettingsSerializer(BrowserSettingsSerializerBase):
|
|
|
63
64
|
|
|
64
65
|
|
|
65
66
|
class BrowserSettingsSerializer(BrowserSettingsSerializerBase):
|
|
66
|
-
"""
|
|
67
|
-
Browser Settings that the user can change.
|
|
67
|
+
"""Browser Settings that the user can change.
|
|
68
68
|
|
|
69
69
|
This is the only browse serializer that's submitted.
|
|
70
70
|
"""
|
codex/serializers/fields.py
CHANGED
|
@@ -38,7 +38,7 @@ class TimestampField(IntegerField):
|
|
|
38
38
|
value = value.timestamp()
|
|
39
39
|
return int(float(value) * 1000)
|
|
40
40
|
|
|
41
|
-
def to_internal_value(self, data) -> datetime: # type: ignore
|
|
41
|
+
def to_internal_value(self, data) -> datetime: # type: ignore
|
|
42
42
|
"""Convert from castable, likely string to datetime."""
|
|
43
43
|
return datetime.fromtimestamp(float(data) / 1000, tz=timezone.utc)
|
|
44
44
|
|
|
@@ -48,7 +48,7 @@ def validate_decade(decade):
|
|
|
48
48
|
# * We don't need a whole db call just to be perfectly accurate
|
|
49
49
|
# * -1s are decoded back into None before validation
|
|
50
50
|
if decade is not None and decade % 10 != 0:
|
|
51
|
-
raise ValidationError(_("Invalid decade: {decade}")
|
|
51
|
+
raise ValidationError(_(f"Invalid decade: {decade}"))
|
|
52
52
|
return True
|
|
53
53
|
|
|
54
54
|
|
|
@@ -62,21 +62,21 @@ class VuetifyNullCodeFieldMixin:
|
|
|
62
62
|
return None if data == self.NULL_CODE else data
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
class VuetifyFloatField(VuetifyNullCodeFieldMixin, FloatField): # type: ignore
|
|
65
|
+
class VuetifyFloatField(VuetifyNullCodeFieldMixin, FloatField): # type: ignore
|
|
66
66
|
"""Float Field with null code conversion."""
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class VuetifyIntegerField(VuetifyNullCodeFieldMixin, IntegerField): # type: ignore
|
|
69
|
+
class VuetifyIntegerField(VuetifyNullCodeFieldMixin, IntegerField): # type: ignore
|
|
70
70
|
"""Integer Field with null code conversion."""
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
class VuetifyCharField(VuetifyNullCodeFieldMixin, CharField): # type: ignore
|
|
73
|
+
class VuetifyCharField(VuetifyNullCodeFieldMixin, CharField): # type: ignore
|
|
74
74
|
"""Char Field with null code conversion."""
|
|
75
75
|
|
|
76
76
|
NULL_CODE = str(VUETIFY_NULL_CODE)
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
class VuetifyBooleanField(VuetifyNullCodeFieldMixin, BooleanField): # type: ignore
|
|
79
|
+
class VuetifyBooleanField(VuetifyNullCodeFieldMixin, BooleanField): # type: ignore
|
|
80
80
|
"""Boolean Field with null code conversion."""
|
|
81
81
|
|
|
82
82
|
|
|
@@ -168,7 +168,7 @@ class StringListMultipleChoiceField(MultipleChoiceField):
|
|
|
168
168
|
"""Convert comma delimited strings to sets."""
|
|
169
169
|
if isinstance(data, str):
|
|
170
170
|
data = frozenset(data.split(","))
|
|
171
|
-
return super().to_internal_value(data) # type: ignore
|
|
171
|
+
return super().to_internal_value(data) # type: ignore
|
|
172
172
|
|
|
173
173
|
|
|
174
174
|
class SerializerChoicesField(StringListMultipleChoiceField):
|
codex/serializers/models/base.py
CHANGED
|
@@ -6,7 +6,7 @@ from rest_framework.serializers import ModelSerializer, SerializerMetaclass
|
|
|
6
6
|
class BaseModelSerializer(ModelSerializer):
|
|
7
7
|
"""BaseModel Serializer for inheritance."""
|
|
8
8
|
|
|
9
|
-
class Meta(SerializerMetaclass): # type: ignore
|
|
9
|
+
class Meta(SerializerMetaclass): # type: ignore
|
|
10
10
|
"""Use explicit metaclass instead of python 3 method."""
|
|
11
11
|
|
|
12
12
|
abstract = True
|
|
@@ -38,8 +38,8 @@ class ComicSerializer(BaseModelSerializer):
|
|
|
38
38
|
pk = IntegerField(source="id")
|
|
39
39
|
|
|
40
40
|
# Annotations
|
|
41
|
-
# issue_count = IntegerField(allow_null=True)
|
|
42
|
-
# volume_count = IntegerField(allow_null=True)
|
|
41
|
+
# issue_count = IntegerField(allow_null=True)
|
|
42
|
+
# volume_count = IntegerField(allow_null=True)
|
|
43
43
|
|
|
44
44
|
# Group FKs
|
|
45
45
|
publisher = PublisherSerializer(allow_null=True)
|
|
@@ -43,6 +43,7 @@ class SeriesSerializer(GroupModelSerializer):
|
|
|
43
43
|
"""Configure model."""
|
|
44
44
|
|
|
45
45
|
model = Series
|
|
46
|
+
# fields = (*NamedModelMeta.fields, "volume_count")
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
class VolumeSerializer(GroupModelSerializer):
|
|
@@ -52,3 +53,4 @@ class VolumeSerializer(GroupModelSerializer):
|
|
|
52
53
|
"""Configure model."""
|
|
53
54
|
|
|
54
55
|
model = Volume
|
|
56
|
+
# fields = (*NamedModelMeta.fields, "issue_count")
|
|
@@ -31,26 +31,24 @@ class OPSD2AuthenticateSerializer(Serializer):
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class OPDS2LinkPropertiesSerializer(Serializer):
|
|
34
|
-
"""
|
|
35
|
-
Link Properties.
|
|
34
|
+
"""Link Properties.
|
|
36
35
|
|
|
37
36
|
https://drafts.opds.io/schema/properties.schema.json
|
|
38
37
|
"""
|
|
39
38
|
|
|
40
39
|
number_of_items = IntegerField(read_only=True, required=False)
|
|
41
|
-
# price = OPDS2PriceSerializer(read_only=True, required=False)
|
|
42
|
-
# indirect_aquisition = OPDS2AcquisitionObjectSerializer(
|
|
43
|
-
# read_only=True, many=True, required=False
|
|
44
|
-
# )
|
|
45
|
-
# holds = OPDS2HoldsSerializer(read_only=True, required=False)
|
|
46
|
-
# copies = OPDS2CopiesSerializer(read_only=True, required=False)
|
|
47
|
-
# availability = OPDS2AvailabilitySerializer(read_only=True, required=False)
|
|
40
|
+
# price = OPDS2PriceSerializer(read_only=True, required=False)
|
|
41
|
+
# indirect_aquisition = OPDS2AcquisitionObjectSerializer(
|
|
42
|
+
# read_only=True, many=True, required=False
|
|
43
|
+
# )
|
|
44
|
+
# holds = OPDS2HoldsSerializer(read_only=True, required=False)
|
|
45
|
+
# copies = OPDS2CopiesSerializer(read_only=True, required=False)
|
|
46
|
+
# availability = OPDS2AvailabilitySerializer(read_only=True, required=False)
|
|
48
47
|
authenticate = OPSD2AuthenticateSerializer(required=False)
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
class OPDS2LinkSerializer(OPSD2AuthenticateSerializer):
|
|
52
|
-
"""
|
|
53
|
-
Link.
|
|
51
|
+
"""Link.
|
|
54
52
|
|
|
55
53
|
https://readium.org/webpub-manifest/schema/link.schema.json
|
|
56
54
|
"""
|
|
@@ -61,9 +59,9 @@ class OPDS2LinkSerializer(OPSD2AuthenticateSerializer):
|
|
|
61
59
|
# Uncommon
|
|
62
60
|
height = IntegerField(read_only=True, required=False)
|
|
63
61
|
width = IntegerField(read_only=True, required=False)
|
|
64
|
-
# bitrate = IntegerField(read_only=True, required=False)
|
|
65
|
-
# duration = IntegerField(read_only=True, required=False)
|
|
66
|
-
# language = CharField(many=True, read_only=True, required=False)
|
|
62
|
+
# bitrate = IntegerField(read_only=True, required=False)
|
|
63
|
+
# duration = IntegerField(read_only=True, required=False)
|
|
64
|
+
# language = CharField(many=True, read_only=True, required=False)
|
|
67
65
|
alternate = ListField(child=CharField(), read_only=True, required=False)
|
|
68
66
|
children = ListField(child=CharField(), read_only=True, required=False)
|
|
69
67
|
properties = OPDS2LinkPropertiesSerializer(read_only=True, required=False)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
OPDS v2 Progression Serializer.
|
|
1
|
+
"""OPDS v2 Progression Serializer.
|
|
3
2
|
|
|
4
3
|
https://github.com/opds-community/drafts/discussions/67
|
|
5
4
|
"""
|
|
@@ -54,8 +53,7 @@ class OPDS2ProgressionLocatorSerializer(Serializer):
|
|
|
54
53
|
|
|
55
54
|
|
|
56
55
|
class OPDS2ProgressionSerializer(Serializer):
|
|
57
|
-
"""
|
|
58
|
-
Progression.
|
|
56
|
+
"""Progression.
|
|
59
57
|
|
|
60
58
|
https://github.com/opds-community/drafts/discussions/67#discussioncomment-6414507
|
|
61
59
|
"""
|
|
@@ -22,24 +22,22 @@ class OPDS2FeedMetadataSerializer(OPDS2MetadataSerializer):
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class OPDS2ContributorObjectSerializer(Serializer):
|
|
25
|
-
"""
|
|
26
|
-
Contributor Object.
|
|
25
|
+
"""Contributor Object.
|
|
27
26
|
|
|
28
27
|
https://readium.org/webpub-manifest/schema/contributor-object.schema.json
|
|
29
28
|
"""
|
|
30
29
|
|
|
31
30
|
name = CharField(read_only=True)
|
|
32
|
-
# identifier= CharField(read_only=True, required=False)
|
|
33
|
-
# sort_as = CharField(read_only=True, required=False)
|
|
31
|
+
# identifier= CharField(read_only=True, required=False)
|
|
32
|
+
# sort_as = CharField(read_only=True, required=False)
|
|
34
33
|
role = CharField(read_only=True, source="role_name")
|
|
35
|
-
# role = CharListField(read_only=True)
|
|
36
|
-
# position = IntegerField(read_only=True, required=False)
|
|
37
|
-
# links = LinkListField(read_only=True)
|
|
34
|
+
# role = CharListField(read_only=True)
|
|
35
|
+
# position = IntegerField(read_only=True, required=False)
|
|
36
|
+
# links = LinkListField(read_only=True)
|
|
38
37
|
|
|
39
38
|
|
|
40
39
|
class OPDS2PublicationMetadataSerializer(OPDS2MetadataSerializer):
|
|
41
|
-
"""
|
|
42
|
-
Metadata for publications.
|
|
40
|
+
"""Metadata for publications.
|
|
43
41
|
|
|
44
42
|
https://readium.org/webpub-manifest/schema/metadata.schema.json
|
|
45
43
|
"""
|
|
@@ -51,17 +49,17 @@ class OPDS2PublicationMetadataSerializer(OPDS2MetadataSerializer):
|
|
|
51
49
|
language = CharField(read_only=True, required=False)
|
|
52
50
|
published = DateField(read_only=True, required=False)
|
|
53
51
|
number_of_pages = IntegerField(read_only=True, required=False)
|
|
54
|
-
# reading_progression = ChoiceField()
|
|
52
|
+
# reading_progression = ChoiceField()
|
|
55
53
|
|
|
56
54
|
#####################
|
|
57
55
|
# Extended metadata #
|
|
58
56
|
#####################
|
|
59
57
|
subject = ListField(child=CharField(), read_only=True, required=False)
|
|
60
58
|
author = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
61
|
-
# translator = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
59
|
+
# translator = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
62
60
|
editor = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
63
61
|
artist = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
64
|
-
# illustrator = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
62
|
+
# illustrator = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
65
63
|
letterer = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
66
64
|
peniciller = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
67
65
|
colorist = OPDS2ContributorObjectSerializer(many=True, required=False)
|
|
@@ -70,8 +68,7 @@ class OPDS2PublicationMetadataSerializer(OPDS2MetadataSerializer):
|
|
|
70
68
|
|
|
71
69
|
|
|
72
70
|
class OPDS2PublicationSerializer(OPDS2FacetSerializer):
|
|
73
|
-
"""
|
|
74
|
-
Publication.
|
|
71
|
+
"""Publication.
|
|
75
72
|
|
|
76
73
|
https://drafts.opds.io/schema/publication.schema.json
|
|
77
74
|
"""
|
|
@@ -7,8 +7,7 @@ from codex.serializers.opds.v2.links import OPDS2LinkListField
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class RecursiveField(Serializer):
|
|
10
|
-
"""
|
|
11
|
-
A recursive field type.
|
|
10
|
+
"""A recursive field type.
|
|
12
11
|
|
|
13
12
|
There is a more comprehensive solution at
|
|
14
13
|
https://pypi.org/project/djangorestframework-recursive/
|
|
@@ -18,13 +17,12 @@ class RecursiveField(Serializer):
|
|
|
18
17
|
"""Represent with own class."""
|
|
19
18
|
parent = self.parent
|
|
20
19
|
# Should not be ignored but is currently unused
|
|
21
|
-
serializer = parent.parent.__class__(instance, context=self.context)
|
|
20
|
+
serializer = parent.parent.__class__(instance, context=self.context) # type: ignore
|
|
22
21
|
return serializer.data
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
class OPDS2PriceSerializer(Serializer):
|
|
26
|
-
"""
|
|
27
|
-
Prices.
|
|
25
|
+
"""Prices.
|
|
28
26
|
|
|
29
27
|
https://drafts.opds.io/schema/properties.schema.json
|
|
30
28
|
"""
|
|
@@ -35,8 +33,7 @@ class OPDS2PriceSerializer(Serializer):
|
|
|
35
33
|
|
|
36
34
|
|
|
37
35
|
class OPDS2HoldsSerializer(Serializer):
|
|
38
|
-
"""
|
|
39
|
-
Holds.
|
|
36
|
+
"""Holds.
|
|
40
37
|
|
|
41
38
|
https://drafts.opds.io/schema/properties.schema.json
|
|
42
39
|
"""
|
|
@@ -46,8 +43,7 @@ class OPDS2HoldsSerializer(Serializer):
|
|
|
46
43
|
|
|
47
44
|
|
|
48
45
|
class OPDS2CopiesSerializer(Serializer):
|
|
49
|
-
"""
|
|
50
|
-
Copies.
|
|
46
|
+
"""Copies.
|
|
51
47
|
|
|
52
48
|
https://drafts.opds.io/schema/properties.schema.json
|
|
53
49
|
"""
|
|
@@ -57,8 +53,7 @@ class OPDS2CopiesSerializer(Serializer):
|
|
|
57
53
|
|
|
58
54
|
|
|
59
55
|
class OPDS2AcquisitionObjectSerializer(Serializer):
|
|
60
|
-
"""
|
|
61
|
-
Acquisition Object.
|
|
56
|
+
"""Acquisition Object.
|
|
62
57
|
|
|
63
58
|
https://drafts.opds.io/schema/acquisition-object.schema.json
|
|
64
59
|
"""
|
|
@@ -68,8 +63,7 @@ class OPDS2AcquisitionObjectSerializer(Serializer):
|
|
|
68
63
|
|
|
69
64
|
|
|
70
65
|
class OPDS2ProfileSerializer(Serializer):
|
|
71
|
-
"""
|
|
72
|
-
Profile.
|
|
66
|
+
"""Profile.
|
|
73
67
|
|
|
74
68
|
https://drafts.opds.io/schema/profile.schema.json
|
|
75
69
|
"""
|
|
@@ -82,8 +76,7 @@ class OPDS2ProfileSerializer(Serializer):
|
|
|
82
76
|
|
|
83
77
|
|
|
84
78
|
class OPDS2AvailabilitySerializer(Serializer):
|
|
85
|
-
"""
|
|
86
|
-
Availability.
|
|
79
|
+
"""Availability.
|
|
87
80
|
|
|
88
81
|
https://drafts.opds.io/schema/properties.schema.json
|
|
89
82
|
"""
|
codex/serializers/route.py
CHANGED
|
@@ -30,9 +30,9 @@ class SimpleRouteSerializer(Serializer):
|
|
|
30
30
|
pks = instance.get("pks")
|
|
31
31
|
if isinstance(pks, str):
|
|
32
32
|
pks = tuple(sorted(int(pk) for pk in pks.split(",")))
|
|
33
|
-
if 0 in pks:
|
|
33
|
+
if 0 in pks: # type: ignore
|
|
34
34
|
pks = ()
|
|
35
|
-
instance["pks"] = tuple(pks)
|
|
35
|
+
instance["pks"] = tuple(pks) # type: ignore
|
|
36
36
|
except ValueError:
|
|
37
37
|
instance["pks"] = ()
|
|
38
38
|
return instance
|
codex/settings/settings.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Django settings for codex project.
|
|
1
|
+
"""Django settings for codex project.
|
|
3
2
|
|
|
4
3
|
Generated by 'django-admin startproject' using Django 3.0.3.
|
|
5
4
|
|
|
@@ -11,7 +10,7 @@ https://docs.djangoproject.com/en/dev/ref/settings/
|
|
|
11
10
|
"""
|
|
12
11
|
|
|
13
12
|
import logging
|
|
14
|
-
from logging import
|
|
13
|
+
from logging import WARN, getLogger
|
|
15
14
|
from os import environ
|
|
16
15
|
from pathlib import Path
|
|
17
16
|
from types import MappingProxyType
|
|
@@ -153,7 +152,7 @@ if DEBUG:
|
|
|
153
152
|
"nplusone.ext.django.NPlusOneMiddleware",
|
|
154
153
|
]
|
|
155
154
|
NPLUSONE_LOGGER = getLogger("nplusone")
|
|
156
|
-
NPLUSONE_LOG_LEVEL =
|
|
155
|
+
NPLUSONE_LOG_LEVEL = WARN
|
|
157
156
|
|
|
158
157
|
if LOG_RESPONSE_TIME:
|
|
159
158
|
MIDDLEWARE += [
|
codex/signals/django_signals.py
CHANGED
codex/static_root/assets/{VCheckbox-Dv6fwaDb.56abbfb00c8a.js → VCheckbox-BV02IXFk.7b1ac0cc0c68.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as A,V as t}from"./VCheckboxBtn-
|
|
1
|
+
import{m as A,V as t}from"./VCheckboxBtn-DRCMElDO.js";import{g as F,u as I,h as l}from"./VSelectionControl-BJm6ORIw.js";import{p as B,o as U,g as R,b as D,bu as M,c as N,u as $,bv as j,a as u,m as r}from"./main-DTplblFl.js";const q=B({...F(),...U(A(),["inline"])},"VCheckbox"),G=R()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=M(),b=N(()=>e.id||`checkbox-${V}`);return $(()=>{const[p,v]=j(d),f=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},p,f,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:b.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:h,messagesId:x,isDisabled:P,isReadonly:C,isValid:g}=o;return u(t,r(k,{id:h.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},v,{error:g.value===!1,modelValue:s.value,"onUpdate:modelValue":y=>s.value=y,onFocus:i,onBlur:m}),a)}})}),{}}});export{G as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as A,V as t}from"./VCheckboxBtn-
|
|
1
|
+
import{m as A,V as t}from"./VCheckboxBtn-DRCMElDO.js";import{g as F,u as I,h as l}from"./VSelectionControl-BJm6ORIw.js";import{p as B,o as U,g as R,b as D,bu as M,c as N,u as $,bv as j,a as u,m as r}from"./main-DTplblFl.js";const q=B({...F(),...U(A(),["inline"])},"VCheckbox"),G=R()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=M(),b=N(()=>e.id||`checkbox-${V}`);return $(()=>{const[p,v]=j(d),f=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},p,f,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:b.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:h,messagesId:x,isDisabled:P,isReadonly:C,isValid:g}=o;return u(t,r(k,{id:h.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},v,{error:g.value===!1,modelValue:s.value,"onUpdate:modelValue":y=>s.value=y,onFocus:i,onBlur:m}),a)}})}),{}}});export{G as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as f,l as a}from"./VSelectionControl-
|
|
1
|
+
import{k as f,l as a}from"./VSelectionControl-BJm6ORIw.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-DTplblFl.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(o){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return I(()=>{const o=x(a.filterProps(e),["modelValue"]);return b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as f,l as a}from"./VSelectionControl-
|
|
1
|
+
import{k as f,l as a}from"./VSelectionControl-BJm6ORIw.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-DTplblFl.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(o){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return I(()=>{const o=x(a.filterProps(e),["modelValue"]);return b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
|
|
Binary file
|
|
Binary file
|