codex 1.8.9__py3-none-any.whl → 1.8.11__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/librarian/bookmark/latest_version.py +2 -6
- codex/librarian/librariand.py +5 -3
- codex/librarian/restarter/restarter.py +6 -9
- codex/librarian/scribe/importer/init.py +4 -4
- codex/librarian/scribe/importer/link/many_to_many.py +1 -0
- codex/librarian/scribe/importer/link/prepare.py +1 -3
- codex/librarian/scribe/importer/search/sync_m2m.py +28 -27
- codex/librarian/scribe/importer/search/update.py +3 -1
- codex/librarian/scribe/janitor/adopt_folders.py +2 -7
- codex/librarian/scribe/janitor/integrity.py +3 -8
- codex/librarian/scribe/janitor/update.py +1 -1
- codex/librarian/scribe/lazy_importer.py +2 -6
- codex/librarian/scribe/search/optimize.py +4 -7
- codex/librarian/scribe/timestamp_update.py +2 -6
- codex/librarian/worker.py +27 -0
- codex/static_root/assets/{VCheckbox-BI6iNIZR.0d8e2dbdeb09.js → VCheckbox-yJKLwTHL.c95ec3575cfc.js} +1 -1
- codex/static_root/assets/VCheckbox-yJKLwTHL.c95ec3575cfc.js.br +0 -0
- codex/static_root/assets/VCheckbox-yJKLwTHL.c95ec3575cfc.js.gz +0 -0
- codex/static_root/assets/{VCheckbox-BI6iNIZR.js → VCheckbox-yJKLwTHL.js} +1 -1
- codex/static_root/assets/VCheckbox-yJKLwTHL.js.br +0 -0
- codex/static_root/assets/VCheckbox-yJKLwTHL.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-D_jRtvPm.7d253b804bed.js → VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-D_jRtvPm.js → VCheckboxBtn-dB9xmqwr.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-dB9xmqwr.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-dB9xmqwr.js.gz +0 -0
- codex/static_root/assets/{VCombobox-lKOmP-Yq.85384eec8906.js → VCombobox-DOGFHYmN.88d1f3799dc6.js} +1 -1
- codex/static_root/assets/VCombobox-DOGFHYmN.88d1f3799dc6.js.br +0 -0
- codex/static_root/assets/VCombobox-DOGFHYmN.88d1f3799dc6.js.gz +0 -0
- codex/static_root/assets/{VCombobox-lKOmP-Yq.js → VCombobox-DOGFHYmN.js} +1 -1
- codex/static_root/assets/VCombobox-DOGFHYmN.js.br +0 -0
- codex/static_root/assets/VCombobox-DOGFHYmN.js.gz +0 -0
- codex/static_root/assets/{VDialog-DwpHVF2o.f988d86f776c.js → VDialog-DhWYW70x.d777b17f7fda.js} +1 -1
- codex/static_root/assets/VDialog-DhWYW70x.d777b17f7fda.js.br +0 -0
- codex/static_root/assets/VDialog-DhWYW70x.d777b17f7fda.js.gz +0 -0
- codex/static_root/assets/{VDialog-DwpHVF2o.js → VDialog-DhWYW70x.js} +1 -1
- codex/static_root/assets/VDialog-DhWYW70x.js.br +0 -0
- codex/static_root/assets/VDialog-DhWYW70x.js.gz +0 -0
- codex/static_root/assets/{VDivider-CGh9hHPI.8fac42f0d85c.js → VDivider-D5g1AzdV.2e3bd93fadb2.js} +1 -1
- codex/static_root/assets/VDivider-D5g1AzdV.2e3bd93fadb2.js.br +0 -0
- codex/static_root/assets/VDivider-D5g1AzdV.2e3bd93fadb2.js.gz +0 -0
- codex/static_root/assets/{VDivider-CGh9hHPI.js → VDivider-D5g1AzdV.js} +1 -1
- codex/static_root/assets/VDivider-D5g1AzdV.js.br +0 -0
- codex/static_root/assets/VDivider-D5g1AzdV.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-DFd72CFw.b232fadc31db.js → VExpansionPanels-DGwHreC2.f97c0ffe01ac.js} +1 -1
- codex/static_root/assets/VExpansionPanels-DGwHreC2.f97c0ffe01ac.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DGwHreC2.f97c0ffe01ac.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-DFd72CFw.js → VExpansionPanels-DGwHreC2.js} +1 -1
- codex/static_root/assets/VExpansionPanels-DGwHreC2.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DGwHreC2.js.gz +0 -0
- codex/static_root/assets/{VForm-C7W9kTbJ.02412068f578.js → VForm-bSlWOF1d.b3fd7d7fe68b.js} +1 -1
- codex/static_root/assets/VForm-bSlWOF1d.b3fd7d7fe68b.js.br +0 -0
- codex/static_root/assets/VForm-bSlWOF1d.b3fd7d7fe68b.js.gz +0 -0
- codex/static_root/assets/{VForm-C7W9kTbJ.js → VForm-bSlWOF1d.js} +1 -1
- codex/static_root/assets/VForm-bSlWOF1d.js.br +0 -0
- codex/static_root/assets/VForm-bSlWOF1d.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-E0wBXF2E.fd8052060d44.js → VRadioGroup-Ctc2D2fE.72e42da00617.js} +1 -1
- codex/static_root/assets/VRadioGroup-Ctc2D2fE.72e42da00617.js.br +0 -0
- codex/static_root/assets/VRadioGroup-Ctc2D2fE.72e42da00617.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-E0wBXF2E.js → VRadioGroup-Ctc2D2fE.js} +1 -1
- codex/static_root/assets/VRadioGroup-Ctc2D2fE.js.br +0 -0
- codex/static_root/assets/VRadioGroup-Ctc2D2fE.js.gz +0 -0
- codex/static_root/assets/{VSelect-DLKX5Mr6.d84e1c59fa18.js → VSelect-CHbtIx-x.52ecf0514711.js} +1 -1
- codex/static_root/assets/VSelect-CHbtIx-x.52ecf0514711.js.br +0 -0
- codex/static_root/assets/VSelect-CHbtIx-x.52ecf0514711.js.gz +0 -0
- codex/static_root/assets/{VSelect-DLKX5Mr6.js → VSelect-CHbtIx-x.js} +1 -1
- codex/static_root/assets/VSelect-CHbtIx-x.js.br +0 -0
- codex/static_root/assets/VSelect-CHbtIx-x.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-B8hJUO0p.js → VSelectionControl-BI__4iTT.fa63635e3cbb.js} +1 -1
- codex/static_root/assets/VSelectionControl-BI__4iTT.fa63635e3cbb.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BI__4iTT.fa63635e3cbb.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-B8hJUO0p.1dda62fe0677.js → VSelectionControl-BI__4iTT.js} +1 -1
- codex/static_root/assets/VSelectionControl-BI__4iTT.js.br +0 -0
- codex/static_root/assets/VSelectionControl-BI__4iTT.js.gz +0 -0
- codex/static_root/assets/{VTable-D0uqeonL.a9897896b818.js → VTable-CqSQnAGe.686a17da355c.js} +1 -1
- codex/static_root/assets/VTable-CqSQnAGe.686a17da355c.js.br +0 -0
- codex/static_root/assets/VTable-CqSQnAGe.686a17da355c.js.gz +0 -0
- codex/static_root/assets/{VTable-D0uqeonL.js → VTable-CqSQnAGe.js} +1 -1
- codex/static_root/assets/VTable-CqSQnAGe.js.br +0 -0
- codex/static_root/assets/VTable-CqSQnAGe.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-DnxUM-gG.242f232488e3.js → VWindowItem-D5CtN0yj.c8b34951a8de.js} +1 -1
- codex/static_root/assets/VWindowItem-D5CtN0yj.c8b34951a8de.js.br +0 -0
- codex/static_root/assets/VWindowItem-D5CtN0yj.c8b34951a8de.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-DnxUM-gG.js → VWindowItem-D5CtN0yj.js} +1 -1
- codex/static_root/assets/VWindowItem-D5CtN0yj.js.br +0 -0
- codex/static_root/assets/VWindowItem-D5CtN0yj.js.gz +0 -0
- codex/static_root/assets/{admin-DmYMMUnm.58b7b9f4dadf.js → admin-CzajilVj.133c236f9c39.js} +1 -1
- codex/static_root/assets/admin-CzajilVj.133c236f9c39.js.br +0 -0
- codex/static_root/assets/admin-CzajilVj.133c236f9c39.js.gz +0 -0
- codex/static_root/assets/{admin-DmYMMUnm.js → admin-CzajilVj.js} +1 -1
- codex/static_root/assets/admin-CzajilVj.js.br +0 -0
- codex/static_root/assets/admin-CzajilVj.js.gz +0 -0
- codex/static_root/assets/{admin-B9U01BEM.7c8747c54803.js → admin-D5DpivSr.0f7dadb50319.js} +1 -1
- codex/static_root/assets/admin-D5DpivSr.0f7dadb50319.js.br +0 -0
- codex/static_root/assets/admin-D5DpivSr.0f7dadb50319.js.gz +0 -0
- codex/static_root/assets/{admin-B9U01BEM.js → admin-D5DpivSr.js} +1 -1
- codex/static_root/assets/admin-D5DpivSr.js.br +0 -0
- codex/static_root/assets/admin-D5DpivSr.js.gz +0 -0
- codex/static_root/assets/{admin-menu-CuNW4Urn.25020f907bb8.js → admin-menu-MN0IHt2k.7ee7c492bfa2.js} +1 -1
- codex/static_root/assets/admin-menu-MN0IHt2k.7ee7c492bfa2.js.br +0 -0
- codex/static_root/assets/admin-menu-MN0IHt2k.7ee7c492bfa2.js.gz +0 -0
- codex/static_root/assets/{admin-menu-CuNW4Urn.js → admin-menu-MN0IHt2k.js} +1 -1
- codex/static_root/assets/admin-menu-MN0IHt2k.js.br +0 -0
- codex/static_root/assets/admin-menu-MN0IHt2k.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js → admin-settings-button-progress-CwHb2532.1011e5de0a37.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-CwHb2532.1011e5de0a37.js.br +1 -0
- codex/static_root/assets/admin-settings-button-progress-CwHb2532.1011e5de0a37.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-Bzr-gkG2.js → admin-settings-button-progress-CwHb2532.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-CwHb2532.js.br +1 -0
- codex/static_root/assets/admin-settings-button-progress-CwHb2532.js.gz +0 -0
- codex/static_root/assets/{browser-TRzEFz_k.css → browser-CS6VSg0_.9a6e8eda0520.css} +1 -1
- codex/static_root/assets/browser-CS6VSg0_.9a6e8eda0520.css.br +0 -0
- codex/static_root/assets/browser-CS6VSg0_.9a6e8eda0520.css.gz +0 -0
- codex/static_root/assets/{browser-TRzEFz_k.e8ae750c4a41.css → browser-CS6VSg0_.css} +1 -1
- codex/static_root/assets/browser-CS6VSg0_.css.br +0 -0
- codex/static_root/assets/browser-CS6VSg0_.css.gz +0 -0
- codex/static_root/assets/{browser-CIw7xQ-1.js → browser-CpLIkclU.9af33deffa94.js} +1 -1
- codex/static_root/assets/browser-CpLIkclU.9af33deffa94.js.br +0 -0
- codex/static_root/assets/browser-CpLIkclU.9af33deffa94.js.gz +0 -0
- codex/static_root/assets/{browser-CIw7xQ-1.8d16d2b270d5.js → browser-CpLIkclU.js} +1 -1
- codex/static_root/assets/browser-CpLIkclU.js.br +0 -0
- codex/static_root/assets/browser-CpLIkclU.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-CXaB7k3y.01788b2cb59e.js → change-password-dialog-C2JNp2wz.93755e10c75c.js} +1 -1
- codex/static_root/assets/change-password-dialog-C2JNp2wz.93755e10c75c.js.br +0 -0
- codex/static_root/assets/change-password-dialog-C2JNp2wz.93755e10c75c.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-CXaB7k3y.js → change-password-dialog-C2JNp2wz.js} +1 -1
- codex/static_root/assets/change-password-dialog-C2JNp2wz.js.br +0 -0
- codex/static_root/assets/change-password-dialog-C2JNp2wz.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-gXeRF5bD.4ae6e7a9790a.js → confirm-dialog-g9rA18o3.cbfb51c3f0ba.js} +1 -1
- codex/static_root/assets/confirm-dialog-g9rA18o3.cbfb51c3f0ba.js.br +0 -0
- codex/static_root/assets/confirm-dialog-g9rA18o3.cbfb51c3f0ba.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-gXeRF5bD.js → confirm-dialog-g9rA18o3.js} +1 -1
- codex/static_root/assets/confirm-dialog-g9rA18o3.js.br +0 -0
- codex/static_root/assets/confirm-dialog-g9rA18o3.js.gz +0 -0
- codex/static_root/assets/{datetime-column-C5ZBHxV-.35957e684ec2.js → datetime-column-B6pIWef2.59b5ccbe4a21.js} +1 -1
- codex/static_root/assets/datetime-column-B6pIWef2.59b5ccbe4a21.js.br +3 -0
- codex/static_root/assets/datetime-column-B6pIWef2.59b5ccbe4a21.js.gz +0 -0
- codex/static_root/assets/{datetime-column-C5ZBHxV-.js → datetime-column-B6pIWef2.js} +1 -1
- codex/static_root/assets/datetime-column-B6pIWef2.js.br +3 -0
- codex/static_root/assets/datetime-column-B6pIWef2.js.gz +0 -0
- codex/static_root/assets/{filter-CQ83UjMF.7cd979df64da.js → filter-BOz2i2LB.be5d6981c97b.js} +1 -1
- codex/static_root/assets/filter-BOz2i2LB.be5d6981c97b.js.br +0 -0
- codex/static_root/assets/filter-BOz2i2LB.be5d6981c97b.js.gz +0 -0
- codex/static_root/assets/{filter-CQ83UjMF.js → filter-BOz2i2LB.js} +1 -1
- codex/static_root/assets/filter-BOz2i2LB.js.br +0 -0
- codex/static_root/assets/filter-BOz2i2LB.js.gz +0 -0
- codex/static_root/assets/{flag-tab-CN3Y0PZS.f5f7122a015e.js → flag-tab-EZpGBixK.e188cc5b4791.js} +1 -1
- codex/static_root/assets/flag-tab-EZpGBixK.e188cc5b4791.js.br +0 -0
- codex/static_root/assets/flag-tab-EZpGBixK.e188cc5b4791.js.gz +0 -0
- codex/static_root/assets/{flag-tab-CN3Y0PZS.js → flag-tab-EZpGBixK.js} +1 -1
- codex/static_root/assets/flag-tab-EZpGBixK.js.br +0 -0
- codex/static_root/assets/flag-tab-EZpGBixK.js.gz +0 -0
- codex/static_root/assets/{forwardRefs-DBxFdh0r.js → forwardRefs-BotGMO80.9b4b85f9c240.js} +1 -1
- codex/static_root/assets/forwardRefs-BotGMO80.9b4b85f9c240.js.br +0 -0
- codex/static_root/assets/forwardRefs-BotGMO80.9b4b85f9c240.js.gz +0 -0
- codex/static_root/assets/{forwardRefs-DBxFdh0r.03d9552a8e4c.js → forwardRefs-BotGMO80.js} +1 -1
- codex/static_root/assets/forwardRefs-BotGMO80.js.br +0 -0
- codex/static_root/assets/forwardRefs-BotGMO80.js.gz +0 -0
- codex/static_root/assets/{group-tab-DMPL6FiK.82f53e5c353a.js → group-tab-46Ic9z7f.ef96094e5106.js} +1 -1
- codex/static_root/assets/group-tab-46Ic9z7f.ef96094e5106.js.br +0 -0
- codex/static_root/assets/group-tab-46Ic9z7f.ef96094e5106.js.gz +0 -0
- codex/static_root/assets/{group-tab-DMPL6FiK.js → group-tab-46Ic9z7f.js} +1 -1
- codex/static_root/assets/group-tab-46Ic9z7f.js.br +0 -0
- codex/static_root/assets/group-tab-46Ic9z7f.js.gz +0 -0
- codex/static_root/assets/{http-error-DgJ8-SFZ.da2fe4d026ce.js → http-error-BcTquFdz.9667604bb28b.js} +1 -1
- codex/static_root/assets/http-error-BcTquFdz.9667604bb28b.js.br +0 -0
- codex/static_root/assets/http-error-BcTquFdz.9667604bb28b.js.gz +0 -0
- codex/static_root/assets/{http-error-DgJ8-SFZ.js → http-error-BcTquFdz.js} +1 -1
- codex/static_root/assets/http-error-BcTquFdz.js.br +0 -0
- codex/static_root/assets/http-error-BcTquFdz.js.gz +0 -0
- codex/static_root/assets/{index-CQ0ue0KC.b38e465abad4.js → index-DDX_hxwV.4dbe80b8783c.js} +1 -1
- codex/static_root/assets/index-DDX_hxwV.4dbe80b8783c.js.br +0 -0
- codex/static_root/assets/index-DDX_hxwV.4dbe80b8783c.js.gz +0 -0
- codex/static_root/assets/{index-CQ0ue0KC.js → index-DDX_hxwV.js} +1 -1
- codex/static_root/assets/index-DDX_hxwV.js.br +0 -0
- codex/static_root/assets/index-DDX_hxwV.js.gz +0 -0
- codex/static_root/assets/{library-tab-CfuZgnol.880ba8bd0149.js → library-tab-2DEjDVUD.f23bcd6e7e25.js} +1 -1
- codex/static_root/assets/library-tab-2DEjDVUD.f23bcd6e7e25.js.br +0 -0
- codex/static_root/assets/library-tab-2DEjDVUD.f23bcd6e7e25.js.gz +0 -0
- codex/static_root/assets/{library-tab-CfuZgnol.js → library-tab-2DEjDVUD.js} +1 -1
- codex/static_root/assets/library-tab-2DEjDVUD.js.br +0 -0
- codex/static_root/assets/library-tab-2DEjDVUD.js.gz +0 -0
- codex/static_root/assets/{main-G8n9PNCf.cad6fa53a574.js → main-CdKoY_uF.e9128a1200b4.js} +3 -3
- codex/static_root/assets/main-CdKoY_uF.e9128a1200b4.js.br +0 -0
- codex/static_root/assets/main-CdKoY_uF.e9128a1200b4.js.gz +0 -0
- codex/static_root/assets/{main-G8n9PNCf.js → main-CdKoY_uF.js} +3 -3
- codex/static_root/assets/main-CdKoY_uF.js.br +0 -0
- codex/static_root/assets/main-CdKoY_uF.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js +1 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.js +1 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-D928P3tE.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-0vkF7yjo.js → pagination-toolbar-YZ6fysEV.3064a17ac385.js} +1 -1
- codex/static_root/assets/pagination-toolbar-YZ6fysEV.3064a17ac385.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-YZ6fysEV.3064a17ac385.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-0vkF7yjo.d32720f76776.js → pagination-toolbar-YZ6fysEV.js} +1 -1
- codex/static_root/assets/pagination-toolbar-YZ6fysEV.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-YZ6fysEV.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-CHmFdwy6.4142a4f31d20.js → pdf-doc-CckhLi0L.fb5b866531f4.js} +1 -1
- codex/static_root/assets/pdf-doc-CckhLi0L.fb5b866531f4.js.br +0 -0
- codex/static_root/assets/pdf-doc-CckhLi0L.fb5b866531f4.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-CHmFdwy6.js → pdf-doc-CckhLi0L.js} +1 -1
- codex/static_root/assets/pdf-doc-CckhLi0L.js.br +0 -0
- codex/static_root/assets/pdf-doc-CckhLi0L.js.gz +0 -0
- codex/static_root/assets/{reader-YIWmNjj6.c96fc7891aec.js → reader-C4ZyLa6d.26c257a96237.js} +2 -2
- codex/static_root/assets/reader-C4ZyLa6d.26c257a96237.js.br +0 -0
- codex/static_root/assets/reader-C4ZyLa6d.26c257a96237.js.gz +0 -0
- codex/static_root/assets/{reader-YIWmNjj6.js → reader-C4ZyLa6d.js} +2 -2
- codex/static_root/assets/reader-C4ZyLa6d.js.br +0 -0
- codex/static_root/assets/reader-C4ZyLa6d.js.gz +0 -0
- codex/static_root/assets/{relation-chips-DzoiGrOj.95f663c6c18d.js → relation-chips-B7Qn-kfx.a8ee6d66d03e.js} +1 -1
- codex/static_root/assets/relation-chips-B7Qn-kfx.a8ee6d66d03e.js.br +0 -0
- codex/static_root/assets/relation-chips-B7Qn-kfx.a8ee6d66d03e.js.gz +0 -0
- codex/static_root/assets/{relation-chips-DzoiGrOj.js → relation-chips-B7Qn-kfx.js} +1 -1
- codex/static_root/assets/relation-chips-B7Qn-kfx.js.br +0 -0
- codex/static_root/assets/relation-chips-B7Qn-kfx.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-CUC-r4sg.e019f5467d25.js → settings-drawer-f_0NPvmu.3a94ab493b85.js} +2 -2
- codex/static_root/assets/settings-drawer-f_0NPvmu.3a94ab493b85.js.br +0 -0
- codex/static_root/assets/settings-drawer-f_0NPvmu.3a94ab493b85.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-CUC-r4sg.js → settings-drawer-f_0NPvmu.js} +2 -2
- codex/static_root/assets/settings-drawer-f_0NPvmu.js.br +0 -0
- codex/static_root/assets/settings-drawer-f_0NPvmu.js.gz +0 -0
- codex/static_root/assets/{ssrBoot-D7foQ-7h.31c07ef6f646.js → ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js} +1 -1
- codex/static_root/assets/ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js.br +0 -0
- codex/static_root/assets/ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js.gz +0 -0
- codex/static_root/assets/{ssrBoot-D7foQ-7h.js → ssrBoot-Ehaw9KYw.js} +1 -1
- codex/static_root/assets/ssrBoot-Ehaw9KYw.js.br +0 -0
- codex/static_root/assets/ssrBoot-Ehaw9KYw.js.gz +0 -0
- codex/static_root/assets/{stats-tab-BSy-9tZm.2a7560872f5c.js → stats-tab-73FDJsc7.f45ecc58f474.js} +1 -1
- codex/static_root/assets/stats-tab-73FDJsc7.f45ecc58f474.js.br +0 -0
- codex/static_root/assets/stats-tab-73FDJsc7.f45ecc58f474.js.gz +0 -0
- codex/static_root/assets/{stats-tab-BSy-9tZm.js → stats-tab-73FDJsc7.js} +1 -1
- codex/static_root/assets/stats-tab-73FDJsc7.js.br +0 -0
- codex/static_root/assets/stats-tab-73FDJsc7.js.gz +0 -0
- codex/static_root/assets/{task-tab-Sp49fYRT.3a1aab3f3716.js → task-tab-BVYsZcvv.46b9863140a4.js} +1 -1
- codex/static_root/assets/task-tab-BVYsZcvv.46b9863140a4.js.br +0 -0
- codex/static_root/assets/task-tab-BVYsZcvv.46b9863140a4.js.gz +0 -0
- codex/static_root/assets/{task-tab-Sp49fYRT.js → task-tab-BVYsZcvv.js} +1 -1
- codex/static_root/assets/task-tab-BVYsZcvv.js.br +0 -0
- codex/static_root/assets/task-tab-BVYsZcvv.js.gz +0 -0
- codex/static_root/assets/{unauthorized-BM6KzvCy.4c114d9693c1.js → unauthorized-MOc4QcAg.96154ead3d95.js} +1 -1
- codex/static_root/assets/unauthorized-MOc4QcAg.96154ead3d95.js.br +0 -0
- codex/static_root/assets/unauthorized-MOc4QcAg.96154ead3d95.js.gz +0 -0
- codex/static_root/assets/{unauthorized-BM6KzvCy.js → unauthorized-MOc4QcAg.js} +1 -1
- codex/static_root/assets/unauthorized-MOc4QcAg.js.br +0 -0
- codex/static_root/assets/unauthorized-MOc4QcAg.js.gz +0 -0
- codex/static_root/assets/{user-tab-yQ60jtVd.ad593cc6e6ea.js → user-tab-D6T6AHAf.31cbb86e18ed.js} +1 -1
- codex/static_root/assets/user-tab-D6T6AHAf.31cbb86e18ed.js.br +0 -0
- codex/static_root/assets/user-tab-D6T6AHAf.31cbb86e18ed.js.gz +0 -0
- codex/static_root/assets/{user-tab-yQ60jtVd.js → user-tab-D6T6AHAf.js} +1 -1
- codex/static_root/assets/user-tab-D6T6AHAf.js.br +0 -0
- codex/static_root/assets/user-tab-D6T6AHAf.js.gz +0 -0
- codex/static_root/{manifest.a059c4dc5443.json → manifest.c633402500de.json} +299 -299
- codex/static_root/manifest.c633402500de.json.br +0 -0
- codex/static_root/manifest.c633402500de.json.gz +0 -0
- codex/static_root/manifest.json +299 -299
- codex/static_root/manifest.json.br +0 -0
- codex/static_root/manifest.json.gz +0 -0
- codex/static_root/staticfiles.json +1 -1
- {codex-1.8.9.dist-info → codex-1.8.11.dist-info}/METADATA +1 -1
- {codex-1.8.9.dist-info → codex-1.8.11.dist-info}/RECORD +267 -267
- codex/static_root/assets/VCheckbox-BI6iNIZR.0d8e2dbdeb09.js.br +0 -0
- codex/static_root/assets/VCheckbox-BI6iNIZR.0d8e2dbdeb09.js.gz +0 -0
- codex/static_root/assets/VCheckbox-BI6iNIZR.js.br +0 -0
- codex/static_root/assets/VCheckbox-BI6iNIZR.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-D_jRtvPm.7d253b804bed.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-D_jRtvPm.7d253b804bed.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-D_jRtvPm.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-D_jRtvPm.js.gz +0 -0
- codex/static_root/assets/VCombobox-lKOmP-Yq.85384eec8906.js.br +0 -0
- codex/static_root/assets/VCombobox-lKOmP-Yq.85384eec8906.js.gz +0 -0
- codex/static_root/assets/VCombobox-lKOmP-Yq.js.br +0 -0
- codex/static_root/assets/VCombobox-lKOmP-Yq.js.gz +0 -0
- codex/static_root/assets/VDialog-DwpHVF2o.f988d86f776c.js.br +0 -0
- codex/static_root/assets/VDialog-DwpHVF2o.f988d86f776c.js.gz +0 -0
- codex/static_root/assets/VDialog-DwpHVF2o.js.br +0 -0
- codex/static_root/assets/VDialog-DwpHVF2o.js.gz +0 -0
- codex/static_root/assets/VDivider-CGh9hHPI.8fac42f0d85c.js.br +0 -0
- codex/static_root/assets/VDivider-CGh9hHPI.8fac42f0d85c.js.gz +0 -0
- codex/static_root/assets/VDivider-CGh9hHPI.js.br +0 -0
- codex/static_root/assets/VDivider-CGh9hHPI.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-DFd72CFw.b232fadc31db.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DFd72CFw.b232fadc31db.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-DFd72CFw.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DFd72CFw.js.gz +0 -0
- codex/static_root/assets/VForm-C7W9kTbJ.02412068f578.js.br +0 -0
- codex/static_root/assets/VForm-C7W9kTbJ.02412068f578.js.gz +0 -0
- codex/static_root/assets/VForm-C7W9kTbJ.js.br +0 -0
- codex/static_root/assets/VForm-C7W9kTbJ.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-E0wBXF2E.fd8052060d44.js.br +0 -0
- codex/static_root/assets/VRadioGroup-E0wBXF2E.fd8052060d44.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-E0wBXF2E.js.br +0 -0
- codex/static_root/assets/VRadioGroup-E0wBXF2E.js.gz +0 -0
- codex/static_root/assets/VSelect-DLKX5Mr6.d84e1c59fa18.js.br +0 -0
- codex/static_root/assets/VSelect-DLKX5Mr6.d84e1c59fa18.js.gz +0 -0
- codex/static_root/assets/VSelect-DLKX5Mr6.js.br +0 -0
- codex/static_root/assets/VSelect-DLKX5Mr6.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-B8hJUO0p.1dda62fe0677.js.br +0 -0
- codex/static_root/assets/VSelectionControl-B8hJUO0p.1dda62fe0677.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-B8hJUO0p.js.br +0 -0
- codex/static_root/assets/VSelectionControl-B8hJUO0p.js.gz +0 -0
- codex/static_root/assets/VTable-D0uqeonL.a9897896b818.js.br +0 -0
- codex/static_root/assets/VTable-D0uqeonL.a9897896b818.js.gz +0 -0
- codex/static_root/assets/VTable-D0uqeonL.js.br +0 -0
- codex/static_root/assets/VTable-D0uqeonL.js.gz +0 -0
- codex/static_root/assets/VWindowItem-DnxUM-gG.242f232488e3.js.br +0 -0
- codex/static_root/assets/VWindowItem-DnxUM-gG.242f232488e3.js.gz +0 -0
- codex/static_root/assets/VWindowItem-DnxUM-gG.js.br +0 -0
- codex/static_root/assets/VWindowItem-DnxUM-gG.js.gz +0 -0
- codex/static_root/assets/admin-B9U01BEM.7c8747c54803.js.br +0 -0
- codex/static_root/assets/admin-B9U01BEM.7c8747c54803.js.gz +0 -0
- codex/static_root/assets/admin-B9U01BEM.js.br +0 -0
- codex/static_root/assets/admin-B9U01BEM.js.gz +0 -0
- codex/static_root/assets/admin-DmYMMUnm.58b7b9f4dadf.js.br +0 -0
- codex/static_root/assets/admin-DmYMMUnm.58b7b9f4dadf.js.gz +0 -0
- codex/static_root/assets/admin-DmYMMUnm.js.br +0 -0
- codex/static_root/assets/admin-DmYMMUnm.js.gz +0 -0
- codex/static_root/assets/admin-menu-CuNW4Urn.25020f907bb8.js.br +0 -0
- codex/static_root/assets/admin-menu-CuNW4Urn.25020f907bb8.js.gz +0 -0
- codex/static_root/assets/admin-menu-CuNW4Urn.js.br +0 -0
- codex/static_root/assets/admin-menu-CuNW4Urn.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js.br +0 -3
- codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.js.br +0 -3
- codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.js.gz +0 -0
- codex/static_root/assets/browser-CIw7xQ-1.8d16d2b270d5.js.br +0 -0
- codex/static_root/assets/browser-CIw7xQ-1.8d16d2b270d5.js.gz +0 -0
- codex/static_root/assets/browser-CIw7xQ-1.js.br +0 -0
- codex/static_root/assets/browser-CIw7xQ-1.js.gz +0 -0
- codex/static_root/assets/browser-TRzEFz_k.css.br +0 -0
- codex/static_root/assets/browser-TRzEFz_k.css.gz +0 -0
- codex/static_root/assets/browser-TRzEFz_k.e8ae750c4a41.css.br +0 -0
- codex/static_root/assets/browser-TRzEFz_k.e8ae750c4a41.css.gz +0 -0
- codex/static_root/assets/change-password-dialog-CXaB7k3y.01788b2cb59e.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CXaB7k3y.01788b2cb59e.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CXaB7k3y.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CXaB7k3y.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-gXeRF5bD.4ae6e7a9790a.js.br +0 -0
- codex/static_root/assets/confirm-dialog-gXeRF5bD.4ae6e7a9790a.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-gXeRF5bD.js.br +0 -0
- codex/static_root/assets/confirm-dialog-gXeRF5bD.js.gz +0 -0
- codex/static_root/assets/datetime-column-C5ZBHxV-.35957e684ec2.js.br +0 -0
- codex/static_root/assets/datetime-column-C5ZBHxV-.35957e684ec2.js.gz +0 -0
- codex/static_root/assets/datetime-column-C5ZBHxV-.js.br +0 -0
- codex/static_root/assets/datetime-column-C5ZBHxV-.js.gz +0 -0
- codex/static_root/assets/filter-CQ83UjMF.7cd979df64da.js.br +0 -0
- codex/static_root/assets/filter-CQ83UjMF.7cd979df64da.js.gz +0 -0
- codex/static_root/assets/filter-CQ83UjMF.js.br +0 -0
- codex/static_root/assets/filter-CQ83UjMF.js.gz +0 -0
- codex/static_root/assets/flag-tab-CN3Y0PZS.f5f7122a015e.js.br +0 -0
- codex/static_root/assets/flag-tab-CN3Y0PZS.f5f7122a015e.js.gz +0 -0
- codex/static_root/assets/flag-tab-CN3Y0PZS.js.br +0 -0
- codex/static_root/assets/flag-tab-CN3Y0PZS.js.gz +0 -0
- codex/static_root/assets/forwardRefs-DBxFdh0r.03d9552a8e4c.js.br +0 -0
- codex/static_root/assets/forwardRefs-DBxFdh0r.03d9552a8e4c.js.gz +0 -0
- codex/static_root/assets/forwardRefs-DBxFdh0r.js.br +0 -0
- codex/static_root/assets/forwardRefs-DBxFdh0r.js.gz +0 -0
- codex/static_root/assets/group-tab-DMPL6FiK.82f53e5c353a.js.br +0 -0
- codex/static_root/assets/group-tab-DMPL6FiK.82f53e5c353a.js.gz +0 -0
- codex/static_root/assets/group-tab-DMPL6FiK.js.br +0 -0
- codex/static_root/assets/group-tab-DMPL6FiK.js.gz +0 -0
- codex/static_root/assets/http-error-DgJ8-SFZ.da2fe4d026ce.js.br +0 -0
- codex/static_root/assets/http-error-DgJ8-SFZ.da2fe4d026ce.js.gz +0 -0
- codex/static_root/assets/http-error-DgJ8-SFZ.js.br +0 -0
- codex/static_root/assets/http-error-DgJ8-SFZ.js.gz +0 -0
- codex/static_root/assets/index-CQ0ue0KC.b38e465abad4.js.br +0 -0
- codex/static_root/assets/index-CQ0ue0KC.b38e465abad4.js.gz +0 -0
- codex/static_root/assets/index-CQ0ue0KC.js.br +0 -0
- codex/static_root/assets/index-CQ0ue0KC.js.gz +0 -0
- codex/static_root/assets/library-tab-CfuZgnol.880ba8bd0149.js.br +0 -0
- codex/static_root/assets/library-tab-CfuZgnol.880ba8bd0149.js.gz +0 -0
- codex/static_root/assets/library-tab-CfuZgnol.js.br +0 -0
- codex/static_root/assets/library-tab-CfuZgnol.js.gz +0 -0
- codex/static_root/assets/main-G8n9PNCf.cad6fa53a574.js.br +0 -0
- codex/static_root/assets/main-G8n9PNCf.cad6fa53a574.js.gz +0 -0
- codex/static_root/assets/main-G8n9PNCf.js.br +0 -0
- codex/static_root/assets/main-G8n9PNCf.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js +0 -1
- codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-BKZayLN3.js +0 -1
- codex/static_root/assets/pager-full-pdf-BKZayLN3.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-BKZayLN3.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-0vkF7yjo.d32720f76776.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-0vkF7yjo.d32720f76776.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-0vkF7yjo.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-0vkF7yjo.js.gz +0 -0
- codex/static_root/assets/pdf-doc-CHmFdwy6.4142a4f31d20.js.br +0 -0
- codex/static_root/assets/pdf-doc-CHmFdwy6.4142a4f31d20.js.gz +0 -0
- codex/static_root/assets/pdf-doc-CHmFdwy6.js.br +0 -0
- codex/static_root/assets/pdf-doc-CHmFdwy6.js.gz +0 -0
- codex/static_root/assets/reader-YIWmNjj6.c96fc7891aec.js.br +0 -0
- codex/static_root/assets/reader-YIWmNjj6.c96fc7891aec.js.gz +0 -0
- codex/static_root/assets/reader-YIWmNjj6.js.br +0 -0
- codex/static_root/assets/reader-YIWmNjj6.js.gz +0 -0
- codex/static_root/assets/relation-chips-DzoiGrOj.95f663c6c18d.js.br +0 -0
- codex/static_root/assets/relation-chips-DzoiGrOj.95f663c6c18d.js.gz +0 -0
- codex/static_root/assets/relation-chips-DzoiGrOj.js.br +0 -0
- codex/static_root/assets/relation-chips-DzoiGrOj.js.gz +0 -0
- codex/static_root/assets/settings-drawer-CUC-r4sg.e019f5467d25.js.br +0 -0
- codex/static_root/assets/settings-drawer-CUC-r4sg.e019f5467d25.js.gz +0 -0
- codex/static_root/assets/settings-drawer-CUC-r4sg.js.br +0 -0
- codex/static_root/assets/settings-drawer-CUC-r4sg.js.gz +0 -0
- codex/static_root/assets/ssrBoot-D7foQ-7h.31c07ef6f646.js.br +0 -0
- codex/static_root/assets/ssrBoot-D7foQ-7h.31c07ef6f646.js.gz +0 -0
- codex/static_root/assets/ssrBoot-D7foQ-7h.js.br +0 -0
- codex/static_root/assets/ssrBoot-D7foQ-7h.js.gz +0 -0
- codex/static_root/assets/stats-tab-BSy-9tZm.2a7560872f5c.js.br +0 -0
- codex/static_root/assets/stats-tab-BSy-9tZm.2a7560872f5c.js.gz +0 -0
- codex/static_root/assets/stats-tab-BSy-9tZm.js.br +0 -0
- codex/static_root/assets/stats-tab-BSy-9tZm.js.gz +0 -0
- codex/static_root/assets/task-tab-Sp49fYRT.3a1aab3f3716.js.br +0 -0
- codex/static_root/assets/task-tab-Sp49fYRT.3a1aab3f3716.js.gz +0 -0
- codex/static_root/assets/task-tab-Sp49fYRT.js.br +0 -0
- codex/static_root/assets/task-tab-Sp49fYRT.js.gz +0 -0
- codex/static_root/assets/unauthorized-BM6KzvCy.4c114d9693c1.js.br +0 -0
- codex/static_root/assets/unauthorized-BM6KzvCy.4c114d9693c1.js.gz +0 -0
- codex/static_root/assets/unauthorized-BM6KzvCy.js.br +0 -0
- codex/static_root/assets/unauthorized-BM6KzvCy.js.gz +0 -0
- codex/static_root/assets/user-tab-yQ60jtVd.ad593cc6e6ea.js.br +0 -0
- codex/static_root/assets/user-tab-yQ60jtVd.ad593cc6e6ea.js.gz +0 -0
- codex/static_root/assets/user-tab-yQ60jtVd.js.br +0 -0
- codex/static_root/assets/user-tab-yQ60jtVd.js.gz +0 -0
- codex/static_root/manifest.a059c4dc5443.json.br +0 -0
- codex/static_root/manifest.a059c4dc5443.json.gz +0 -0
- {codex-1.8.9.dist-info → codex-1.8.11.dist-info}/WHEEL +0 -0
- {codex-1.8.9.dist-info → codex-1.8.11.dist-info}/entry_points.txt +0 -0
- {codex-1.8.9.dist-info → codex-1.8.11.dist-info}/licenses/LICENSE +0 -0
|
@@ -8,7 +8,7 @@ from django.utils import timezone
|
|
|
8
8
|
|
|
9
9
|
from codex.librarian.scribe.janitor.status import JanitorCodexLatestVersionStatus
|
|
10
10
|
from codex.librarian.scribe.janitor.tasks import JanitorCodexUpdateTask
|
|
11
|
-
from codex.librarian.worker import
|
|
11
|
+
from codex.librarian.worker import WorkerStatusBase
|
|
12
12
|
from codex.models import Timestamp
|
|
13
13
|
from codex.version import PACKAGE_NAME
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ _CACHE_EXPIRY = timedelta(days=1) - timedelta(minutes=5)
|
|
|
18
18
|
_REPO_TIMEOUT = 5
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class CodexLatestVersionUpdater(
|
|
21
|
+
class CodexLatestVersionUpdater(WorkerStatusBase):
|
|
22
22
|
"""Methods for fetching the latest version."""
|
|
23
23
|
|
|
24
24
|
@staticmethod
|
|
@@ -59,7 +59,3 @@ class CodexLatestVersionUpdater(WorkerStatusMixin):
|
|
|
59
59
|
self.log.log(level, log_txt)
|
|
60
60
|
finally:
|
|
61
61
|
self.status_controller.finish(status)
|
|
62
|
-
|
|
63
|
-
def __init__(self, *args, **kwargs):
|
|
64
|
-
"""Init Worker."""
|
|
65
|
-
self.init_worker(*args, **kwargs)
|
codex/librarian/librariand.py
CHANGED
|
@@ -10,9 +10,11 @@ from aioprocessing.queues import AioQueue
|
|
|
10
10
|
from caseconverter import snakecase
|
|
11
11
|
from typing_extensions import override
|
|
12
12
|
|
|
13
|
-
from codex.librarian.bookmark.bookmarkd import BookmarkThread
|
|
13
|
+
from codex.librarian.bookmark.bookmarkd import BookmarkThread # typos:ignore
|
|
14
14
|
from codex.librarian.bookmark.tasks import BookmarkTask
|
|
15
|
-
from codex.librarian.covers.coverd import
|
|
15
|
+
from codex.librarian.covers.coverd import ( # codespell:ignore coverd, typos:ignore
|
|
16
|
+
CoverThread,
|
|
17
|
+
)
|
|
16
18
|
from codex.librarian.covers.tasks import CoverTask
|
|
17
19
|
from codex.librarian.cron.crond import CronThread
|
|
18
20
|
from codex.librarian.notifier.notifierd import NotifierThread
|
|
@@ -95,7 +97,7 @@ class LibrarianDaemon(Process):
|
|
|
95
97
|
case WakeCronTask():
|
|
96
98
|
self._threads.cron_thread.end_timeout()
|
|
97
99
|
case CodexRestarterTask():
|
|
98
|
-
restarter = CodexRestarter(self.log, self.queue)
|
|
100
|
+
restarter = CodexRestarter(self.log, self.queue, self.db_write_lock)
|
|
99
101
|
restarter.handle_task(task)
|
|
100
102
|
case LibrarianShutdownTask():
|
|
101
103
|
self.log.info(f"Shutting down {self.name}...")
|
|
@@ -5,23 +5,24 @@ import signal
|
|
|
5
5
|
|
|
6
6
|
from codex.librarian.restarter.status import (
|
|
7
7
|
CodexRestarterRestartStatus,
|
|
8
|
+
CodexRestarterStatus,
|
|
8
9
|
CodexRestarterStopStatus,
|
|
9
10
|
)
|
|
10
11
|
from codex.librarian.restarter.tasks import (
|
|
11
12
|
CodexRestartTask,
|
|
12
13
|
CodexShutdownTask,
|
|
13
14
|
)
|
|
14
|
-
from codex.librarian.status import Status
|
|
15
15
|
from codex.librarian.tasks import LibrarianShutdownTask
|
|
16
|
-
from codex.librarian.worker import
|
|
16
|
+
from codex.librarian.worker import WorkerStatusBase
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
class CodexRestarter(
|
|
19
|
+
class CodexRestarter(WorkerStatusBase):
|
|
20
20
|
"""Codex restarter."""
|
|
21
21
|
|
|
22
|
-
def _shutdown_codex(
|
|
22
|
+
def _shutdown_codex(
|
|
23
|
+
self, status: CodexRestarterStatus, name: str, sig: signal.Signals
|
|
24
|
+
):
|
|
23
25
|
"""Send a system signal as handled in run.py."""
|
|
24
|
-
status = Status(status)
|
|
25
26
|
try:
|
|
26
27
|
self.status_controller.start(status)
|
|
27
28
|
self.log.info(f"Sending {name} signal.")
|
|
@@ -49,7 +50,3 @@ class CodexRestarter(WorkerStatusMixin):
|
|
|
49
50
|
self.shutdown_codex()
|
|
50
51
|
case _:
|
|
51
52
|
self.log.warning(f"Unknown Codex RestarterTask: f{task}")
|
|
52
|
-
|
|
53
|
-
def __init__(self, *args, **kwargs):
|
|
54
|
-
"""Init worker."""
|
|
55
|
-
self.init_worker(*args, **kwargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Initialize Importer."""
|
|
2
2
|
|
|
3
3
|
from dataclasses import asdict, dataclass
|
|
4
4
|
from multiprocessing.queues import Queue
|
|
@@ -47,7 +47,7 @@ from codex.librarian.scribe.importer.statii.search import (
|
|
|
47
47
|
from codex.librarian.scribe.importer.tasks import ImportTask
|
|
48
48
|
from codex.librarian.scribe.search.status import SearchIndexCleanStatus
|
|
49
49
|
from codex.librarian.scribe.status import UpdateGroupTimestampsStatus
|
|
50
|
-
from codex.librarian.worker import
|
|
50
|
+
from codex.librarian.worker import WorkerStatusBase
|
|
51
51
|
from codex.models import Library
|
|
52
52
|
from codex.settings import LOGLEVEL
|
|
53
53
|
|
|
@@ -94,14 +94,14 @@ class Counts:
|
|
|
94
94
|
)
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
class InitImporter(
|
|
97
|
+
class InitImporter(WorkerStatusBase):
|
|
98
98
|
"""Initial Importer."""
|
|
99
99
|
|
|
100
100
|
def __init__(
|
|
101
101
|
self, task: ImportTask, logger_, librarian_queue: Queue, db_write_lock, event
|
|
102
102
|
):
|
|
103
103
|
"""Initialize the import."""
|
|
104
|
-
|
|
104
|
+
super().__init__(logger_, librarian_queue, db_write_lock)
|
|
105
105
|
self.task: ImportTask = task
|
|
106
106
|
self.metadata: dict[str, Any] = {}
|
|
107
107
|
self.counts = Counts()
|
|
@@ -85,5 +85,6 @@ class LinkManyToManyImporter(LinkSumImporter):
|
|
|
85
85
|
self.log.exception(f"Error recreating m2m field: {field_name}")
|
|
86
86
|
finally:
|
|
87
87
|
self.metadata.pop(LINK_M2MS, None)
|
|
88
|
+
self.metadata.pop(DELETE_M2MS, None)
|
|
88
89
|
self.status_controller.finish(status)
|
|
89
90
|
return created_total + del_total
|
|
@@ -8,7 +8,6 @@ from django.db.models.query import Q
|
|
|
8
8
|
from codex.librarian.scribe.importer.const import (
|
|
9
9
|
FIELD_NAME_KEYS_REL_MAP,
|
|
10
10
|
FOLDERS_FIELD_NAME,
|
|
11
|
-
FTS_CREATED_M2MS,
|
|
12
11
|
IDENTIFIERS_FIELD_NAME,
|
|
13
12
|
LINK_M2MS,
|
|
14
13
|
NON_FTS_FIELDS,
|
|
@@ -132,6 +131,5 @@ class LinkComicsImporterPrepare(LinkCoversImporter):
|
|
|
132
131
|
)
|
|
133
132
|
for field, names in md.items():
|
|
134
133
|
self._link_prepare_named_m2ms(all_m2m_links, comic_pk, field, names)
|
|
135
|
-
self.metadata.pop(LINK_M2MS)
|
|
136
|
-
self.metadata.pop(FTS_CREATED_M2MS)
|
|
134
|
+
self.metadata.pop(LINK_M2MS, None)
|
|
137
135
|
return all_m2m_links
|
|
@@ -59,32 +59,33 @@ class SearchIndexSyncManyToManyImporter(FinishImporter):
|
|
|
59
59
|
|
|
60
60
|
def sync_fts_for_m2m_updates(self, already_updated_comicfts_pks: tuple[int, ...]):
|
|
61
61
|
"""Update fts entries for foreign keys."""
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
update_objs = []
|
|
69
|
-
for field_name in update_field_names:
|
|
70
|
-
if self.abort_event.is_set():
|
|
62
|
+
try:
|
|
63
|
+
count = 0
|
|
64
|
+
update_field_names = tuple(self.metadata.get(FTS_UPDATED_M2MS, {}).keys())
|
|
65
|
+
if not update_field_names:
|
|
71
66
|
return
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
|
|
68
|
+
update_objs = []
|
|
69
|
+
for field_name in update_field_names:
|
|
70
|
+
if self.abort_event.is_set():
|
|
71
|
+
return
|
|
72
|
+
self._sync_fts_for_m2m_updates_model(
|
|
73
|
+
field_name,
|
|
74
|
+
already_updated_comicfts_pks,
|
|
75
|
+
update_field_names,
|
|
76
|
+
update_objs,
|
|
77
|
+
)
|
|
78
|
+
count += len(update_objs)
|
|
79
|
+
tags = ", ".join(update_field_names)
|
|
80
|
+
self.log.debug(
|
|
81
|
+
f"Updating {count} search index entries for comics linked to updated tags: {tags}"
|
|
77
82
|
)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
level,
|
|
88
|
-
f"Updated {count} search indexes entries for comics linked to updated tags: {tags}.",
|
|
89
|
-
)
|
|
90
|
-
self.metadata.pop(FTS_UPDATED_M2MS, None)
|
|
83
|
+
if count:
|
|
84
|
+
ComicFTS.objects.bulk_update(update_objs, update_field_names)
|
|
85
|
+
level = "INFO" if count else "DEBUG"
|
|
86
|
+
self.log.log(
|
|
87
|
+
level,
|
|
88
|
+
f"Updated {count} search indexes entries for comics linked to updated tags: {tags}.",
|
|
89
|
+
)
|
|
90
|
+
finally:
|
|
91
|
+
self.metadata.pop(FTS_UPDATED_M2MS, None)
|
|
@@ -6,6 +6,7 @@ from humanize import naturaldelta
|
|
|
6
6
|
|
|
7
7
|
from codex.librarian.scribe.importer.const import (
|
|
8
8
|
FTS_CREATE,
|
|
9
|
+
FTS_CREATED_M2MS,
|
|
9
10
|
FTS_EXISTING_M2MS,
|
|
10
11
|
FTS_UPDATE,
|
|
11
12
|
)
|
|
@@ -209,7 +210,8 @@ class SearchIndexCreateUpdateImporter(SearchIndexSyncManyToManyImporter):
|
|
|
209
210
|
if self.abort_event.is_set():
|
|
210
211
|
self.log.info("Search Index update aborted early.")
|
|
211
212
|
self.abort_event.clear()
|
|
212
|
-
self.metadata.pop(FTS_EXISTING_M2MS)
|
|
213
|
+
self.metadata.pop(FTS_EXISTING_M2MS, None)
|
|
214
|
+
self.metadata.pop(FTS_CREATED_M2MS, None)
|
|
213
215
|
self.status_controller.finish_many(
|
|
214
216
|
(ImporterFTSCreateStatus, ImporterFTSUpdateStatus)
|
|
215
217
|
)
|
|
@@ -8,11 +8,11 @@ from codex.librarian.scribe.importer.statii.moved import ImporterMoveFoldersStat
|
|
|
8
8
|
from codex.librarian.scribe.importer.tasks import ImportTask
|
|
9
9
|
from codex.librarian.scribe.janitor.status import JanitorAdoptOrphanFoldersStatus
|
|
10
10
|
from codex.librarian.scribe.search.tasks import SearchIndexSyncTask
|
|
11
|
-
from codex.librarian.worker import
|
|
11
|
+
from codex.librarian.worker import WorkerStatusAbortableBase
|
|
12
12
|
from codex.models import Folder, Library
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class OrphanFolderAdopter(
|
|
15
|
+
class OrphanFolderAdopter(WorkerStatusAbortableBase):
|
|
16
16
|
"""A worker to handle all bulk database updates."""
|
|
17
17
|
|
|
18
18
|
def _adopt_orphan_folders_for_library(self, library):
|
|
@@ -74,8 +74,3 @@ class OrphanFolderAdopter(WorkerStatusMixin):
|
|
|
74
74
|
self.log.debug("Adopt Orphan Folders aborted early.")
|
|
75
75
|
|
|
76
76
|
self.abort_event.clear()
|
|
77
|
-
|
|
78
|
-
def __init__(self, *args, event, **kwargs):
|
|
79
|
-
"""Initialize Worker."""
|
|
80
|
-
self.abort_event = event
|
|
81
|
-
self.init_worker(*args, **kwargs)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Database integrity checks and remedies."""
|
|
2
|
-
# Uses app.get_model() because functions may also be called before the models are ready on startup.
|
|
3
2
|
|
|
3
|
+
# Uses app.get_model() because functions may also be called before the models are ready on startup.
|
|
4
4
|
import re
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ from codex.librarian.scribe.janitor.status import (
|
|
|
16
16
|
JanitorDBIntegrityStatus,
|
|
17
17
|
)
|
|
18
18
|
from codex.librarian.scribe.janitor.tasks import JanitorFTSRebuildTask
|
|
19
|
-
from codex.librarian.worker import
|
|
19
|
+
from codex.librarian.worker import WorkerStatusAbortableBase
|
|
20
20
|
from codex.models.base import BaseModel
|
|
21
21
|
from codex.settings import (
|
|
22
22
|
CONFIG_PATH,
|
|
@@ -323,14 +323,9 @@ def fts_integrity_check(log):
|
|
|
323
323
|
return success
|
|
324
324
|
|
|
325
325
|
|
|
326
|
-
class JanitorIntegrity(
|
|
326
|
+
class JanitorIntegrity(WorkerStatusAbortableBase):
|
|
327
327
|
"""Integrity Check Mixin."""
|
|
328
328
|
|
|
329
|
-
def __init__(self, *args, event, **kwargs):
|
|
330
|
-
"""Init self.log."""
|
|
331
|
-
self.abort_event = event
|
|
332
|
-
self.init_worker(*args, **kwargs)
|
|
333
|
-
|
|
334
329
|
def foreign_key_check(self):
|
|
335
330
|
"""Foreign Key Check task."""
|
|
336
331
|
status = JanitorDBFKIntegrityStatus()
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from codex.choices.admin import AdminFlagChoices
|
|
4
4
|
from codex.librarian.scribe.importer.tasks import ImportTask
|
|
5
|
-
from codex.librarian.worker import
|
|
5
|
+
from codex.librarian.worker import WorkerBase
|
|
6
6
|
from codex.models.admin import AdminFlag
|
|
7
7
|
from codex.models.comic import Comic
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class LazyImporter(
|
|
10
|
+
class LazyImporter(WorkerBase):
|
|
11
11
|
"""Kick off an import task for just these books."""
|
|
12
12
|
|
|
13
13
|
def lazy_import(self, task):
|
|
@@ -45,7 +45,3 @@ class LazyImporter(WorkerMixin):
|
|
|
45
45
|
force_import_metadata=True,
|
|
46
46
|
)
|
|
47
47
|
self.librarian_queue.put(task)
|
|
48
|
-
|
|
49
|
-
def __init__(self, *args, **kwargs):
|
|
50
|
-
"""Initialize Worker."""
|
|
51
|
-
self.init_worker(*args, **kwargs)
|
|
@@ -3,20 +3,17 @@
|
|
|
3
3
|
from django.db import connection
|
|
4
4
|
|
|
5
5
|
from codex.librarian.scribe.search.status import SearchIndexOptimizeStatus
|
|
6
|
-
from codex.librarian.worker import
|
|
6
|
+
from codex.librarian.worker import (
|
|
7
|
+
WorkerStatusAbortableBase,
|
|
8
|
+
)
|
|
7
9
|
|
|
8
10
|
_TABLE = "codex_comicfts"
|
|
9
11
|
_OPTIMIZE_SQL = f"INSERT INTO {_TABLE}({_TABLE}) VALUES('optimize')"
|
|
10
12
|
|
|
11
13
|
|
|
12
|
-
class SearchIndexerOptimize(
|
|
14
|
+
class SearchIndexerOptimize(WorkerStatusAbortableBase):
|
|
13
15
|
"""Search Index optimize methods."""
|
|
14
16
|
|
|
15
|
-
def __init__(self, *args, event, **kwargs):
|
|
16
|
-
"""Initialize search engine."""
|
|
17
|
-
self.abort_event = event
|
|
18
|
-
self.init_worker(*args, **kwargs)
|
|
19
|
-
|
|
20
17
|
def optimize(self):
|
|
21
18
|
"""Remove records not in the database from the index, trapping exceptions."""
|
|
22
19
|
status = SearchIndexOptimizeStatus()
|
|
@@ -11,7 +11,7 @@ from django.utils import timezone
|
|
|
11
11
|
|
|
12
12
|
from codex.librarian.notifier.tasks import LIBRARY_CHANGED_TASK
|
|
13
13
|
from codex.librarian.scribe.status import UpdateGroupTimestampsStatus
|
|
14
|
-
from codex.librarian.worker import
|
|
14
|
+
from codex.librarian.worker import WorkerStatusBase
|
|
15
15
|
from codex.models import StoryArc, Volume
|
|
16
16
|
from codex.models.groups import BrowserGroupModel
|
|
17
17
|
from codex.models.library import Library
|
|
@@ -20,7 +20,7 @@ from codex.views.const import GROUP_MODELS
|
|
|
20
20
|
_UPDATE_FIELDS = ("updated_at",)
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
class TimestampUpdater(
|
|
23
|
+
class TimestampUpdater(WorkerStatusBase):
|
|
24
24
|
"""Update Groups timestamp for cover cache busting."""
|
|
25
25
|
|
|
26
26
|
@staticmethod
|
|
@@ -129,7 +129,3 @@ class TimestampUpdater(WorkerStatusMixin):
|
|
|
129
129
|
level = "INFO" if count else "DEBUG"
|
|
130
130
|
self.log.log(level, f"Updated timestamps for {count} groups.")
|
|
131
131
|
self.librarian_queue.put(LIBRARY_CHANGED_TASK)
|
|
132
|
-
|
|
133
|
-
def __init__(self, log, librarian_queue, db_write_lock):
|
|
134
|
-
"""Initialize Worker."""
|
|
135
|
-
self.init_worker(log, librarian_queue, db_write_lock)
|
codex/librarian/worker.py
CHANGED
|
@@ -30,3 +30,30 @@ class WorkerStatusMixin(WorkerMixin):
|
|
|
30
30
|
self.status_controller = StatusController( # pyright: ignore[reportUninitializedInstanceVariable]
|
|
31
31
|
logger_, librarian_queue
|
|
32
32
|
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class WorkerBase(WorkerMixin):
|
|
36
|
+
"""Base for Worker."""
|
|
37
|
+
|
|
38
|
+
def __init__(self, logger_, librarian_queue: Queue, db_write_lock):
|
|
39
|
+
"""Initialize Worker."""
|
|
40
|
+
super().__init__()
|
|
41
|
+
self.init_worker(logger_, librarian_queue, db_write_lock)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class WorkerStatusBase(WorkerStatusMixin):
|
|
45
|
+
"""Base for Status Worker."""
|
|
46
|
+
|
|
47
|
+
def __init__(self, logger_, librarian_queue: Queue, db_write_lock):
|
|
48
|
+
"""Initialize Worker."""
|
|
49
|
+
super().__init__()
|
|
50
|
+
self.init_worker(logger_, librarian_queue, db_write_lock)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class WorkerStatusAbortableBase(WorkerStatusBase):
|
|
54
|
+
"""Base for Abortable Status Worker."""
|
|
55
|
+
|
|
56
|
+
def __init__(self, logger_, librarian_queue: Queue, db_write_lock, event):
|
|
57
|
+
"""Initialize Abortable Worker."""
|
|
58
|
+
super().__init__(logger_, librarian_queue, db_write_lock)
|
|
59
|
+
self.abort_event = event
|
codex/static_root/assets/{VCheckbox-BI6iNIZR.0d8e2dbdeb09.js → VCheckbox-yJKLwTHL.c95ec3575cfc.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as I,V as r}from"./VCheckboxBtn-
|
|
1
|
+
import{m as I,V as r}from"./VCheckboxBtn-dB9xmqwr.js";import{u as A,m as F,g as u}from"./VSelectionControl-BI__4iTT.js";import{f as R}from"./forwardRefs-BotGMO80.js";import{g as B,p as U,e as w,r as D,u as M,o as N,bu as $,bv as j,a as l,m as d}from"./main-CdKoY_uF.js";const q=U({...F(),...N(I(),["inline"])},"VCheckbox"),J=B()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:n,slots:a}=c;const s=w(e,"modelValue"),{isFocused:i,focus:m,blur:f}=A(e),t=D(),V=$();return M(()=>{const[p,b]=j(n),v=u.filterProps(e),k=r.filterProps(e);return l(u,d({ref:t,class:["v-checkbox",e.class]},p,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:e.id||`checkbox-${V}`,focused:i.value,style:e.style}),{...a,default:o=>{let{id:x,messagesId:h,isDisabled:P,isReadonly:C,isValid:y}=o;return l(r,d(k,{id:x.value,"aria-describedby":h.value,disabled:P.value,readonly:C.value},b,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:m,onBlur:f}),a)}})}),R({},t)}});export{J as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as I,V as r}from"./VCheckboxBtn-
|
|
1
|
+
import{m as I,V as r}from"./VCheckboxBtn-dB9xmqwr.js";import{u as A,m as F,g as u}from"./VSelectionControl-BI__4iTT.js";import{f as R}from"./forwardRefs-BotGMO80.js";import{g as B,p as U,e as w,r as D,u as M,o as N,bu as $,bv as j,a as l,m as d}from"./main-CdKoY_uF.js";const q=U({...F(),...N(I(),["inline"])},"VCheckbox"),J=B()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:n,slots:a}=c;const s=w(e,"modelValue"),{isFocused:i,focus:m,blur:f}=A(e),t=D(),V=$();return M(()=>{const[p,b]=j(n),v=u.filterProps(e),k=r.filterProps(e);return l(u,d({ref:t,class:["v-checkbox",e.class]},p,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:e.id||`checkbox-${V}`,focused:i.value,style:e.style}),{...a,default:o=>{let{id:x,messagesId:h,isDisabled:P,isReadonly:C,isValid:y}=o;return l(r,d(k,{id:x.value,"aria-describedby":h.value,disabled:P.value,readonly:C.value},b,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:m,onBlur:f}),a)}})}),R({},t)}});export{J as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as f,k as a}from"./VSelectionControl-
|
|
1
|
+
import{l as f,k as a}from"./VSelectionControl-BI__4iTT.js";import{p as V,L as k,g as v,e as c,t as l,u as I,o as x,a as h,m as b}from"./main-CdKoY_uF.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(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 h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as f,k as a}from"./VSelectionControl-
|
|
1
|
+
import{l as f,k as a}from"./VSelectionControl-BI__4iTT.js";import{p as V,L as k,g as v,e as c,t as l,u as I,o as x,a as h,m as b}from"./main-CdKoY_uF.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(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 h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
|
|
Binary file
|
|
Binary file
|
codex/static_root/assets/{VCombobox-lKOmP-Yq.85384eec8906.js → VCombobox-DOGFHYmN.88d1f3799dc6.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as ye,t as I,e as Ve,m as pe,a as ke,V as Ce,b as we,f as Se,d as Ie}from"./VSelect-
|
|
1
|
+
import{u as ye,t as I,e as Ve,m as pe,a as ke,V as Ce,b as we,f as Se,d as Ie}from"./VSelect-CHbtIx-x.js";import{p as Fe,c as j,q as De}from"./VSelectionControl-BI__4iTT.js";import{u as Pe,f as Re,p as Ae,k as G,l as Te}from"./forwardRefs-BotGMO80.js";import{u as Ee,m as Me,h as _e}from"./filter-BOz2i2LB.js";import{g as Ne,p as Ke,aC as Le,r as _,aU as F,e as J,bE as Be,c as x,aX as N,bF as Oe,t as Ue,aV as D,bG as W,u as ze,a as d,m as k,o as $e,bH as qe,bI as X,bt as He,b as C,bJ as je,F as $,bK as Ge,n as Je,d as We,z as Xe}from"./main-CdKoY_uF.js";import{a as Q,g as Qe}from"./VDialog-DhWYW70x.js";import{a as Ye}from"./VDivider-D5g1AzdV.js";import{V as Ze}from"./VCheckboxBtn-dB9xmqwr.js";const el=Ke({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Me({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...$e(De({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...Ae({transition:!1})},"VCombobox"),rl=Ne()({name:"VCombobox",props:el(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,Y){let{emit:Z,slots:r}=Y;const{t:K}=Le(),m=_(),b=F(!1),y=F(!0),L=F(!1),q=_(),P=_(),n=F(-1);let B=!1;const{items:ee,transformIn:le,transformOut:ae}=ye(e),{textColorClasses:te,textColorStyles:ue}=Pe(()=>m.value?.color),u=J(e,"modelValue",[],l=>le(Be(l)),l=>{const o=ae(l);return e.multiple?o:o[0]??null}),R=Fe(e),A=x(()=>!!(e.chips||r.chip)),g=x(()=>A.value||!!r.selection),V=F(!e.multiple&&!g.value?u.value[0]?.title??"":""),c=x({get:()=>V.value,set:async l=>{if(V.value=l??"",!e.multiple&&!g.value&&(u.value=[I(e,l)],N(()=>P.value?.scrollToIndex(0))),l&&e.multiple&&e.delimiters?.length){const o=e.delimiters.map(Oe).join("|"),i=l.split(new RegExp(`(?:${o})+`));if(i.length>1){for(let a of i)a=a.trim(),a&&(h(I(e,a)),await N());V.value=""}}l||(n.value=-1),y.value=!l}}),ne=x(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:c.value.length),{filteredItems:T,getMatches:oe}=Ee(e,ee,()=>y.value?"":c.value),p=x(()=>e.hideSelected?T.value.filter(l=>!u.value.some(o=>o.value===l.value)):T.value),E=x(()=>e.hideNoData&&!p.value.length||R.isReadonly.value||R.isDisabled.value),O=J(e,"menu"),s=x({get:()=>O.value,set:l=>{O.value&&!l&&q.value?.ΨopenChildren.size||l&&E.value||(O.value=l)}}),H=Ue(()=>s.value?e.closeText:e.openText);D(V,l=>{B?N(()=>B=!1):b.value&&!s.value&&(s.value=!0),Z("update:search",l)}),D(u,l=>{!e.multiple&&!g.value&&(V.value=l[0]?.title??"")});const ie=x(()=>u.value.map(l=>l.value)),U=x(()=>(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&c.value===p.value[0]?.title)&&p.value.length>0&&!y.value&&!L.value),z=_(),se=Ve(z,m);function re(l){B=!0,e.openOnClear&&(s.value=!0)}function ce(){E.value||(s.value=!0)}function ve(l){E.value||(b.value&&(l.preventDefault(),l.stopPropagation()),s.value=!s.value)}function de(l){(X(l)||l.key==="Backspace")&&m.value?.focus()}function fe(l){if(qe(l)||R.isReadonly.value)return;const o=m.value?.selectionStart,i=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(s.value=!0),["Escape"].includes(l.key)&&(s.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(U.value&&["Enter","Tab"].includes(l.key)&&!u.value.some(a=>{let{value:t}=a;return t===p.value[0].value})&&h(T.value[0]),y.value=!0),l.key==="ArrowDown"&&U.value&&z.value?.focus("next"),l.key==="Enter"&&c.value&&(h(I(e,c.value)),g.value&&(V.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&g.value&&u.value.length>0&&!c.value)return h(u.value[0],!1);if(~n.value){l.preventDefault();const a=n.value;h(u.value[n.value],!1),n.value=a>=i-1?i-2:a}else l.key==="Backspace"&&!c.value&&(n.value=i-1);return}if(e.multiple)if(l.key==="ArrowLeft"){if(n.value<0&&o&&o>0)return;const a=n.value>-1?n.value-1:i-1;u.value[a]?n.value=a:(n.value=-1,m.value?.setSelectionRange(c.value.length,c.value.length))}else if(l.key==="ArrowRight"){if(n.value<0)return;const a=n.value+1;u.value[a]?n.value=a:(n.value=-1,m.value?.setSelectionRange(0,0))}else~n.value&&X(l)&&(n.value=-1)}function me(){e.eager&&P.value?.calculateVisibleItems()}function he(){b.value&&(y.value=!0,m.value?.focus())}function h(l){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(t=>(e.valueComparator||W)(t.value,l.value)),a=o??!~i;if(~i){const t=a?[...u.value,l]:[...u.value];t.splice(i,1),u.value=t}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(c.value="")}else{const i=o!==!1;u.value=i?[l]:[],V.value=i&&!g.value?l.title:"",N(()=>{s.value=!1,y.value=!0})}}function be(l){b.value=!0,setTimeout(()=>{L.value=!0})}function ge(l){L.value=!1}function xe(l){(l==null||l===""&&!e.multiple&&!g.value)&&(u.value=[])}return D(b,(l,o)=>{if(!(l||l===o)&&(n.value=-1,s.value=!1,c.value)){if(e.multiple){h(I(e,c.value));return}if(!g.value)return;u.value.some(i=>{let{title:a}=i;return a===c.value})?V.value="":h(I(e,c.value))}}),D(s,()=>{if(!e.hideSelected&&s.value&&u.value.length){const l=p.value.findIndex(o=>u.value.some(i=>(e.valueComparator||W)(i.value,o.value)));He&&window.requestAnimationFrame(()=>{l>=0&&P.value?.scrollToIndex(l)})}}),D(()=>e.items,(l,o)=>{s.value||b.value&&!o.length&&l.length&&(s.value=!0)}),ze(()=>{const l=!!(!e.hideNoData||p.value.length||r["prepend-item"]||r["append-item"]||r["no-data"]),o=u.value.length>0,i=j.filterProps(e);return d(j,k({ref:m},i,{modelValue:c.value,"onUpdate:modelValue":[a=>c.value=a,xe],focused:b.value,"onUpdate:focused":a=>b.value=a,validationValue:u.externalValue,counterValue:ne.value,dirty:o,class:["v-combobox",{"v-combobox--active-menu":s.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!g.value,"v-combobox--selecting-index":n.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:R.isReadonly.value,placeholder:o?void 0:e.placeholder,"onClick:clear":re,"onMousedown:control":ce,onKeydown:fe}),{...r,default:()=>C($,null,[d(ke,k({ref:q,modelValue:s.value,"onUpdate:modelValue":a=>s.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:E.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:me,onAfterLeave:he},e.menuProps),{default:()=>[l&&d(Ce,k({ref:z,filterable:!0,selected:ie.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:be,onFocusout:ge,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},se,e.listProps),{default:()=>[r["prepend-item"]?.(),!p.value.length&&!e.hideNoData&&(r["no-data"]?.()??d(Q,{key:"no-data",title:K(e.noDataText)},null)),d(we,{ref:P,renderless:!0,items:p.value,itemKey:"value"},{default:a=>{let{item:t,index:v,itemRef:M}=a;const w=k(t.props,{ref:M,key:t.value,active:U.value&&v===0?!0:void 0,onClick:()=>h(t,null)});return t.type==="divider"?r.divider?.({props:t.raw,index:v})??d(Ye,k(t.props,{key:`divider-${v}`}),null):t.type==="subheader"?r.subheader?.({props:t.raw,index:v})??d(Se,k(t.props,{key:`subheader-${v}`}),null):r.item?.({item:t,index:v,props:w})??d(Q,k(w,{role:"option"}),{prepend:S=>{let{isSelected:f}=S;return C($,null,[e.multiple&&!e.hideSelected?d(Ze,{key:t.value,modelValue:f,ripple:!1,tabindex:"-1"},null):void 0,t.props.prependAvatar&&d(Qe,{image:t.props.prependAvatar},null),t.props.prependIcon&&d(G,{icon:t.props.prependIcon},null)])},title:()=>y.value?t.title:_e("v-combobox",t.title,oe(t)?.title)})}}),r["append-item"]?.()]})]}),u.value.map((a,t)=>{function v(f){f.stopPropagation(),f.preventDefault(),h(a,!1)}const M={"onClick:close":v,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),v(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},w=A.value?!!r.chip:!!r.selection,S=w?Ge(A.value?r.chip({item:a,index:t,props:M}):r.selection({item:a,index:t})):void 0;if(!(w&&!S))return C("div",{key:a.value,class:We(["v-combobox__selection",t===n.value&&["v-combobox__selection--selected",te.value]]),style:Je(t===n.value?ue.value:{})},[A.value?r.chip?d(Te,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):d(Ie,k({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},M),null):S??C("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&t<u.value.length-1&&C("span",{class:"v-combobox__selection-comma"},[Xe(",")])])])})]),"append-inner":function(){for(var a=arguments.length,t=new Array(a),v=0;v<a;v++)t[v]=arguments[v];return C($,null,[r["append-inner"]?.(...t),(!e.hideNoData||e.items.length)&&e.menuIcon?d(G,{class:"v-combobox__menu-icon",color:m.value?.fieldIconColor,icon:e.menuIcon,onMousedown:ve,onClick:je,"aria-label":K(H.value),title:K(H.value),tabindex:"-1"},null):void 0])}})}),Re({isFocused:b,isPristine:y,menu:s,search:c,selectionIndex:n,filteredItems:T,select:h},m)}});export{rl as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as ye,t as I,e as Ve,m as pe,a as ke,V as Ce,b as we,f as Se,d as Ie}from"./VSelect-
|
|
1
|
+
import{u as ye,t as I,e as Ve,m as pe,a as ke,V as Ce,b as we,f as Se,d as Ie}from"./VSelect-CHbtIx-x.js";import{p as Fe,c as j,q as De}from"./VSelectionControl-BI__4iTT.js";import{u as Pe,f as Re,p as Ae,k as G,l as Te}from"./forwardRefs-BotGMO80.js";import{u as Ee,m as Me,h as _e}from"./filter-BOz2i2LB.js";import{g as Ne,p as Ke,aC as Le,r as _,aU as F,e as J,bE as Be,c as x,aX as N,bF as Oe,t as Ue,aV as D,bG as W,u as ze,a as d,m as k,o as $e,bH as qe,bI as X,bt as He,b as C,bJ as je,F as $,bK as Ge,n as Je,d as We,z as Xe}from"./main-CdKoY_uF.js";import{a as Q,g as Qe}from"./VDialog-DhWYW70x.js";import{a as Ye}from"./VDivider-D5g1AzdV.js";import{V as Ze}from"./VCheckboxBtn-dB9xmqwr.js";const el=Ke({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Me({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...$e(De({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...Ae({transition:!1})},"VCombobox"),rl=Ne()({name:"VCombobox",props:el(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,Y){let{emit:Z,slots:r}=Y;const{t:K}=Le(),m=_(),b=F(!1),y=F(!0),L=F(!1),q=_(),P=_(),n=F(-1);let B=!1;const{items:ee,transformIn:le,transformOut:ae}=ye(e),{textColorClasses:te,textColorStyles:ue}=Pe(()=>m.value?.color),u=J(e,"modelValue",[],l=>le(Be(l)),l=>{const o=ae(l);return e.multiple?o:o[0]??null}),R=Fe(e),A=x(()=>!!(e.chips||r.chip)),g=x(()=>A.value||!!r.selection),V=F(!e.multiple&&!g.value?u.value[0]?.title??"":""),c=x({get:()=>V.value,set:async l=>{if(V.value=l??"",!e.multiple&&!g.value&&(u.value=[I(e,l)],N(()=>P.value?.scrollToIndex(0))),l&&e.multiple&&e.delimiters?.length){const o=e.delimiters.map(Oe).join("|"),i=l.split(new RegExp(`(?:${o})+`));if(i.length>1){for(let a of i)a=a.trim(),a&&(h(I(e,a)),await N());V.value=""}}l||(n.value=-1),y.value=!l}}),ne=x(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:c.value.length),{filteredItems:T,getMatches:oe}=Ee(e,ee,()=>y.value?"":c.value),p=x(()=>e.hideSelected?T.value.filter(l=>!u.value.some(o=>o.value===l.value)):T.value),E=x(()=>e.hideNoData&&!p.value.length||R.isReadonly.value||R.isDisabled.value),O=J(e,"menu"),s=x({get:()=>O.value,set:l=>{O.value&&!l&&q.value?.ΨopenChildren.size||l&&E.value||(O.value=l)}}),H=Ue(()=>s.value?e.closeText:e.openText);D(V,l=>{B?N(()=>B=!1):b.value&&!s.value&&(s.value=!0),Z("update:search",l)}),D(u,l=>{!e.multiple&&!g.value&&(V.value=l[0]?.title??"")});const ie=x(()=>u.value.map(l=>l.value)),U=x(()=>(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&c.value===p.value[0]?.title)&&p.value.length>0&&!y.value&&!L.value),z=_(),se=Ve(z,m);function re(l){B=!0,e.openOnClear&&(s.value=!0)}function ce(){E.value||(s.value=!0)}function ve(l){E.value||(b.value&&(l.preventDefault(),l.stopPropagation()),s.value=!s.value)}function de(l){(X(l)||l.key==="Backspace")&&m.value?.focus()}function fe(l){if(qe(l)||R.isReadonly.value)return;const o=m.value?.selectionStart,i=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(s.value=!0),["Escape"].includes(l.key)&&(s.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(U.value&&["Enter","Tab"].includes(l.key)&&!u.value.some(a=>{let{value:t}=a;return t===p.value[0].value})&&h(T.value[0]),y.value=!0),l.key==="ArrowDown"&&U.value&&z.value?.focus("next"),l.key==="Enter"&&c.value&&(h(I(e,c.value)),g.value&&(V.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&g.value&&u.value.length>0&&!c.value)return h(u.value[0],!1);if(~n.value){l.preventDefault();const a=n.value;h(u.value[n.value],!1),n.value=a>=i-1?i-2:a}else l.key==="Backspace"&&!c.value&&(n.value=i-1);return}if(e.multiple)if(l.key==="ArrowLeft"){if(n.value<0&&o&&o>0)return;const a=n.value>-1?n.value-1:i-1;u.value[a]?n.value=a:(n.value=-1,m.value?.setSelectionRange(c.value.length,c.value.length))}else if(l.key==="ArrowRight"){if(n.value<0)return;const a=n.value+1;u.value[a]?n.value=a:(n.value=-1,m.value?.setSelectionRange(0,0))}else~n.value&&X(l)&&(n.value=-1)}function me(){e.eager&&P.value?.calculateVisibleItems()}function he(){b.value&&(y.value=!0,m.value?.focus())}function h(l){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(t=>(e.valueComparator||W)(t.value,l.value)),a=o??!~i;if(~i){const t=a?[...u.value,l]:[...u.value];t.splice(i,1),u.value=t}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(c.value="")}else{const i=o!==!1;u.value=i?[l]:[],V.value=i&&!g.value?l.title:"",N(()=>{s.value=!1,y.value=!0})}}function be(l){b.value=!0,setTimeout(()=>{L.value=!0})}function ge(l){L.value=!1}function xe(l){(l==null||l===""&&!e.multiple&&!g.value)&&(u.value=[])}return D(b,(l,o)=>{if(!(l||l===o)&&(n.value=-1,s.value=!1,c.value)){if(e.multiple){h(I(e,c.value));return}if(!g.value)return;u.value.some(i=>{let{title:a}=i;return a===c.value})?V.value="":h(I(e,c.value))}}),D(s,()=>{if(!e.hideSelected&&s.value&&u.value.length){const l=p.value.findIndex(o=>u.value.some(i=>(e.valueComparator||W)(i.value,o.value)));He&&window.requestAnimationFrame(()=>{l>=0&&P.value?.scrollToIndex(l)})}}),D(()=>e.items,(l,o)=>{s.value||b.value&&!o.length&&l.length&&(s.value=!0)}),ze(()=>{const l=!!(!e.hideNoData||p.value.length||r["prepend-item"]||r["append-item"]||r["no-data"]),o=u.value.length>0,i=j.filterProps(e);return d(j,k({ref:m},i,{modelValue:c.value,"onUpdate:modelValue":[a=>c.value=a,xe],focused:b.value,"onUpdate:focused":a=>b.value=a,validationValue:u.externalValue,counterValue:ne.value,dirty:o,class:["v-combobox",{"v-combobox--active-menu":s.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!g.value,"v-combobox--selecting-index":n.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:R.isReadonly.value,placeholder:o?void 0:e.placeholder,"onClick:clear":re,"onMousedown:control":ce,onKeydown:fe}),{...r,default:()=>C($,null,[d(ke,k({ref:q,modelValue:s.value,"onUpdate:modelValue":a=>s.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:E.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:me,onAfterLeave:he},e.menuProps),{default:()=>[l&&d(Ce,k({ref:z,filterable:!0,selected:ie.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:be,onFocusout:ge,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},se,e.listProps),{default:()=>[r["prepend-item"]?.(),!p.value.length&&!e.hideNoData&&(r["no-data"]?.()??d(Q,{key:"no-data",title:K(e.noDataText)},null)),d(we,{ref:P,renderless:!0,items:p.value,itemKey:"value"},{default:a=>{let{item:t,index:v,itemRef:M}=a;const w=k(t.props,{ref:M,key:t.value,active:U.value&&v===0?!0:void 0,onClick:()=>h(t,null)});return t.type==="divider"?r.divider?.({props:t.raw,index:v})??d(Ye,k(t.props,{key:`divider-${v}`}),null):t.type==="subheader"?r.subheader?.({props:t.raw,index:v})??d(Se,k(t.props,{key:`subheader-${v}`}),null):r.item?.({item:t,index:v,props:w})??d(Q,k(w,{role:"option"}),{prepend:S=>{let{isSelected:f}=S;return C($,null,[e.multiple&&!e.hideSelected?d(Ze,{key:t.value,modelValue:f,ripple:!1,tabindex:"-1"},null):void 0,t.props.prependAvatar&&d(Qe,{image:t.props.prependAvatar},null),t.props.prependIcon&&d(G,{icon:t.props.prependIcon},null)])},title:()=>y.value?t.title:_e("v-combobox",t.title,oe(t)?.title)})}}),r["append-item"]?.()]})]}),u.value.map((a,t)=>{function v(f){f.stopPropagation(),f.preventDefault(),h(a,!1)}const M={"onClick:close":v,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),v(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},w=A.value?!!r.chip:!!r.selection,S=w?Ge(A.value?r.chip({item:a,index:t,props:M}):r.selection({item:a,index:t})):void 0;if(!(w&&!S))return C("div",{key:a.value,class:We(["v-combobox__selection",t===n.value&&["v-combobox__selection--selected",te.value]]),style:Je(t===n.value?ue.value:{})},[A.value?r.chip?d(Te,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):d(Ie,k({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},M),null):S??C("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&t<u.value.length-1&&C("span",{class:"v-combobox__selection-comma"},[Xe(",")])])])})]),"append-inner":function(){for(var a=arguments.length,t=new Array(a),v=0;v<a;v++)t[v]=arguments[v];return C($,null,[r["append-inner"]?.(...t),(!e.hideNoData||e.items.length)&&e.menuIcon?d(G,{class:"v-combobox__menu-icon",color:m.value?.fieldIconColor,icon:e.menuIcon,onMousedown:ve,onClick:je,"aria-label":K(H.value),title:K(H.value),tabindex:"-1"},null):void 0])}})}),Re({isFocused:b,isPristine:y,menu:s,search:c,selectionIndex:n,filteredItems:T,select:h},m)}});export{rl as V};
|
|
Binary file
|
|
Binary file
|