codex 1.5.4__py3-none-any.whl → 1.5.6__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/importer/query_fks.py +56 -49
- codex/librarian/search/update.py +8 -27
- codex/settings/settings.py +10 -5
- codex/static_root/assets/{VCheckbox-ttw6_0q4.1ea7e82279a8.js → VCheckbox-DY1Y0qsq.5973caad55d6.js} +1 -1
- codex/static_root/assets/VCheckbox-DY1Y0qsq.5973caad55d6.js.br +0 -0
- codex/static_root/assets/VCheckbox-DY1Y0qsq.5973caad55d6.js.gz +0 -0
- codex/static_root/assets/{VCheckbox-ttw6_0q4.js → VCheckbox-DY1Y0qsq.js} +1 -1
- codex/static_root/assets/VCheckbox-DY1Y0qsq.js.br +0 -0
- codex/static_root/assets/VCheckbox-DY1Y0qsq.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-Bp35_RPC.2e7cbdc1bbe6.js → VCheckboxBtn-DoFCs6Y9.88abdf571754.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.88abdf571754.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.88abdf571754.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-Bp35_RPC.js → VCheckboxBtn-DoFCs6Y9.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.js.gz +0 -0
- codex/static_root/assets/{VCombobox-BdgQw7Qf.7cd7b8be4c01.js → VCombobox-C005saY4.2ee5c283b1af.js} +1 -1
- codex/static_root/assets/VCombobox-C005saY4.2ee5c283b1af.js.br +0 -0
- codex/static_root/assets/VCombobox-C005saY4.2ee5c283b1af.js.gz +0 -0
- codex/static_root/assets/{VCombobox-BdgQw7Qf.js → VCombobox-C005saY4.js} +1 -1
- codex/static_root/assets/VCombobox-C005saY4.js.br +0 -0
- codex/static_root/assets/VCombobox-C005saY4.js.gz +0 -0
- codex/static_root/assets/{VDataTableVirtual-ZvTtvsAK.b62ea3cf1547.js → VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js} +1 -1
- codex/static_root/assets/VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js.gz +0 -0
- codex/static_root/assets/{VDataTableVirtual-ZvTtvsAK.js → VDataTableVirtual-Crv_Nkla.js} +1 -1
- codex/static_root/assets/VDataTableVirtual-Crv_Nkla.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-Crv_Nkla.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanel-B9_sAbP7.b7fddb409254.js → VExpansionPanel-DLEh10A9.0934876f09cd.js} +1 -1
- codex/static_root/assets/VExpansionPanel-DLEh10A9.0934876f09cd.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-DLEh10A9.0934876f09cd.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanel-B9_sAbP7.js → VExpansionPanel-DLEh10A9.js} +1 -1
- codex/static_root/assets/VExpansionPanel-DLEh10A9.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-DLEh10A9.js.gz +0 -0
- codex/static_root/assets/{VMain-BcJKdsRe.afbd9f0dd4f6.js → VMain-kAL6AAJw.679a45a634cd.js} +1 -1
- codex/static_root/assets/VMain-kAL6AAJw.679a45a634cd.js.br +0 -0
- codex/static_root/assets/VMain-kAL6AAJw.679a45a634cd.js.gz +0 -0
- codex/static_root/assets/{VMain-BcJKdsRe.js → VMain-kAL6AAJw.js} +1 -1
- codex/static_root/assets/VMain-kAL6AAJw.js.br +0 -0
- codex/static_root/assets/VMain-kAL6AAJw.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-LzINtWiV.8ee7ffab33b8.js → VRadioGroup-Dxdhr9bL.140138bee214.js} +1 -1
- codex/static_root/assets/VRadioGroup-Dxdhr9bL.140138bee214.js.br +5 -0
- codex/static_root/assets/VRadioGroup-Dxdhr9bL.140138bee214.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-LzINtWiV.js → VRadioGroup-Dxdhr9bL.js} +1 -1
- codex/static_root/assets/VRadioGroup-Dxdhr9bL.js.br +5 -0
- codex/static_root/assets/VRadioGroup-Dxdhr9bL.js.gz +0 -0
- codex/static_root/assets/{VSelect-Besri79c.js → VSelect-CZ9zKx45.02b646b81ba7.js} +1 -1
- codex/static_root/assets/VSelect-CZ9zKx45.02b646b81ba7.js.br +0 -0
- codex/static_root/assets/VSelect-CZ9zKx45.02b646b81ba7.js.gz +0 -0
- codex/static_root/assets/{VSelect-Besri79c.70e02b19d80e.js → VSelect-CZ9zKx45.js} +1 -1
- codex/static_root/assets/VSelect-CZ9zKx45.js.br +0 -0
- codex/static_root/assets/VSelect-CZ9zKx45.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-DcxpMWYl.6f305fe7c032.js → VSelectionControl-DmGWAnkU.0b1a0ca19c10.js} +1 -1
- codex/static_root/assets/VSelectionControl-DmGWAnkU.0b1a0ca19c10.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DmGWAnkU.0b1a0ca19c10.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-DcxpMWYl.js → VSelectionControl-DmGWAnkU.js} +1 -1
- codex/static_root/assets/VSelectionControl-DmGWAnkU.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DmGWAnkU.js.gz +0 -0
- codex/static_root/assets/{VSlideGroup-FjUTaP5Y.1056596d9350.js → VSlideGroup-Lzhz1ElM.13cda1a2d31f.js} +1 -1
- codex/static_root/assets/VSlideGroup-Lzhz1ElM.13cda1a2d31f.js.br +0 -0
- codex/static_root/assets/VSlideGroup-Lzhz1ElM.13cda1a2d31f.js.gz +0 -0
- codex/static_root/assets/{VSlideGroup-FjUTaP5Y.js → VSlideGroup-Lzhz1ElM.js} +1 -1
- codex/static_root/assets/VSlideGroup-Lzhz1ElM.js.br +0 -0
- codex/static_root/assets/VSlideGroup-Lzhz1ElM.js.gz +0 -0
- codex/static_root/assets/{VTable-_xkMh7Up.b12a3d30012a.js → VTable-Cs7OqRnv.6c1c551e1d50.js} +1 -1
- codex/static_root/assets/VTable-Cs7OqRnv.6c1c551e1d50.js.br +0 -0
- codex/static_root/assets/VTable-Cs7OqRnv.6c1c551e1d50.js.gz +0 -0
- codex/static_root/assets/{VTable-_xkMh7Up.js → VTable-Cs7OqRnv.js} +1 -1
- codex/static_root/assets/VTable-Cs7OqRnv.js.br +0 -0
- codex/static_root/assets/VTable-Cs7OqRnv.js.gz +0 -0
- codex/static_root/assets/{VToolbar-H46j-Kgh.js → VToolbar-B45qQyqr.5bad042a0a32.js} +2 -2
- codex/static_root/assets/VToolbar-B45qQyqr.5bad042a0a32.js.br +0 -0
- codex/static_root/assets/VToolbar-B45qQyqr.5bad042a0a32.js.gz +0 -0
- codex/static_root/assets/{VToolbar-H46j-Kgh.3a7df123d4f9.js → VToolbar-B45qQyqr.js} +2 -2
- codex/static_root/assets/VToolbar-B45qQyqr.js.br +0 -0
- codex/static_root/assets/VToolbar-B45qQyqr.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-y26XPVzz.43a47f7b2c6b.js → VWindowItem-CPdSif3f.c8c60df1a06e.js} +1 -1
- codex/static_root/assets/VWindowItem-CPdSif3f.c8c60df1a06e.js.br +0 -0
- codex/static_root/assets/VWindowItem-CPdSif3f.c8c60df1a06e.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-y26XPVzz.js → VWindowItem-CPdSif3f.js} +1 -1
- codex/static_root/assets/VWindowItem-CPdSif3f.js.br +0 -0
- codex/static_root/assets/VWindowItem-CPdSif3f.js.gz +0 -0
- codex/static_root/assets/{admin-DEHPwJ89.b8ac6095012a.js → admin-CuJft8Kj.7896b0403a73.js} +1 -1
- codex/static_root/assets/admin-CuJft8Kj.7896b0403a73.js.br +0 -0
- codex/static_root/assets/admin-CuJft8Kj.7896b0403a73.js.gz +0 -0
- codex/static_root/assets/{admin-DEHPwJ89.js → admin-CuJft8Kj.js} +1 -1
- codex/static_root/assets/admin-CuJft8Kj.js.br +0 -0
- codex/static_root/assets/admin-CuJft8Kj.js.gz +0 -0
- codex/static_root/assets/{admin-drawer-panel-BAMygpGL.81f38ddb56f9.js → admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js} +1 -1
- codex/static_root/assets/admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js.br +0 -0
- codex/static_root/assets/{admin-drawer-panel-BAMygpGL.81f38ddb56f9.js.gz → admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js.gz} +0 -0
- codex/static_root/assets/{admin-drawer-panel-BAMygpGL.js → admin-drawer-panel-Bw6sRseo.js} +1 -1
- codex/static_root/assets/admin-drawer-panel-Bw6sRseo.js.br +0 -0
- codex/static_root/assets/{admin-drawer-panel-BAMygpGL.js.gz → admin-drawer-panel-Bw6sRseo.js.gz} +0 -0
- codex/static_root/assets/{browser-D9gQuM8Q.js → browser-9_vS5P8d.52c168ccc66e.js} +1 -1
- codex/static_root/assets/browser-9_vS5P8d.52c168ccc66e.js.br +0 -0
- codex/static_root/assets/browser-9_vS5P8d.52c168ccc66e.js.gz +0 -0
- codex/static_root/assets/{browser-D9gQuM8Q.5b74e4abd0be.js → browser-9_vS5P8d.js} +1 -1
- codex/static_root/assets/browser-9_vS5P8d.js.br +0 -0
- codex/static_root/assets/browser-9_vS5P8d.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-CF2nKw7P.125a50b342eb.js → change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js} +1 -1
- codex/static_root/assets/change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js.br +0 -0
- codex/static_root/assets/change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-CF2nKw7P.js → change-password-dialog-Baa-qXXZ.js} +1 -1
- codex/static_root/assets/change-password-dialog-Baa-qXXZ.js.br +0 -0
- codex/static_root/assets/change-password-dialog-Baa-qXXZ.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-QuQQIjP8.cdc7a81752e0.js → confirm-dialog-GFYaCGnF.74926361ce10.js} +1 -1
- codex/static_root/assets/confirm-dialog-GFYaCGnF.74926361ce10.js.br +0 -0
- codex/static_root/assets/confirm-dialog-GFYaCGnF.74926361ce10.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-QuQQIjP8.js → confirm-dialog-GFYaCGnF.js} +1 -1
- codex/static_root/assets/confirm-dialog-GFYaCGnF.js.br +0 -0
- codex/static_root/assets/confirm-dialog-GFYaCGnF.js.gz +0 -0
- codex/static_root/assets/{confirm-footer-Dn2lMm3W.js → confirm-footer-BZ5z6tl1.3251a6549976.js} +1 -1
- codex/static_root/assets/confirm-footer-BZ5z6tl1.3251a6549976.js.br +0 -0
- codex/static_root/assets/confirm-footer-BZ5z6tl1.3251a6549976.js.gz +0 -0
- codex/static_root/assets/{confirm-footer-Dn2lMm3W.835aef2fb570.js → confirm-footer-BZ5z6tl1.js} +1 -1
- codex/static_root/assets/confirm-footer-BZ5z6tl1.js.br +0 -0
- codex/static_root/assets/confirm-footer-BZ5z6tl1.js.gz +0 -0
- codex/static_root/assets/{datetime-column-B-CY7WzA.a631764a2cc8.js → datetime-column-B1V0cYaU.0c46b8a368b1.js} +1 -1
- codex/static_root/assets/datetime-column-B1V0cYaU.0c46b8a368b1.js.br +0 -0
- codex/static_root/assets/datetime-column-B1V0cYaU.0c46b8a368b1.js.gz +0 -0
- codex/static_root/assets/{datetime-column-B-CY7WzA.js → datetime-column-B1V0cYaU.js} +1 -1
- codex/static_root/assets/datetime-column-B1V0cYaU.js.br +0 -0
- codex/static_root/assets/datetime-column-B1V0cYaU.js.gz +0 -0
- codex/static_root/assets/{filter-BVxPwa6D.959413f1bd2b.js → filter-D8l3lzk8.042233ea3486.js} +1 -1
- codex/static_root/assets/filter-D8l3lzk8.042233ea3486.js.br +0 -0
- codex/static_root/assets/filter-D8l3lzk8.042233ea3486.js.gz +0 -0
- codex/static_root/assets/{filter-BVxPwa6D.js → filter-D8l3lzk8.js} +1 -1
- codex/static_root/assets/filter-D8l3lzk8.js.br +0 -0
- codex/static_root/assets/filter-D8l3lzk8.js.gz +0 -0
- codex/static_root/assets/{flag-tab-C0HVn22U.2326fae5cbf7.js → flag-tab-BDPywFPd.63518f50890d.js} +1 -1
- codex/static_root/assets/flag-tab-BDPywFPd.63518f50890d.js.br +0 -0
- codex/static_root/assets/flag-tab-BDPywFPd.63518f50890d.js.gz +0 -0
- codex/static_root/assets/{flag-tab-C0HVn22U.js → flag-tab-BDPywFPd.js} +1 -1
- codex/static_root/assets/flag-tab-BDPywFPd.js.br +0 -0
- codex/static_root/assets/flag-tab-BDPywFPd.js.gz +0 -0
- codex/static_root/assets/{group-tab-BlICJO3Q.9e9032f9f67f.js → group-tab-KqXSGW5M.01cbb8a1405f.js} +1 -1
- codex/static_root/assets/group-tab-KqXSGW5M.01cbb8a1405f.js.br +0 -0
- codex/static_root/assets/group-tab-KqXSGW5M.01cbb8a1405f.js.gz +0 -0
- codex/static_root/assets/{group-tab-BlICJO3Q.js → group-tab-KqXSGW5M.js} +1 -1
- codex/static_root/assets/group-tab-KqXSGW5M.js.br +0 -0
- codex/static_root/assets/group-tab-KqXSGW5M.js.gz +0 -0
- codex/static_root/assets/{http-error-Be3cZPit.2d57cdb17fed.js → http-error-5WhCKib6.b2f36af25a6f.js} +1 -1
- codex/static_root/assets/http-error-5WhCKib6.b2f36af25a6f.js.br +4 -0
- codex/static_root/assets/http-error-5WhCKib6.b2f36af25a6f.js.gz +0 -0
- codex/static_root/assets/{http-error-Be3cZPit.js → http-error-5WhCKib6.js} +1 -1
- codex/static_root/assets/http-error-5WhCKib6.js.br +4 -0
- codex/static_root/assets/http-error-5WhCKib6.js.gz +0 -0
- codex/static_root/assets/{library-tab-MJT0zrXp.769e06a80444.js → library-tab-BqoBlTet.89bd37b52a52.js} +1 -1
- codex/static_root/assets/library-tab-BqoBlTet.89bd37b52a52.js.br +0 -0
- codex/static_root/assets/library-tab-BqoBlTet.89bd37b52a52.js.gz +0 -0
- codex/static_root/assets/{library-tab-MJT0zrXp.js → library-tab-BqoBlTet.js} +1 -1
- codex/static_root/assets/library-tab-BqoBlTet.js.br +0 -0
- codex/static_root/assets/library-tab-BqoBlTet.js.gz +0 -0
- codex/static_root/assets/{main-Bgnbd-Ed.js → main-D3DHt-EP.d53d3204d5c3.js} +6 -6
- codex/static_root/assets/main-D3DHt-EP.d53d3204d5c3.js.br +0 -0
- codex/static_root/assets/main-D3DHt-EP.d53d3204d5c3.js.gz +0 -0
- codex/static_root/assets/{main-Bgnbd-Ed.5bbbe22860ba.js → main-D3DHt-EP.js} +6 -6
- codex/static_root/assets/main-D3DHt-EP.js.br +0 -0
- codex/static_root/assets/main-D3DHt-EP.js.gz +0 -0
- codex/static_root/assets/{metadata-dialog-DtV61Pw5.9a11d5a06e03.js → metadata-dialog-CJcprkxf.3042328b6353.js} +1 -1
- codex/static_root/assets/metadata-dialog-CJcprkxf.3042328b6353.js.br +0 -0
- codex/static_root/assets/metadata-dialog-CJcprkxf.3042328b6353.js.gz +0 -0
- codex/static_root/assets/{metadata-dialog-DtV61Pw5.js → metadata-dialog-CJcprkxf.js} +1 -1
- codex/static_root/assets/metadata-dialog-CJcprkxf.js.br +0 -0
- codex/static_root/assets/metadata-dialog-CJcprkxf.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-DuP9ULnS.9ff15acd5eae.js → pdf-doc-CAMtvE6R.995dfc33e383.js} +3 -3
- codex/static_root/assets/pdf-doc-CAMtvE6R.995dfc33e383.js.br +0 -0
- codex/static_root/assets/pdf-doc-CAMtvE6R.995dfc33e383.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-DuP9ULnS.js → pdf-doc-CAMtvE6R.js} +3 -3
- codex/static_root/assets/pdf-doc-CAMtvE6R.js.br +0 -0
- codex/static_root/assets/pdf-doc-CAMtvE6R.js.gz +0 -0
- codex/static_root/assets/{reader-CVGGg4wf.0829006dc124.js → reader-zEw6Fz0p.c832c228c37b.js} +2 -2
- codex/static_root/assets/reader-zEw6Fz0p.c832c228c37b.js.br +0 -0
- codex/static_root/assets/reader-zEw6Fz0p.c832c228c37b.js.gz +0 -0
- codex/static_root/assets/{reader-CVGGg4wf.js → reader-zEw6Fz0p.js} +2 -2
- codex/static_root/assets/reader-zEw6Fz0p.js.br +0 -0
- codex/static_root/assets/reader-zEw6Fz0p.js.gz +0 -0
- codex/static_root/assets/{stats-tab-sFnCfXbF.3e5593abec1f.js → stats-tab-qkgb7Upv.8768847dc063.js} +1 -1
- codex/static_root/assets/stats-tab-qkgb7Upv.8768847dc063.js.br +0 -0
- codex/static_root/assets/stats-tab-qkgb7Upv.8768847dc063.js.gz +0 -0
- codex/static_root/assets/{stats-tab-sFnCfXbF.js → stats-tab-qkgb7Upv.js} +1 -1
- codex/static_root/assets/stats-tab-qkgb7Upv.js.br +0 -0
- codex/static_root/assets/stats-tab-qkgb7Upv.js.gz +0 -0
- codex/static_root/assets/{task-tab-Bl8L5IRe.4b97affd95dc.js → task-tab-BN1YRCAx.6fcf833588f3.js} +1 -1
- codex/static_root/assets/task-tab-BN1YRCAx.6fcf833588f3.js.br +0 -0
- codex/static_root/assets/task-tab-BN1YRCAx.6fcf833588f3.js.gz +0 -0
- codex/static_root/assets/{task-tab-Bl8L5IRe.js → task-tab-BN1YRCAx.js} +1 -1
- codex/static_root/assets/task-tab-BN1YRCAx.js.br +0 -0
- codex/static_root/assets/task-tab-BN1YRCAx.js.gz +0 -0
- codex/static_root/assets/{user-tab-CqD-l9Jl.557c62d75ddb.js → user-tab-CUFrpTg3.7e1cbcbed523.js} +1 -1
- codex/static_root/assets/user-tab-CUFrpTg3.7e1cbcbed523.js.br +0 -0
- codex/static_root/assets/user-tab-CUFrpTg3.7e1cbcbed523.js.gz +0 -0
- codex/static_root/assets/{user-tab-CqD-l9Jl.js → user-tab-CUFrpTg3.js} +1 -1
- codex/static_root/assets/user-tab-CUFrpTg3.js.br +0 -0
- codex/static_root/assets/user-tab-CUFrpTg3.js.gz +0 -0
- codex/static_root/manifest.2e1bd449ab2a.json +607 -0
- codex/static_root/manifest.2e1bd449ab2a.json.br +0 -0
- codex/static_root/manifest.2e1bd449ab2a.json.gz +0 -0
- codex/static_root/manifest.json +240 -206
- 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.5.4.dist-info → codex-1.5.6.dist-info}/METADATA +3 -3
- {codex-1.5.4.dist-info → codex-1.5.6.dist-info}/RECORD +207 -207
- codex/static_root/assets/VCheckbox-ttw6_0q4.1ea7e82279a8.js.br +0 -0
- codex/static_root/assets/VCheckbox-ttw6_0q4.1ea7e82279a8.js.gz +0 -0
- codex/static_root/assets/VCheckbox-ttw6_0q4.js.br +0 -0
- codex/static_root/assets/VCheckbox-ttw6_0q4.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-Bp35_RPC.2e7cbdc1bbe6.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-Bp35_RPC.2e7cbdc1bbe6.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-Bp35_RPC.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-Bp35_RPC.js.gz +0 -0
- codex/static_root/assets/VCombobox-BdgQw7Qf.7cd7b8be4c01.js.br +0 -0
- codex/static_root/assets/VCombobox-BdgQw7Qf.7cd7b8be4c01.js.gz +0 -0
- codex/static_root/assets/VCombobox-BdgQw7Qf.js.br +0 -0
- codex/static_root/assets/VCombobox-BdgQw7Qf.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-ZvTtvsAK.b62ea3cf1547.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-ZvTtvsAK.b62ea3cf1547.js.gz +0 -0
- codex/static_root/assets/VDataTableVirtual-ZvTtvsAK.js.br +0 -0
- codex/static_root/assets/VDataTableVirtual-ZvTtvsAK.js.gz +0 -0
- codex/static_root/assets/VExpansionPanel-B9_sAbP7.b7fddb409254.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-B9_sAbP7.b7fddb409254.js.gz +0 -0
- codex/static_root/assets/VExpansionPanel-B9_sAbP7.js.br +0 -0
- codex/static_root/assets/VExpansionPanel-B9_sAbP7.js.gz +0 -0
- codex/static_root/assets/VMain-BcJKdsRe.afbd9f0dd4f6.js.br +0 -0
- codex/static_root/assets/VMain-BcJKdsRe.afbd9f0dd4f6.js.gz +0 -0
- codex/static_root/assets/VMain-BcJKdsRe.js.br +0 -0
- codex/static_root/assets/VMain-BcJKdsRe.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-LzINtWiV.8ee7ffab33b8.js.br +0 -0
- codex/static_root/assets/VRadioGroup-LzINtWiV.8ee7ffab33b8.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-LzINtWiV.js.br +0 -0
- codex/static_root/assets/VRadioGroup-LzINtWiV.js.gz +0 -0
- codex/static_root/assets/VSelect-Besri79c.70e02b19d80e.js.br +0 -0
- codex/static_root/assets/VSelect-Besri79c.70e02b19d80e.js.gz +0 -0
- codex/static_root/assets/VSelect-Besri79c.js.br +0 -0
- codex/static_root/assets/VSelect-Besri79c.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-DcxpMWYl.6f305fe7c032.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DcxpMWYl.6f305fe7c032.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-DcxpMWYl.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DcxpMWYl.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-FjUTaP5Y.1056596d9350.js.br +0 -0
- codex/static_root/assets/VSlideGroup-FjUTaP5Y.1056596d9350.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-FjUTaP5Y.js.br +0 -0
- codex/static_root/assets/VSlideGroup-FjUTaP5Y.js.gz +0 -0
- codex/static_root/assets/VTable-_xkMh7Up.b12a3d30012a.js.br +0 -0
- codex/static_root/assets/VTable-_xkMh7Up.b12a3d30012a.js.gz +0 -0
- codex/static_root/assets/VTable-_xkMh7Up.js.br +0 -0
- codex/static_root/assets/VTable-_xkMh7Up.js.gz +0 -0
- codex/static_root/assets/VToolbar-H46j-Kgh.3a7df123d4f9.js.br +0 -0
- codex/static_root/assets/VToolbar-H46j-Kgh.3a7df123d4f9.js.gz +0 -0
- codex/static_root/assets/VToolbar-H46j-Kgh.js.br +0 -0
- codex/static_root/assets/VToolbar-H46j-Kgh.js.gz +0 -0
- codex/static_root/assets/VWindowItem-y26XPVzz.43a47f7b2c6b.js.br +0 -0
- codex/static_root/assets/VWindowItem-y26XPVzz.43a47f7b2c6b.js.gz +0 -0
- codex/static_root/assets/VWindowItem-y26XPVzz.js.br +0 -0
- codex/static_root/assets/VWindowItem-y26XPVzz.js.gz +0 -0
- codex/static_root/assets/admin-DEHPwJ89.b8ac6095012a.js.br +0 -0
- codex/static_root/assets/admin-DEHPwJ89.b8ac6095012a.js.gz +0 -0
- codex/static_root/assets/admin-DEHPwJ89.js.br +0 -0
- codex/static_root/assets/admin-DEHPwJ89.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-BAMygpGL.81f38ddb56f9.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-BAMygpGL.js.br +0 -0
- codex/static_root/assets/browser-D9gQuM8Q.5b74e4abd0be.js.br +0 -0
- codex/static_root/assets/browser-D9gQuM8Q.5b74e4abd0be.js.gz +0 -0
- codex/static_root/assets/browser-D9gQuM8Q.js.br +0 -0
- codex/static_root/assets/browser-D9gQuM8Q.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CF2nKw7P.125a50b342eb.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CF2nKw7P.125a50b342eb.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CF2nKw7P.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CF2nKw7P.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-QuQQIjP8.cdc7a81752e0.js.br +0 -0
- codex/static_root/assets/confirm-dialog-QuQQIjP8.cdc7a81752e0.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-QuQQIjP8.js.br +0 -0
- codex/static_root/assets/confirm-dialog-QuQQIjP8.js.gz +0 -0
- codex/static_root/assets/confirm-footer-Dn2lMm3W.835aef2fb570.js.br +0 -0
- codex/static_root/assets/confirm-footer-Dn2lMm3W.835aef2fb570.js.gz +0 -0
- codex/static_root/assets/confirm-footer-Dn2lMm3W.js.br +0 -0
- codex/static_root/assets/confirm-footer-Dn2lMm3W.js.gz +0 -0
- codex/static_root/assets/datetime-column-B-CY7WzA.a631764a2cc8.js.br +0 -0
- codex/static_root/assets/datetime-column-B-CY7WzA.a631764a2cc8.js.gz +0 -0
- codex/static_root/assets/datetime-column-B-CY7WzA.js.br +0 -0
- codex/static_root/assets/datetime-column-B-CY7WzA.js.gz +0 -0
- codex/static_root/assets/filter-BVxPwa6D.959413f1bd2b.js.br +0 -0
- codex/static_root/assets/filter-BVxPwa6D.959413f1bd2b.js.gz +0 -0
- codex/static_root/assets/filter-BVxPwa6D.js.br +0 -0
- codex/static_root/assets/filter-BVxPwa6D.js.gz +0 -0
- codex/static_root/assets/flag-tab-C0HVn22U.2326fae5cbf7.js.br +0 -0
- codex/static_root/assets/flag-tab-C0HVn22U.2326fae5cbf7.js.gz +0 -0
- codex/static_root/assets/flag-tab-C0HVn22U.js.br +0 -0
- codex/static_root/assets/flag-tab-C0HVn22U.js.gz +0 -0
- codex/static_root/assets/group-tab-BlICJO3Q.9e9032f9f67f.js.br +0 -0
- codex/static_root/assets/group-tab-BlICJO3Q.9e9032f9f67f.js.gz +0 -0
- codex/static_root/assets/group-tab-BlICJO3Q.js.br +0 -0
- codex/static_root/assets/group-tab-BlICJO3Q.js.gz +0 -0
- codex/static_root/assets/http-error-Be3cZPit.2d57cdb17fed.js.br +0 -0
- codex/static_root/assets/http-error-Be3cZPit.2d57cdb17fed.js.gz +0 -0
- codex/static_root/assets/http-error-Be3cZPit.js.br +0 -0
- codex/static_root/assets/http-error-Be3cZPit.js.gz +0 -0
- codex/static_root/assets/library-tab-MJT0zrXp.769e06a80444.js.br +0 -0
- codex/static_root/assets/library-tab-MJT0zrXp.769e06a80444.js.gz +0 -0
- codex/static_root/assets/library-tab-MJT0zrXp.js.br +0 -0
- codex/static_root/assets/library-tab-MJT0zrXp.js.gz +0 -0
- codex/static_root/assets/main-Bgnbd-Ed.5bbbe22860ba.js.br +0 -0
- codex/static_root/assets/main-Bgnbd-Ed.5bbbe22860ba.js.gz +0 -0
- codex/static_root/assets/main-Bgnbd-Ed.js.br +0 -0
- codex/static_root/assets/main-Bgnbd-Ed.js.gz +0 -0
- codex/static_root/assets/metadata-dialog-DtV61Pw5.9a11d5a06e03.js.br +0 -0
- codex/static_root/assets/metadata-dialog-DtV61Pw5.9a11d5a06e03.js.gz +0 -0
- codex/static_root/assets/metadata-dialog-DtV61Pw5.js.br +0 -0
- codex/static_root/assets/metadata-dialog-DtV61Pw5.js.gz +0 -0
- codex/static_root/assets/pdf-doc-DuP9ULnS.9ff15acd5eae.js.br +0 -0
- codex/static_root/assets/pdf-doc-DuP9ULnS.9ff15acd5eae.js.gz +0 -0
- codex/static_root/assets/pdf-doc-DuP9ULnS.js.br +0 -0
- codex/static_root/assets/pdf-doc-DuP9ULnS.js.gz +0 -0
- codex/static_root/assets/reader-CVGGg4wf.0829006dc124.js.br +0 -0
- codex/static_root/assets/reader-CVGGg4wf.0829006dc124.js.gz +0 -0
- codex/static_root/assets/reader-CVGGg4wf.js.br +0 -0
- codex/static_root/assets/reader-CVGGg4wf.js.gz +0 -0
- codex/static_root/assets/stats-tab-sFnCfXbF.3e5593abec1f.js.br +0 -0
- codex/static_root/assets/stats-tab-sFnCfXbF.3e5593abec1f.js.gz +0 -0
- codex/static_root/assets/stats-tab-sFnCfXbF.js.br +0 -0
- codex/static_root/assets/stats-tab-sFnCfXbF.js.gz +0 -0
- codex/static_root/assets/task-tab-Bl8L5IRe.4b97affd95dc.js.br +0 -0
- codex/static_root/assets/task-tab-Bl8L5IRe.4b97affd95dc.js.gz +0 -0
- codex/static_root/assets/task-tab-Bl8L5IRe.js.br +0 -0
- codex/static_root/assets/task-tab-Bl8L5IRe.js.gz +0 -0
- codex/static_root/assets/user-tab-CqD-l9Jl.557c62d75ddb.js.br +0 -0
- codex/static_root/assets/user-tab-CqD-l9Jl.557c62d75ddb.js.gz +0 -0
- codex/static_root/assets/user-tab-CqD-l9Jl.js.br +0 -0
- codex/static_root/assets/user-tab-CqD-l9Jl.js.gz +0 -0
- codex/static_root/manifest.4a8540baa310.json +0 -573
- codex/static_root/manifest.4a8540baa310.json.br +0 -0
- codex/static_root/manifest.4a8540baa310.json.gz +0 -0
- {codex-1.5.4.dist-info → codex-1.5.6.dist-info}/LICENSE +0 -0
- {codex-1.5.4.dist-info → codex-1.5.6.dist-info}/WHEEL +0 -0
- {codex-1.5.4.dist-info → codex-1.5.6.dist-info}/entry_points.txt +0 -0
|
@@ -35,6 +35,7 @@ from codex.models import (
|
|
|
35
35
|
Volume,
|
|
36
36
|
)
|
|
37
37
|
from codex.models.named import Identifier
|
|
38
|
+
from codex.settings.settings import FILTER_BATCH_SIZE
|
|
38
39
|
from codex.status import Status
|
|
39
40
|
from codex.threads import QueuedThread
|
|
40
41
|
|
|
@@ -50,10 +51,6 @@ _CLASS_QUERY_FIELDS_MAP = {
|
|
|
50
51
|
Identifier: ("identifier_type__name", "nss", "url"),
|
|
51
52
|
}
|
|
52
53
|
_DEFAULT_QUERY_FIELDS = ("name",)
|
|
53
|
-
# sqlite parser breaks with more than 1000 variables in a query and django only
|
|
54
|
-
# fixes this in the bulk_create & bulk_update functions. So for complicated
|
|
55
|
-
# queries I gotta batch them myself. Filter arg count is a proxy, but it works.
|
|
56
|
-
_SQLITE_FILTER_ARG_MAX = 990
|
|
57
54
|
|
|
58
55
|
LOG = get_logger(__name__)
|
|
59
56
|
|
|
@@ -77,21 +74,21 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
77
74
|
def _query_existing_mds(fk_cls, fk_filter):
|
|
78
75
|
"""Query existing metatata tables."""
|
|
79
76
|
fields = _CLASS_QUERY_FIELDS_MAP.get(fk_cls, _DEFAULT_QUERY_FIELDS)
|
|
80
|
-
if not fields:
|
|
81
|
-
fields = ("name",)
|
|
82
77
|
flat = len(fields) == 1 and fk_cls != Publisher
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
# print(fk_filter)
|
|
79
|
+
qs = (
|
|
85
80
|
fk_cls.objects.filter(fk_filter)
|
|
86
81
|
.order_by("pk")
|
|
87
82
|
.values_list(*fields, flat=flat)
|
|
88
83
|
)
|
|
84
|
+
return frozenset(qs)
|
|
89
85
|
|
|
90
|
-
def _query_create_metadata(
|
|
86
|
+
def _query_create_metadata( # noqa: PLR0913
|
|
91
87
|
self,
|
|
92
88
|
fk_cls,
|
|
93
89
|
create_mds,
|
|
94
90
|
q_obj: Q,
|
|
91
|
+
q_and_chunk_prefix,
|
|
95
92
|
status,
|
|
96
93
|
):
|
|
97
94
|
"""Get create metadata by comparing proposed meatada to existing rows."""
|
|
@@ -101,9 +98,12 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
101
98
|
offset = 0
|
|
102
99
|
num_qs = len(q_obj.children)
|
|
103
100
|
while offset < num_qs:
|
|
104
|
-
# Do this in batches so as not to exceed the 1k
|
|
105
|
-
|
|
101
|
+
# Do this in batches so as not to exceed the sqlite 1k expression tree depth limit
|
|
102
|
+
# django.db.utils.OperationalError: Expression tree is too large (maximum depth 1000)
|
|
103
|
+
children_chunk = q_obj.children[offset : offset + FILTER_BATCH_SIZE]
|
|
106
104
|
filter_chunk = Q(*children_chunk, _connector=Q.OR)
|
|
105
|
+
if q_and_chunk_prefix:
|
|
106
|
+
filter_chunk = q_and_chunk_prefix & filter_chunk
|
|
107
107
|
|
|
108
108
|
existing_mds = self._query_existing_mds(fk_cls, filter_chunk)
|
|
109
109
|
create_mds.difference_update(existing_mds)
|
|
@@ -111,7 +111,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
111
111
|
status.complete += len(filter_chunk)
|
|
112
112
|
self.status_controller.update(status)
|
|
113
113
|
|
|
114
|
-
offset +=
|
|
114
|
+
offset += FILTER_BATCH_SIZE
|
|
115
115
|
|
|
116
116
|
if status:
|
|
117
117
|
status.subtitle = ""
|
|
@@ -154,7 +154,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
154
154
|
|
|
155
155
|
candidate_groups = set(groups.keys())
|
|
156
156
|
count = self._query_create_metadata(
|
|
157
|
-
group_cls, candidate_groups, all_filters, status
|
|
157
|
+
group_cls, candidate_groups, all_filters, None, status
|
|
158
158
|
)
|
|
159
159
|
create_group_set.update(candidate_groups)
|
|
160
160
|
return count
|
|
@@ -223,9 +223,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
223
223
|
num_qs = len(group_filter.children)
|
|
224
224
|
while offset < num_qs:
|
|
225
225
|
# Do this in batches so as not to exceed the 1k line sqlite limit
|
|
226
|
-
children_chunk = group_filter.children[
|
|
227
|
-
offset : offset + _SQLITE_FILTER_ARG_MAX
|
|
228
|
-
]
|
|
226
|
+
children_chunk = group_filter.children[offset : offset + FILTER_BATCH_SIZE]
|
|
229
227
|
filter_chunk = Q(*children_chunk, _connector=Q.OR)
|
|
230
228
|
|
|
231
229
|
existing = group_cls.objects.filter(filter_chunk).values_list(
|
|
@@ -235,7 +233,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
235
233
|
exist_tree = tuple(exist_tuple[:-1])
|
|
236
234
|
exist_dict[exist_tree] = exist_tuple[-1]
|
|
237
235
|
|
|
238
|
-
offset +=
|
|
236
|
+
offset += FILTER_BATCH_SIZE
|
|
239
237
|
return exist_dict
|
|
240
238
|
|
|
241
239
|
@staticmethod
|
|
@@ -319,11 +317,10 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
319
317
|
#########
|
|
320
318
|
@staticmethod
|
|
321
319
|
def _query_missing_identifiers_model_obj(
|
|
322
|
-
|
|
320
|
+
key_rel, value_rel_map, item, possible_create_objs
|
|
323
321
|
):
|
|
324
322
|
"""Update all_filters and possible_create_objs for identifiers."""
|
|
325
323
|
# identifiers is unique at this time for having more than one value as a dict.
|
|
326
|
-
key_rel, value_rel_map = rels
|
|
327
324
|
key, values = item
|
|
328
325
|
values_list = []
|
|
329
326
|
for val in values:
|
|
@@ -339,38 +336,45 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
339
336
|
value_filter |= value_sub_filter
|
|
340
337
|
|
|
341
338
|
if not value_filter:
|
|
342
|
-
return
|
|
339
|
+
return value_filter, None
|
|
343
340
|
|
|
344
|
-
obj_filter = Q(**{key_rel: key})
|
|
345
|
-
all_filters = all_filters | obj_filter
|
|
341
|
+
obj_filter = Q(**{key_rel: key})
|
|
346
342
|
|
|
347
343
|
for value in values:
|
|
348
344
|
possible_create_objs.add((key, value))
|
|
349
|
-
return
|
|
345
|
+
return value_filter, obj_filter
|
|
350
346
|
|
|
351
347
|
@staticmethod
|
|
352
|
-
def _query_missing_dict_model_obj(
|
|
348
|
+
def _query_missing_dict_model_obj(key_rel, value_rel, item, possible_create_objs):
|
|
353
349
|
"""Update all_filters and possible_create_objs for this obj."""
|
|
354
|
-
key_rel, value_rel = rels
|
|
355
350
|
key, values = item
|
|
356
351
|
|
|
357
352
|
filter_isnull = None in values
|
|
358
353
|
filter_values = values - {None}
|
|
359
354
|
|
|
355
|
+
if not filter_values and not filter_isnull:
|
|
356
|
+
return Q(), None
|
|
357
|
+
|
|
360
358
|
value_filter = (
|
|
361
359
|
Q(**{f"{value_rel}__in": filter_values}) if filter_values else Q()
|
|
362
360
|
)
|
|
363
361
|
if filter_isnull:
|
|
364
362
|
value_filter = value_filter | Q(**{f"{value_rel}__isnull": True})
|
|
365
|
-
if not value_filter:
|
|
366
|
-
return all_filters
|
|
367
363
|
|
|
368
|
-
obj_filter = Q(**{key_rel: key})
|
|
369
|
-
all_filters = all_filters | obj_filter
|
|
364
|
+
obj_filter = Q(**{key_rel: key})
|
|
370
365
|
|
|
371
366
|
for value in values:
|
|
372
367
|
possible_create_objs.add((key, value))
|
|
373
|
-
return
|
|
368
|
+
return value_filter, obj_filter
|
|
369
|
+
|
|
370
|
+
@staticmethod
|
|
371
|
+
def _add_value_filter_map(value_filter, filter_and_prefix, query_filter_map):
|
|
372
|
+
"""Add a filter_and_prefix and the value filter to the map."""
|
|
373
|
+
if not value_filter:
|
|
374
|
+
return
|
|
375
|
+
if filter_and_prefix not in query_filter_map:
|
|
376
|
+
query_filter_map[filter_and_prefix] = Q()
|
|
377
|
+
query_filter_map[filter_and_prefix] |= value_filter
|
|
374
378
|
|
|
375
379
|
def _query_missing_dict_model(self, field_name, fks, create_objs, status):
|
|
376
380
|
"""Find missing dict type m2m models with a supplied filter method."""
|
|
@@ -380,28 +384,31 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
380
384
|
return count
|
|
381
385
|
|
|
382
386
|
possible_create_objs = set()
|
|
383
|
-
|
|
387
|
+
query_filter_map = {}
|
|
384
388
|
# create the filter
|
|
385
|
-
if field_name == "identifiers":
|
|
386
|
-
model, key_rel, value_rel = IDENTIFIERS_MODEL_REL_MAP[field_name]
|
|
387
|
-
rels = (key_rel, value_rel)
|
|
388
389
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
)
|
|
390
|
+
if field_name == "identifiers":
|
|
391
|
+
rel_map = IDENTIFIERS_MODEL_REL_MAP
|
|
392
|
+
query_missing_method = self._query_missing_identifiers_model_obj
|
|
393
393
|
else:
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
394
|
+
rel_map = DICT_MODEL_REL_MAP
|
|
395
|
+
query_missing_method = self._query_missing_dict_model_obj
|
|
396
|
+
|
|
397
|
+
model, key_rel, value_rel = rel_map[field_name]
|
|
398
|
+
|
|
399
|
+
for item in possible_objs.items():
|
|
400
|
+
value_filter, filter_and_prefix = query_missing_method(
|
|
401
|
+
key_rel, value_rel, item, possible_create_objs
|
|
402
|
+
)
|
|
403
|
+
self._add_value_filter_map(
|
|
404
|
+
value_filter, filter_and_prefix, query_filter_map
|
|
405
|
+
)
|
|
400
406
|
|
|
401
407
|
# get the obj metadata
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
408
|
+
for filter_and_prefix, value_filter in query_filter_map.items():
|
|
409
|
+
count += self._query_create_metadata(
|
|
410
|
+
model, possible_create_objs, value_filter, filter_and_prefix, status
|
|
411
|
+
)
|
|
405
412
|
|
|
406
413
|
create_objs.update(possible_create_objs)
|
|
407
414
|
count = len(create_objs)
|
|
@@ -438,7 +445,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
438
445
|
status.subtitle = vnp
|
|
439
446
|
while start < num_proposed_names:
|
|
440
447
|
# Do this in batches so as not to exceed the 1k line sqlite limit
|
|
441
|
-
end = start +
|
|
448
|
+
end = start + FILTER_BATCH_SIZE
|
|
442
449
|
batch_proposed_names = proposed_names[start:end]
|
|
443
450
|
filter_args = {f"{fk_field}__in": batch_proposed_names}
|
|
444
451
|
fk_filter = Q(**filter_args)
|
|
@@ -449,7 +456,7 @@ class QueryForeignKeysMixin(QueuedThread):
|
|
|
449
456
|
status.complete = status.complete or 0
|
|
450
457
|
status.complete += num_in_batch
|
|
451
458
|
self.status_controller.update(status)
|
|
452
|
-
start +=
|
|
459
|
+
start += FILTER_BATCH_SIZE
|
|
453
460
|
|
|
454
461
|
if status:
|
|
455
462
|
status.subtitle = ""
|
codex/librarian/search/update.py
CHANGED
|
@@ -9,12 +9,9 @@ from zoneinfo import ZoneInfo
|
|
|
9
9
|
|
|
10
10
|
from django.core.exceptions import ObjectDoesNotExist
|
|
11
11
|
from django.db import DatabaseError
|
|
12
|
-
from django.db.models import Q
|
|
13
12
|
from humanize import naturaldelta
|
|
14
|
-
from whoosh.query import Every
|
|
15
13
|
|
|
16
14
|
from codex._vendor.haystack.exceptions import SearchFieldError
|
|
17
|
-
from codex._vendor.haystack.indexes import DJANGO_ID
|
|
18
15
|
from codex.librarian.search.remove import RemoveMixin
|
|
19
16
|
from codex.librarian.search.status import SearchIndexStatusTypes
|
|
20
17
|
from codex.librarian.search.tasks import SearchIndexRemoveStaleTask
|
|
@@ -54,6 +51,7 @@ class UpdateMixin(RemoveMixin):
|
|
|
54
51
|
)
|
|
55
52
|
_MAX_RETRIES = 8
|
|
56
53
|
_CPU_MULTIPLIER = CPU_MULTIPLIER
|
|
54
|
+
_UPDATE_SORT_BY = ("-updated_at",)
|
|
57
55
|
|
|
58
56
|
def _init_statuses(self, rebuild):
|
|
59
57
|
"""Initialize all statuses order before starting."""
|
|
@@ -65,32 +63,15 @@ class UpdateMixin(RemoveMixin):
|
|
|
65
63
|
statii += [Status(SearchIndexStatusTypes.SEARCH_INDEX_REMOVE)]
|
|
66
64
|
self.status_controller.start_many(statii)
|
|
67
65
|
|
|
68
|
-
def _get_queryset_from_search_results(self, results, qs, suffix):
|
|
69
|
-
"""Use python to find the lowest date and any missing rows."""
|
|
70
|
-
all_index_pks = []
|
|
71
|
-
index_latest_updated_at = self._MIN_UTC_DATE
|
|
72
|
-
for result in results:
|
|
73
|
-
all_index_pks.append(result.get(DJANGO_ID))
|
|
74
|
-
result_updated_at = result.get("updated_at")
|
|
75
|
-
if result_updated_at and result_updated_at > index_latest_updated_at:
|
|
76
|
-
index_latest_updated_at = result_updated_at
|
|
77
|
-
if index_latest_updated_at > self._MIN_UTC_DATE:
|
|
78
|
-
qs = qs.filter(
|
|
79
|
-
Q(updated_at__gt=index_latest_updated_at) | ~Q(pk__in=all_index_pks)
|
|
80
|
-
)
|
|
81
|
-
suffix = f"since {index_latest_updated_at}"
|
|
82
|
-
|
|
83
|
-
return qs, suffix
|
|
84
|
-
|
|
85
66
|
def _get_queryset_from_search_index(self, backend, qs, suffix):
|
|
86
67
|
"""Get the date of the last updated item in the search index."""
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
68
|
+
search_results = backend.search("*", sort_by=self._UPDATE_SORT_BY)
|
|
69
|
+
results = search_results.get("results")
|
|
70
|
+
if results:
|
|
71
|
+
most_recent_result = results[0]
|
|
72
|
+
most_recent_updated_at = most_recent_result.updated_at
|
|
73
|
+
qs = qs.filter(updated_at__gt=most_recent_updated_at)
|
|
74
|
+
suffix = f"since {most_recent_updated_at}"
|
|
94
75
|
|
|
95
76
|
return qs, suffix
|
|
96
77
|
|
codex/settings/settings.py
CHANGED
|
@@ -293,11 +293,11 @@ HAYSTACK_CONNECTIONS = {
|
|
|
293
293
|
}
|
|
294
294
|
HAYSTACK_LOGGING = False
|
|
295
295
|
# Search indexing memory controls
|
|
296
|
-
MMAP_RATIO = int(environ.get("
|
|
297
|
-
WRITER_MEMORY_PERCENT = float(environ.get("
|
|
298
|
-
CPU_MULTIPLIER = float(environ.get("
|
|
299
|
-
CHUNK_PER_GB = int(environ.get("
|
|
300
|
-
MAX_CHUNK_SIZE = int(environ.get("
|
|
296
|
+
MMAP_RATIO = int(environ.get("CODEX_MMAP_RATIO", 240))
|
|
297
|
+
WRITER_MEMORY_PERCENT = float(environ.get("CODEX_WRITER_MEMORY_PERCENT", 0.6))
|
|
298
|
+
CPU_MULTIPLIER = float(environ.get("CODEX_CPU_MULTIPLIER", 1.25))
|
|
299
|
+
CHUNK_PER_GB = int(environ.get("CODEX_CHUNK_PER_GB", 250))
|
|
300
|
+
MAX_CHUNK_SIZE = int(environ.get("CODEX_MAX_CHUNK_SIZE", 1000))
|
|
301
301
|
|
|
302
302
|
CHANNEL_LAYERS = {
|
|
303
303
|
"default": {"BACKEND": "channels.layers.InMemoryChannelLayer"},
|
|
@@ -312,3 +312,8 @@ if DEBUG:
|
|
|
312
312
|
"dev_server_host": environ.get("VITE_HOST", socket.gethostname()),
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
|
+
|
|
316
|
+
# sqlite parser breaks with more than 1000 variables in a query and django only
|
|
317
|
+
# fixes this in the bulk_create & bulk_update functions. So for complicated
|
|
318
|
+
# queries I gotta batch them myself. Filter arg count is a proxy, but it works.
|
|
319
|
+
FILTER_BATCH_SIZE = int(environ.get("CODEX_FILTER_BATCH_SIZE", 990))
|
codex/static_root/assets/{VCheckbox-ttw6_0q4.1ea7e82279a8.js → VCheckbox-DY1Y0qsq.5973caad55d6.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as A,V as t}from"./VCheckboxBtn-
|
|
1
|
+
import{m as A,V as t}from"./VCheckboxBtn-DoFCs6Y9.js";import{a as F,u as I,V as l}from"./VSelectionControl-DmGWAnkU.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-Bw6sRseo.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),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=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w 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-DoFCs6Y9.js";import{a as F,u as I,V as l}from"./VSelectionControl-DmGWAnkU.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-Bw6sRseo.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),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=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as f,d as o}from"./VSelectionControl-
|
|
1
|
+
import{c as f,d as o}from"./VSelectionControl-DmGWAnkU.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-Bw6sRseo.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,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(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{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{c as f,d as o}from"./VSelectionControl-
|
|
1
|
+
import{c as f,d as o}from"./VSelectionControl-DmGWAnkU.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-Bw6sRseo.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,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(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{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-BdgQw7Qf.7cd7b8be4c01.js → VCombobox-C005saY4.2ee5c283b1af.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as Ce,u as ke,a as pe,b as we,c as Se}from"./VSelect-
|
|
1
|
+
import{m as Ce,u as ke,a as pe,b as we,c as Se}from"./VSelect-CZ9zKx45.js";import{c as Fe,a as X}from"./VSlideGroup-Lzhz1ElM.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as m,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Me,K as Ee,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-Bw6sRseo.js";import{m as He,u as $e}from"./filter-D8l3lzk8.js";import{g as qe}from"./VSelectionControl-DmGWAnkU.js";import{f as Ge}from"./confirm-footer-BZ5z6tl1.js";import{V as We}from"./VCheckboxBtn-DoFCs6Y9.js";function Je(e,b,R){if(b==null)return e;if(Array.isArray(b))throw new Error("Multiple matches is not implemented");return typeof b=="number"&&~b?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,b)]),s("span",{class:"v-combobox__mask"},[e.substr(b,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(b+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...Ce({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,b){var W;let{emit:R,slots:n}=b;const{t:B}=Re(),y=O(),h=P(!1),V=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=m({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=m(()=>{var l;return(l=y.value)==null?void 0:l.color}),G=m(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=m(()=>!!(e.chips||n.chip)),C=m(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=m({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&f(D(e,a))}),k.value="")}l||(r.value=-1),V.value=!l}}),se=m(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):h.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:M,getMatches:re}=$e(e,te,()=>V.value?"":v.value),g=m(()=>e.hideSelected?M.value.filter(l=>!u.value.some(t=>t.value===l.value)):M.value),ce=m(()=>u.value.map(l=>l.value)),E=m(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=g.value[0])==null?void 0:t.title))&&g.value.length>0&&!V.value&&!_.value}),z=m(()=>e.hideNoData&&!g.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=ke(H,y);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(h.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=y.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(E.value&&["Enter","Tab"].includes(l.key)&&f(M.value[0]),V.value=!0),l.key==="ArrowDown"&&E.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(f(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return f(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;f(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,y.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,y.value.setSelectionRange(0,0))}}}function ge(){var l;h.value&&(V.value=!0,(l=y.value)==null||l.focus())}function f(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,V.value=!0})}}function xe(l){h.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(h,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,E.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===g.value[0].value})){f(g.value[0]);return}if(v.value){if(e.multiple){f(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":f(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=g.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Me&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||h.value&&!t.length&&l.length&&(c.value=!0)}),Ee(()=>{const l=!!(!e.hideNoData||g.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:y},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:h.value,"onUpdate:focused":a=>h.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(pe,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,x;return[(a=n["prepend-item"])==null?void 0:a.call(n),!g.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:g.value},{default:p=>{var Q;let{item:d,index:w,itemRef:S}=p;const J=I(d.props,{ref:S,key:w,active:E.value&&w===0?!0:void 0,onClick:()=>f(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:w,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return V.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(x=n["append-item"])==null?void 0:x.call(n)]}})]}),u.value.map((a,o)=>{function x(S){S.stopPropagation(),S.preventDefault(),f(a,!1)}const p={"onClick:close":x,onMousedown(S){S.preventDefault(),S.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,w=d?Oe(T.value?n.chip({item:a,index:o,props:p}):n.selection({item:a,index:o})):void 0;if(!(d&&!w))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[w]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},p),null):w??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var p;for(var a=arguments.length,o=new Array(a),x=0;x<a;x++)o[x]=arguments[x];return s(K,null,[(p=n["append-inner"])==null?void 0:p.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:h,isPristine:V,menu:c,search:v,selectionIndex:r,filteredItems:M,select:f},y)}});export{ul as V};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as Ce,u as ke,a as pe,b as we,c as Se}from"./VSelect-
|
|
1
|
+
import{m as Ce,u as ke,a as pe,b as we,c as Se}from"./VSelect-CZ9zKx45.js";import{c as Fe,a as X}from"./VSlideGroup-Lzhz1ElM.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as m,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Me,K as Ee,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-Bw6sRseo.js";import{m as He,u as $e}from"./filter-D8l3lzk8.js";import{g as qe}from"./VSelectionControl-DmGWAnkU.js";import{f as Ge}from"./confirm-footer-BZ5z6tl1.js";import{V as We}from"./VCheckboxBtn-DoFCs6Y9.js";function Je(e,b,R){if(b==null)return e;if(Array.isArray(b))throw new Error("Multiple matches is not implemented");return typeof b=="number"&&~b?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,b)]),s("span",{class:"v-combobox__mask"},[e.substr(b,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(b+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...Ce({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,b){var W;let{emit:R,slots:n}=b;const{t:B}=Re(),y=O(),h=P(!1),V=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=m({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=m(()=>{var l;return(l=y.value)==null?void 0:l.color}),G=m(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=m(()=>!!(e.chips||n.chip)),C=m(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=m({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&f(D(e,a))}),k.value="")}l||(r.value=-1),V.value=!l}}),se=m(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):h.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:M,getMatches:re}=$e(e,te,()=>V.value?"":v.value),g=m(()=>e.hideSelected?M.value.filter(l=>!u.value.some(t=>t.value===l.value)):M.value),ce=m(()=>u.value.map(l=>l.value)),E=m(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=g.value[0])==null?void 0:t.title))&&g.value.length>0&&!V.value&&!_.value}),z=m(()=>e.hideNoData&&!g.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=ke(H,y);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(h.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=y.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(E.value&&["Enter","Tab"].includes(l.key)&&f(M.value[0]),V.value=!0),l.key==="ArrowDown"&&E.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(f(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return f(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;f(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,y.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,y.value.setSelectionRange(0,0))}}}function ge(){var l;h.value&&(V.value=!0,(l=y.value)==null||l.focus())}function f(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,V.value=!0})}}function xe(l){h.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(h,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,E.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===g.value[0].value})){f(g.value[0]);return}if(v.value){if(e.multiple){f(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":f(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=g.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Me&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||h.value&&!t.length&&l.length&&(c.value=!0)}),Ee(()=>{const l=!!(!e.hideNoData||g.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:y},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:h.value,"onUpdate:focused":a=>h.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(pe,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,x;return[(a=n["prepend-item"])==null?void 0:a.call(n),!g.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:g.value},{default:p=>{var Q;let{item:d,index:w,itemRef:S}=p;const J=I(d.props,{ref:S,key:w,active:E.value&&w===0?!0:void 0,onClick:()=>f(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:w,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return V.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(x=n["append-item"])==null?void 0:x.call(n)]}})]}),u.value.map((a,o)=>{function x(S){S.stopPropagation(),S.preventDefault(),f(a,!1)}const p={"onClick:close":x,onMousedown(S){S.preventDefault(),S.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,w=d?Oe(T.value?n.chip({item:a,index:o,props:p}):n.selection({item:a,index:o})):void 0;if(!(d&&!w))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[w]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},p),null):w??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var p;for(var a=arguments.length,o=new Array(a),x=0;x<a;x++)o[x]=arguments[x];return s(K,null,[(p=n["append-inner"])==null?void 0:p.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:h,isPristine:V,menu:c,search:v,selectionIndex:r,filteredItems:M,select:f},y)}});export{ul as V};
|
|
Binary file
|
|
Binary file
|