codex 1.6.6__py3-none-any.whl → 1.6.8__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.

Files changed (394) hide show
  1. codex/static_root/assets/{VCheckbox-t2lVZLiy.85aa40c3f0ec.js → VCheckbox-DE3METqJ.947b68d61150.js} +1 -1
  2. codex/static_root/assets/VCheckbox-DE3METqJ.947b68d61150.js.br +0 -0
  3. codex/static_root/assets/VCheckbox-DE3METqJ.947b68d61150.js.gz +0 -0
  4. codex/static_root/assets/{VCheckbox-t2lVZLiy.js → VCheckbox-DE3METqJ.js} +1 -1
  5. codex/static_root/assets/VCheckbox-DE3METqJ.js.br +0 -0
  6. codex/static_root/assets/VCheckbox-DE3METqJ.js.gz +0 -0
  7. codex/static_root/assets/{VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js → VCheckboxBtn-DetOzpfX.e4293f13e16f.js} +1 -1
  8. codex/static_root/assets/VCheckboxBtn-DetOzpfX.e4293f13e16f.js.br +0 -0
  9. codex/static_root/assets/VCheckboxBtn-DetOzpfX.e4293f13e16f.js.gz +0 -0
  10. codex/static_root/assets/{VCheckboxBtn-C6Ngrnnm.js → VCheckboxBtn-DetOzpfX.js} +1 -1
  11. codex/static_root/assets/VCheckboxBtn-DetOzpfX.js.br +0 -0
  12. codex/static_root/assets/VCheckboxBtn-DetOzpfX.js.gz +0 -0
  13. codex/static_root/assets/{VCombobox-Sd-OIVIP.7bf2adc355ee.js → VCombobox-D2XmpiHi.3427b660b686.js} +1 -1
  14. codex/static_root/assets/VCombobox-D2XmpiHi.3427b660b686.js.br +0 -0
  15. codex/static_root/assets/VCombobox-D2XmpiHi.3427b660b686.js.gz +0 -0
  16. codex/static_root/assets/{VCombobox-Sd-OIVIP.js → VCombobox-D2XmpiHi.js} +1 -1
  17. codex/static_root/assets/VCombobox-D2XmpiHi.js.br +0 -0
  18. codex/static_root/assets/VCombobox-D2XmpiHi.js.gz +0 -0
  19. codex/static_root/assets/{VDialog-BNfcpCH0.0d18beaa3249.js → VDialog-BXw6XFu7.38cde34df95a.js} +1 -1
  20. codex/static_root/assets/VDialog-BXw6XFu7.38cde34df95a.js.br +0 -0
  21. codex/static_root/assets/VDialog-BXw6XFu7.38cde34df95a.js.gz +0 -0
  22. codex/static_root/assets/{VDialog-BNfcpCH0.js → VDialog-BXw6XFu7.js} +1 -1
  23. codex/static_root/assets/VDialog-BXw6XFu7.js.br +0 -0
  24. codex/static_root/assets/VDialog-BXw6XFu7.js.gz +0 -0
  25. codex/static_root/assets/VExpansionPanels-cdsBiWJW.289873cadd1b.js +1 -0
  26. codex/static_root/assets/VExpansionPanels-cdsBiWJW.289873cadd1b.js.br +0 -0
  27. codex/static_root/assets/VExpansionPanels-cdsBiWJW.289873cadd1b.js.gz +0 -0
  28. codex/static_root/assets/VExpansionPanels-cdsBiWJW.js +1 -0
  29. codex/static_root/assets/VExpansionPanels-cdsBiWJW.js.br +0 -0
  30. codex/static_root/assets/VExpansionPanels-cdsBiWJW.js.gz +0 -0
  31. codex/static_root/assets/VRadioGroup-DPsPhrgJ.2232643fa4b2.js +1 -0
  32. codex/static_root/assets/VRadioGroup-DPsPhrgJ.2232643fa4b2.js.br +0 -0
  33. codex/static_root/assets/VRadioGroup-DPsPhrgJ.2232643fa4b2.js.gz +0 -0
  34. codex/static_root/assets/VRadioGroup-DPsPhrgJ.js +1 -0
  35. codex/static_root/assets/VRadioGroup-DPsPhrgJ.js.br +0 -0
  36. codex/static_root/assets/VRadioGroup-DPsPhrgJ.js.gz +0 -0
  37. codex/static_root/assets/{VSelect-B-kyTG8I.c8d8e2815ac0.js → VSelect-wpuzLrPv.f46f25efca5b.js} +1 -1
  38. codex/static_root/assets/VSelect-wpuzLrPv.f46f25efca5b.js.br +0 -0
  39. codex/static_root/assets/VSelect-wpuzLrPv.f46f25efca5b.js.gz +0 -0
  40. codex/static_root/assets/{VSelect-B-kyTG8I.js → VSelect-wpuzLrPv.js} +1 -1
  41. codex/static_root/assets/VSelect-wpuzLrPv.js.br +0 -0
  42. codex/static_root/assets/VSelect-wpuzLrPv.js.gz +0 -0
  43. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css +1 -0
  44. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css.br +0 -0
  45. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css.gz +0 -0
  46. codex/static_root/assets/VSelectionControl-AnuOsZjr.css +1 -0
  47. codex/static_root/assets/VSelectionControl-AnuOsZjr.css.br +0 -0
  48. codex/static_root/assets/VSelectionControl-AnuOsZjr.css.gz +0 -0
  49. codex/static_root/assets/VSelectionControl-DTgtf_T6.bbb99484db2e.js +1 -0
  50. codex/static_root/assets/VSelectionControl-DTgtf_T6.bbb99484db2e.js.br +0 -0
  51. codex/static_root/assets/VSelectionControl-DTgtf_T6.bbb99484db2e.js.gz +0 -0
  52. codex/static_root/assets/VSelectionControl-DTgtf_T6.js +1 -0
  53. codex/static_root/assets/VSelectionControl-DTgtf_T6.js.br +0 -0
  54. codex/static_root/assets/VSelectionControl-DTgtf_T6.js.gz +0 -0
  55. codex/static_root/assets/{VSlideGroup-BCaUdgHs.3b1cdf2acbda.js → VSlideGroup-KhqCfdKQ.984b37842a8b.js} +1 -1
  56. codex/static_root/assets/VSlideGroup-KhqCfdKQ.984b37842a8b.js.br +0 -0
  57. codex/static_root/assets/VSlideGroup-KhqCfdKQ.984b37842a8b.js.gz +0 -0
  58. codex/static_root/assets/{VSlideGroup-BCaUdgHs.js → VSlideGroup-KhqCfdKQ.js} +1 -1
  59. codex/static_root/assets/VSlideGroup-KhqCfdKQ.js.br +0 -0
  60. codex/static_root/assets/VSlideGroup-KhqCfdKQ.js.gz +0 -0
  61. codex/static_root/assets/{VTable-BTvFrnRE.f7e39d2399db.js → VTable-CJJzxZcw.edb1bb582e5c.js} +1 -1
  62. codex/static_root/assets/VTable-CJJzxZcw.edb1bb582e5c.js.br +0 -0
  63. codex/static_root/assets/VTable-CJJzxZcw.edb1bb582e5c.js.gz +0 -0
  64. codex/static_root/assets/{VTable-BTvFrnRE.js → VTable-CJJzxZcw.js} +1 -1
  65. codex/static_root/assets/VTable-CJJzxZcw.js.br +0 -0
  66. codex/static_root/assets/VTable-CJJzxZcw.js.gz +0 -0
  67. codex/static_root/assets/VTextField-BJxb_QuX.79ef5fb485f2.js +1 -0
  68. codex/static_root/assets/VTextField-BJxb_QuX.79ef5fb485f2.js.br +0 -0
  69. codex/static_root/assets/VTextField-BJxb_QuX.79ef5fb485f2.js.gz +0 -0
  70. codex/static_root/assets/VTextField-BJxb_QuX.js +1 -0
  71. codex/static_root/assets/VTextField-BJxb_QuX.js.br +0 -0
  72. codex/static_root/assets/VTextField-BJxb_QuX.js.gz +0 -0
  73. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css +1 -0
  74. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css.br +0 -0
  75. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css.gz +0 -0
  76. codex/static_root/assets/VTextField-Bc1tD4nS.css +1 -0
  77. codex/static_root/assets/VTextField-Bc1tD4nS.css.br +0 -0
  78. codex/static_root/assets/VTextField-Bc1tD4nS.css.gz +0 -0
  79. codex/static_root/assets/{VWindowItem-SAyGzszW.6aac49e0cb25.js → VWindowItem-BWJJgE5I.8daf8cde5589.js} +1 -1
  80. codex/static_root/assets/VWindowItem-BWJJgE5I.8daf8cde5589.js.br +0 -0
  81. codex/static_root/assets/VWindowItem-BWJJgE5I.8daf8cde5589.js.gz +0 -0
  82. codex/static_root/assets/{VWindowItem-SAyGzszW.js → VWindowItem-BWJJgE5I.js} +1 -1
  83. codex/static_root/assets/VWindowItem-BWJJgE5I.js.br +0 -0
  84. codex/static_root/assets/VWindowItem-BWJJgE5I.js.gz +0 -0
  85. codex/static_root/assets/{admin-Crxy4nNV.33ef855fbf4b.js → admin-DrXckZDB.5feb8fde2d3a.js} +1 -1
  86. codex/static_root/assets/admin-DrXckZDB.5feb8fde2d3a.js.br +0 -0
  87. codex/static_root/assets/admin-DrXckZDB.5feb8fde2d3a.js.gz +0 -0
  88. codex/static_root/assets/{admin-Crxy4nNV.js → admin-DrXckZDB.js} +1 -1
  89. codex/static_root/assets/admin-DrXckZDB.js.br +0 -0
  90. codex/static_root/assets/admin-DrXckZDB.js.gz +0 -0
  91. codex/static_root/assets/{admin-drawer-panel-CtwFZKqt.69ac4d71d030.js → admin-drawer-panel-Crj9u2NV.6b03e2a2ae14.js} +20 -20
  92. codex/static_root/assets/admin-drawer-panel-Crj9u2NV.6b03e2a2ae14.js.br +0 -0
  93. codex/static_root/assets/admin-drawer-panel-Crj9u2NV.6b03e2a2ae14.js.gz +0 -0
  94. codex/static_root/assets/{admin-drawer-panel-CtwFZKqt.js → admin-drawer-panel-Crj9u2NV.js} +20 -20
  95. codex/static_root/assets/admin-drawer-panel-Crj9u2NV.js.br +0 -0
  96. codex/static_root/assets/admin-drawer-panel-Crj9u2NV.js.gz +0 -0
  97. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css +1 -0
  98. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css.br +0 -0
  99. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css.gz +0 -0
  100. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css +1 -0
  101. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css.br +0 -0
  102. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css.gz +0 -0
  103. codex/static_root/assets/{browser-5mT8zJ-k.js → browser-C50xLvMD.ebeac0d428d2.js} +1 -1
  104. codex/static_root/assets/browser-C50xLvMD.ebeac0d428d2.js.br +0 -0
  105. codex/static_root/assets/browser-C50xLvMD.ebeac0d428d2.js.gz +0 -0
  106. codex/static_root/assets/{browser-5mT8zJ-k.c8c31ef41b80.js → browser-C50xLvMD.js} +1 -1
  107. codex/static_root/assets/browser-C50xLvMD.js.br +0 -0
  108. codex/static_root/assets/browser-C50xLvMD.js.gz +0 -0
  109. codex/static_root/assets/{change-password-dialog-CHOnC-Zr.ea9e9979901f.js → change-password-dialog-Cm6AnxGf.66f4e604144b.js} +1 -1
  110. codex/static_root/assets/change-password-dialog-Cm6AnxGf.66f4e604144b.js.br +0 -0
  111. codex/static_root/assets/change-password-dialog-Cm6AnxGf.66f4e604144b.js.gz +0 -0
  112. codex/static_root/assets/{change-password-dialog-CHOnC-Zr.js → change-password-dialog-Cm6AnxGf.js} +1 -1
  113. codex/static_root/assets/change-password-dialog-Cm6AnxGf.js.br +0 -0
  114. codex/static_root/assets/change-password-dialog-Cm6AnxGf.js.gz +0 -0
  115. codex/static_root/assets/{confirm-dialog-BEylmNEi.1770e4c440bc.js → confirm-dialog-Mznixjrb.927eaa9bea39.js} +1 -1
  116. codex/static_root/assets/confirm-dialog-Mznixjrb.927eaa9bea39.js.br +0 -0
  117. codex/static_root/assets/confirm-dialog-Mznixjrb.927eaa9bea39.js.gz +0 -0
  118. codex/static_root/assets/{confirm-dialog-BEylmNEi.js → confirm-dialog-Mznixjrb.js} +1 -1
  119. codex/static_root/assets/confirm-dialog-Mznixjrb.js.br +0 -0
  120. codex/static_root/assets/confirm-dialog-Mznixjrb.js.gz +0 -0
  121. codex/static_root/assets/{datetime-column-D2cjCSko.0fa890d6ca0f.js → datetime-column-DqSk_iUb.260bcbb4c8e2.js} +1 -1
  122. codex/static_root/assets/datetime-column-DqSk_iUb.260bcbb4c8e2.js.br +0 -0
  123. codex/static_root/assets/datetime-column-DqSk_iUb.260bcbb4c8e2.js.gz +0 -0
  124. codex/static_root/assets/{datetime-column-D2cjCSko.js → datetime-column-DqSk_iUb.js} +1 -1
  125. codex/static_root/assets/datetime-column-DqSk_iUb.js.br +0 -0
  126. codex/static_root/assets/datetime-column-DqSk_iUb.js.gz +0 -0
  127. codex/static_root/assets/{filter-kHxo3w0C.81765ef36d0b.js → filter-CvqVrkAJ.8996d1b1db2a.js} +1 -1
  128. codex/static_root/assets/filter-CvqVrkAJ.8996d1b1db2a.js.br +0 -0
  129. codex/static_root/assets/filter-CvqVrkAJ.8996d1b1db2a.js.gz +0 -0
  130. codex/static_root/assets/{filter-kHxo3w0C.js → filter-CvqVrkAJ.js} +1 -1
  131. codex/static_root/assets/filter-CvqVrkAJ.js.br +0 -0
  132. codex/static_root/assets/filter-CvqVrkAJ.js.gz +0 -0
  133. codex/static_root/assets/{flag-tab-CHpJEV6e.9bef68d8019c.js → flag-tab-Bdh3jAbG.7731e3229cca.js} +1 -1
  134. codex/static_root/assets/flag-tab-Bdh3jAbG.7731e3229cca.js.br +0 -0
  135. codex/static_root/assets/flag-tab-Bdh3jAbG.7731e3229cca.js.gz +0 -0
  136. codex/static_root/assets/{flag-tab-CHpJEV6e.js → flag-tab-Bdh3jAbG.js} +1 -1
  137. codex/static_root/assets/flag-tab-Bdh3jAbG.js.br +0 -0
  138. codex/static_root/assets/flag-tab-Bdh3jAbG.js.gz +0 -0
  139. codex/static_root/assets/{group-tab-D7hMON1p.c43da9487835.js → group-tab-89t0MyqI.1c743da230be.js} +1 -1
  140. codex/static_root/assets/group-tab-89t0MyqI.1c743da230be.js.br +0 -0
  141. codex/static_root/assets/group-tab-89t0MyqI.1c743da230be.js.gz +0 -0
  142. codex/static_root/assets/{group-tab-D7hMON1p.js → group-tab-89t0MyqI.js} +1 -1
  143. codex/static_root/assets/group-tab-89t0MyqI.js.br +0 -0
  144. codex/static_root/assets/group-tab-89t0MyqI.js.gz +0 -0
  145. codex/static_root/assets/{http-error-CpMJuFj6.8b3a74a1afb7.js → http-error-BJTIqHG7.68507d59e73a.js} +1 -1
  146. codex/static_root/assets/http-error-BJTIqHG7.68507d59e73a.js.br +3 -0
  147. codex/static_root/assets/http-error-BJTIqHG7.68507d59e73a.js.gz +0 -0
  148. codex/static_root/assets/{http-error-CpMJuFj6.js → http-error-BJTIqHG7.js} +1 -1
  149. codex/static_root/assets/http-error-BJTIqHG7.js.br +3 -0
  150. codex/static_root/assets/http-error-BJTIqHG7.js.gz +0 -0
  151. codex/static_root/assets/{library-tab-DbtKQkEv.js → library-tab-DoebKL9-.6eef922082b3.js} +1 -1
  152. codex/static_root/assets/library-tab-DoebKL9-.6eef922082b3.js.br +0 -0
  153. codex/static_root/assets/library-tab-DoebKL9-.6eef922082b3.js.gz +0 -0
  154. codex/static_root/assets/{library-tab-DbtKQkEv.cd1b5cb4098d.js → library-tab-DoebKL9-.js} +1 -1
  155. codex/static_root/assets/library-tab-DoebKL9-.js.br +0 -0
  156. codex/static_root/assets/library-tab-DoebKL9-.js.gz +0 -0
  157. codex/static_root/assets/{main-DG4M9J1O.636c9d4cd8a9.js → main-DArXKRWW.47a8064195fe.js} +3 -3
  158. codex/static_root/assets/main-DArXKRWW.47a8064195fe.js.br +0 -0
  159. codex/static_root/assets/main-DArXKRWW.47a8064195fe.js.gz +0 -0
  160. codex/static_root/assets/{main-DG4M9J1O.js → main-DArXKRWW.js} +3 -3
  161. codex/static_root/assets/main-DArXKRWW.js.br +0 -0
  162. codex/static_root/assets/main-DArXKRWW.js.gz +0 -0
  163. codex/static_root/assets/{pagination-toolbar-T96tREnT.5c036e8490cc.js → pagination-toolbar-m9-HzvQE.178146e802bf.js} +1 -1
  164. codex/static_root/assets/pagination-toolbar-m9-HzvQE.178146e802bf.js.br +0 -0
  165. codex/static_root/assets/pagination-toolbar-m9-HzvQE.178146e802bf.js.gz +0 -0
  166. codex/static_root/assets/{pagination-toolbar-T96tREnT.js → pagination-toolbar-m9-HzvQE.js} +1 -1
  167. codex/static_root/assets/pagination-toolbar-m9-HzvQE.js.br +0 -0
  168. codex/static_root/assets/pagination-toolbar-m9-HzvQE.js.gz +0 -0
  169. codex/static_root/assets/{pdf-doc-Bi52wiF2.2d24a692aae7.js → pdf-doc-xL1qP1mK.643e4fab2b8d.js} +1 -1
  170. codex/static_root/assets/pdf-doc-xL1qP1mK.643e4fab2b8d.js.br +0 -0
  171. codex/static_root/assets/pdf-doc-xL1qP1mK.643e4fab2b8d.js.gz +0 -0
  172. codex/static_root/assets/{pdf-doc-Bi52wiF2.js → pdf-doc-xL1qP1mK.js} +1 -1
  173. codex/static_root/assets/pdf-doc-xL1qP1mK.js.br +0 -0
  174. codex/static_root/assets/pdf-doc-xL1qP1mK.js.gz +0 -0
  175. codex/static_root/assets/{reader-BvLeh7uY.1a72c602c44f.js → reader-DwHuZOrV.b6067501f379.js} +2 -2
  176. codex/static_root/assets/reader-DwHuZOrV.b6067501f379.js.br +0 -0
  177. codex/static_root/assets/reader-DwHuZOrV.b6067501f379.js.gz +0 -0
  178. codex/static_root/assets/{reader-BvLeh7uY.js → reader-DwHuZOrV.js} +2 -2
  179. codex/static_root/assets/reader-DwHuZOrV.js.br +0 -0
  180. codex/static_root/assets/reader-DwHuZOrV.js.gz +0 -0
  181. codex/static_root/assets/relation-chips-CCg5vRIV.59c17fb77441.js +1 -0
  182. codex/static_root/assets/relation-chips-CCg5vRIV.59c17fb77441.js.br +0 -0
  183. codex/static_root/assets/relation-chips-CCg5vRIV.59c17fb77441.js.gz +0 -0
  184. codex/static_root/assets/relation-chips-CCg5vRIV.js +1 -0
  185. codex/static_root/assets/relation-chips-CCg5vRIV.js.br +0 -0
  186. codex/static_root/assets/relation-chips-CCg5vRIV.js.gz +0 -0
  187. codex/static_root/assets/{settings-drawer-D20xBWbs.js → settings-drawer-CUQX8aKC.82a95dcef142.js} +2 -2
  188. codex/static_root/assets/settings-drawer-CUQX8aKC.82a95dcef142.js.br +0 -0
  189. codex/static_root/assets/settings-drawer-CUQX8aKC.82a95dcef142.js.gz +0 -0
  190. codex/static_root/assets/{settings-drawer-D20xBWbs.5b01c6683046.js → settings-drawer-CUQX8aKC.js} +2 -2
  191. codex/static_root/assets/settings-drawer-CUQX8aKC.js.br +0 -0
  192. codex/static_root/assets/settings-drawer-CUQX8aKC.js.gz +0 -0
  193. codex/static_root/assets/{stats-tab-JXf5C0L2.8a1f23c48803.js → stats-tab-CyDREZdm.000d9e8e00a1.js} +1 -1
  194. codex/static_root/assets/stats-tab-CyDREZdm.000d9e8e00a1.js.br +0 -0
  195. codex/static_root/assets/stats-tab-CyDREZdm.000d9e8e00a1.js.gz +0 -0
  196. codex/static_root/assets/{stats-tab-JXf5C0L2.js → stats-tab-CyDREZdm.js} +1 -1
  197. codex/static_root/assets/stats-tab-CyDREZdm.js.br +0 -0
  198. codex/static_root/assets/stats-tab-CyDREZdm.js.gz +0 -0
  199. codex/static_root/assets/{task-tab-BQTHu8AN.88e4de451b29.js → task-tab-RfF_m-c2.4ea612865931.js} +1 -1
  200. codex/static_root/assets/task-tab-RfF_m-c2.4ea612865931.js.br +0 -0
  201. codex/static_root/assets/task-tab-RfF_m-c2.4ea612865931.js.gz +0 -0
  202. codex/static_root/assets/{task-tab-BQTHu8AN.js → task-tab-RfF_m-c2.js} +1 -1
  203. codex/static_root/assets/task-tab-RfF_m-c2.js.br +0 -0
  204. codex/static_root/assets/task-tab-RfF_m-c2.js.gz +0 -0
  205. codex/static_root/assets/{unauthorized-Fo9yxN_s.be090f98b112.js → unauthorized-BY4OkaUc.7a55b1214630.js} +1 -1
  206. codex/static_root/assets/unauthorized-BY4OkaUc.7a55b1214630.js.br +0 -0
  207. codex/static_root/assets/unauthorized-BY4OkaUc.7a55b1214630.js.gz +0 -0
  208. codex/static_root/assets/{unauthorized-Fo9yxN_s.js → unauthorized-BY4OkaUc.js} +1 -1
  209. codex/static_root/assets/unauthorized-BY4OkaUc.js.br +0 -0
  210. codex/static_root/assets/unauthorized-BY4OkaUc.js.gz +0 -0
  211. codex/static_root/assets/{user-tab-Bc31zSPX.35b6785d0fa8.js → user-tab-tSrCTVFj.6c5b9a53a03a.js} +1 -1
  212. codex/static_root/assets/user-tab-tSrCTVFj.6c5b9a53a03a.js.br +0 -0
  213. codex/static_root/assets/user-tab-tSrCTVFj.6c5b9a53a03a.js.gz +0 -0
  214. codex/static_root/assets/{user-tab-Bc31zSPX.js → user-tab-tSrCTVFj.js} +1 -1
  215. codex/static_root/assets/user-tab-tSrCTVFj.js.br +0 -0
  216. codex/static_root/assets/user-tab-tSrCTVFj.js.gz +0 -0
  217. codex/static_root/{manifest.82e98a155f9e.json → manifest.37e83529bf91.json} +219 -219
  218. codex/static_root/manifest.37e83529bf91.json.br +0 -0
  219. codex/static_root/manifest.37e83529bf91.json.gz +0 -0
  220. codex/static_root/manifest.json +219 -219
  221. codex/static_root/manifest.json.br +0 -0
  222. codex/static_root/manifest.json.gz +0 -0
  223. codex/static_root/staticfiles.json +1 -1
  224. codex/views/auth.py +31 -13
  225. codex/views/opds/auth.py +1 -1
  226. codex/views/opds/v1/entry/links.py +14 -2
  227. codex/views/opds/v1/feed.py +13 -34
  228. {codex-1.6.6.dist-info → codex-1.6.8.dist-info}/METADATA +1 -1
  229. {codex-1.6.6.dist-info → codex-1.6.8.dist-info}/RECORD +232 -232
  230. codex/static_root/assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js.br +0 -0
  231. codex/static_root/assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js.gz +0 -0
  232. codex/static_root/assets/VCheckbox-t2lVZLiy.js.br +0 -0
  233. codex/static_root/assets/VCheckbox-t2lVZLiy.js.gz +0 -0
  234. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js.br +0 -0
  235. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js.gz +0 -0
  236. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.js.br +0 -0
  237. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.js.gz +0 -0
  238. codex/static_root/assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js.br +0 -0
  239. codex/static_root/assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js.gz +0 -0
  240. codex/static_root/assets/VCombobox-Sd-OIVIP.js.br +0 -0
  241. codex/static_root/assets/VCombobox-Sd-OIVIP.js.gz +0 -0
  242. codex/static_root/assets/VDialog-BNfcpCH0.0d18beaa3249.js.br +0 -0
  243. codex/static_root/assets/VDialog-BNfcpCH0.0d18beaa3249.js.gz +0 -0
  244. codex/static_root/assets/VDialog-BNfcpCH0.js.br +0 -0
  245. codex/static_root/assets/VDialog-BNfcpCH0.js.gz +0 -0
  246. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js +0 -1
  247. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js.br +0 -0
  248. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js.gz +0 -0
  249. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js +0 -1
  250. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js.br +0 -0
  251. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js.gz +0 -0
  252. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js +0 -1
  253. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js.br +0 -0
  254. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js.gz +0 -0
  255. codex/static_root/assets/VRadioGroup-DKmAGLI5.js +0 -1
  256. codex/static_root/assets/VRadioGroup-DKmAGLI5.js.br +0 -0
  257. codex/static_root/assets/VRadioGroup-DKmAGLI5.js.gz +0 -0
  258. codex/static_root/assets/VSelect-B-kyTG8I.c8d8e2815ac0.js.br +0 -0
  259. codex/static_root/assets/VSelect-B-kyTG8I.c8d8e2815ac0.js.gz +0 -0
  260. codex/static_root/assets/VSelect-B-kyTG8I.js.br +0 -0
  261. codex/static_root/assets/VSelect-B-kyTG8I.js.gz +0 -0
  262. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css +0 -1
  263. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css.br +0 -0
  264. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css.gz +0 -0
  265. codex/static_root/assets/VSelectionControl-BFq--28I.css +0 -1
  266. codex/static_root/assets/VSelectionControl-BFq--28I.css.br +0 -0
  267. codex/static_root/assets/VSelectionControl-BFq--28I.css.gz +0 -0
  268. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js +0 -1
  269. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js.br +0 -0
  270. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js.gz +0 -0
  271. codex/static_root/assets/VSelectionControl-Dp57cbQU.js +0 -1
  272. codex/static_root/assets/VSelectionControl-Dp57cbQU.js.br +0 -0
  273. codex/static_root/assets/VSelectionControl-Dp57cbQU.js.gz +0 -0
  274. codex/static_root/assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js.br +0 -0
  275. codex/static_root/assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js.gz +0 -0
  276. codex/static_root/assets/VSlideGroup-BCaUdgHs.js.br +0 -0
  277. codex/static_root/assets/VSlideGroup-BCaUdgHs.js.gz +0 -0
  278. codex/static_root/assets/VTable-BTvFrnRE.f7e39d2399db.js.br +0 -0
  279. codex/static_root/assets/VTable-BTvFrnRE.f7e39d2399db.js.gz +0 -0
  280. codex/static_root/assets/VTable-BTvFrnRE.js.br +0 -0
  281. codex/static_root/assets/VTable-BTvFrnRE.js.gz +0 -0
  282. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css +0 -1
  283. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.br +0 -0
  284. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.gz +0 -0
  285. codex/static_root/assets/VTextField-BssVoDhB.css +0 -1
  286. codex/static_root/assets/VTextField-BssVoDhB.css.br +0 -0
  287. codex/static_root/assets/VTextField-BssVoDhB.css.gz +0 -0
  288. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js +0 -1
  289. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js.br +0 -0
  290. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js.gz +0 -0
  291. codex/static_root/assets/VTextField-bmvK4DuL.js +0 -1
  292. codex/static_root/assets/VTextField-bmvK4DuL.js.br +0 -0
  293. codex/static_root/assets/VTextField-bmvK4DuL.js.gz +0 -0
  294. codex/static_root/assets/VWindowItem-SAyGzszW.6aac49e0cb25.js.br +0 -0
  295. codex/static_root/assets/VWindowItem-SAyGzszW.6aac49e0cb25.js.gz +0 -0
  296. codex/static_root/assets/VWindowItem-SAyGzszW.js.br +0 -0
  297. codex/static_root/assets/VWindowItem-SAyGzszW.js.gz +0 -0
  298. codex/static_root/assets/admin-Crxy4nNV.33ef855fbf4b.js.br +0 -0
  299. codex/static_root/assets/admin-Crxy4nNV.33ef855fbf4b.js.gz +0 -0
  300. codex/static_root/assets/admin-Crxy4nNV.js.br +0 -0
  301. codex/static_root/assets/admin-Crxy4nNV.js.gz +0 -0
  302. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js.br +0 -0
  303. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js.gz +0 -0
  304. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.js.br +0 -0
  305. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.js.gz +0 -0
  306. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css +0 -1
  307. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.br +0 -0
  308. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.gz +0 -0
  309. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css +0 -1
  310. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.br +0 -0
  311. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.gz +0 -0
  312. codex/static_root/assets/browser-5mT8zJ-k.c8c31ef41b80.js.br +0 -0
  313. codex/static_root/assets/browser-5mT8zJ-k.c8c31ef41b80.js.gz +0 -0
  314. codex/static_root/assets/browser-5mT8zJ-k.js.br +0 -0
  315. codex/static_root/assets/browser-5mT8zJ-k.js.gz +0 -0
  316. codex/static_root/assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js.br +0 -0
  317. codex/static_root/assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js.gz +0 -0
  318. codex/static_root/assets/change-password-dialog-CHOnC-Zr.js.br +0 -0
  319. codex/static_root/assets/change-password-dialog-CHOnC-Zr.js.gz +0 -0
  320. codex/static_root/assets/confirm-dialog-BEylmNEi.1770e4c440bc.js.br +0 -0
  321. codex/static_root/assets/confirm-dialog-BEylmNEi.1770e4c440bc.js.gz +0 -0
  322. codex/static_root/assets/confirm-dialog-BEylmNEi.js.br +0 -0
  323. codex/static_root/assets/confirm-dialog-BEylmNEi.js.gz +0 -0
  324. codex/static_root/assets/datetime-column-D2cjCSko.0fa890d6ca0f.js.br +0 -0
  325. codex/static_root/assets/datetime-column-D2cjCSko.0fa890d6ca0f.js.gz +0 -0
  326. codex/static_root/assets/datetime-column-D2cjCSko.js.br +0 -0
  327. codex/static_root/assets/datetime-column-D2cjCSko.js.gz +0 -0
  328. codex/static_root/assets/filter-kHxo3w0C.81765ef36d0b.js.br +0 -0
  329. codex/static_root/assets/filter-kHxo3w0C.81765ef36d0b.js.gz +0 -0
  330. codex/static_root/assets/filter-kHxo3w0C.js.br +0 -0
  331. codex/static_root/assets/filter-kHxo3w0C.js.gz +0 -0
  332. codex/static_root/assets/flag-tab-CHpJEV6e.9bef68d8019c.js.br +0 -0
  333. codex/static_root/assets/flag-tab-CHpJEV6e.9bef68d8019c.js.gz +0 -0
  334. codex/static_root/assets/flag-tab-CHpJEV6e.js.br +0 -0
  335. codex/static_root/assets/flag-tab-CHpJEV6e.js.gz +0 -0
  336. codex/static_root/assets/group-tab-D7hMON1p.c43da9487835.js.br +0 -0
  337. codex/static_root/assets/group-tab-D7hMON1p.c43da9487835.js.gz +0 -0
  338. codex/static_root/assets/group-tab-D7hMON1p.js.br +0 -0
  339. codex/static_root/assets/group-tab-D7hMON1p.js.gz +0 -0
  340. codex/static_root/assets/http-error-CpMJuFj6.8b3a74a1afb7.js.br +0 -0
  341. codex/static_root/assets/http-error-CpMJuFj6.8b3a74a1afb7.js.gz +0 -0
  342. codex/static_root/assets/http-error-CpMJuFj6.js.br +0 -0
  343. codex/static_root/assets/http-error-CpMJuFj6.js.gz +0 -0
  344. codex/static_root/assets/library-tab-DbtKQkEv.cd1b5cb4098d.js.br +0 -0
  345. codex/static_root/assets/library-tab-DbtKQkEv.cd1b5cb4098d.js.gz +0 -0
  346. codex/static_root/assets/library-tab-DbtKQkEv.js.br +0 -0
  347. codex/static_root/assets/library-tab-DbtKQkEv.js.gz +0 -0
  348. codex/static_root/assets/main-DG4M9J1O.636c9d4cd8a9.js.br +0 -0
  349. codex/static_root/assets/main-DG4M9J1O.636c9d4cd8a9.js.gz +0 -0
  350. codex/static_root/assets/main-DG4M9J1O.js.br +0 -0
  351. codex/static_root/assets/main-DG4M9J1O.js.gz +0 -0
  352. codex/static_root/assets/pagination-toolbar-T96tREnT.5c036e8490cc.js.br +0 -0
  353. codex/static_root/assets/pagination-toolbar-T96tREnT.5c036e8490cc.js.gz +0 -0
  354. codex/static_root/assets/pagination-toolbar-T96tREnT.js.br +0 -0
  355. codex/static_root/assets/pagination-toolbar-T96tREnT.js.gz +0 -0
  356. codex/static_root/assets/pdf-doc-Bi52wiF2.2d24a692aae7.js.br +0 -0
  357. codex/static_root/assets/pdf-doc-Bi52wiF2.2d24a692aae7.js.gz +0 -0
  358. codex/static_root/assets/pdf-doc-Bi52wiF2.js.br +0 -0
  359. codex/static_root/assets/pdf-doc-Bi52wiF2.js.gz +0 -0
  360. codex/static_root/assets/reader-BvLeh7uY.1a72c602c44f.js.br +0 -0
  361. codex/static_root/assets/reader-BvLeh7uY.1a72c602c44f.js.gz +0 -0
  362. codex/static_root/assets/reader-BvLeh7uY.js.br +0 -0
  363. codex/static_root/assets/reader-BvLeh7uY.js.gz +0 -0
  364. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js +0 -1
  365. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js.br +0 -0
  366. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js.gz +0 -0
  367. codex/static_root/assets/relation-chips-C7aq5P_5.js +0 -1
  368. codex/static_root/assets/relation-chips-C7aq5P_5.js.br +0 -0
  369. codex/static_root/assets/relation-chips-C7aq5P_5.js.gz +0 -0
  370. codex/static_root/assets/settings-drawer-D20xBWbs.5b01c6683046.js.br +0 -0
  371. codex/static_root/assets/settings-drawer-D20xBWbs.5b01c6683046.js.gz +0 -0
  372. codex/static_root/assets/settings-drawer-D20xBWbs.js.br +0 -0
  373. codex/static_root/assets/settings-drawer-D20xBWbs.js.gz +0 -0
  374. codex/static_root/assets/stats-tab-JXf5C0L2.8a1f23c48803.js.br +0 -0
  375. codex/static_root/assets/stats-tab-JXf5C0L2.8a1f23c48803.js.gz +0 -0
  376. codex/static_root/assets/stats-tab-JXf5C0L2.js.br +0 -0
  377. codex/static_root/assets/stats-tab-JXf5C0L2.js.gz +0 -0
  378. codex/static_root/assets/task-tab-BQTHu8AN.88e4de451b29.js.br +0 -0
  379. codex/static_root/assets/task-tab-BQTHu8AN.88e4de451b29.js.gz +0 -0
  380. codex/static_root/assets/task-tab-BQTHu8AN.js.br +0 -0
  381. codex/static_root/assets/task-tab-BQTHu8AN.js.gz +0 -0
  382. codex/static_root/assets/unauthorized-Fo9yxN_s.be090f98b112.js.br +0 -0
  383. codex/static_root/assets/unauthorized-Fo9yxN_s.be090f98b112.js.gz +0 -0
  384. codex/static_root/assets/unauthorized-Fo9yxN_s.js.br +0 -0
  385. codex/static_root/assets/unauthorized-Fo9yxN_s.js.gz +0 -0
  386. codex/static_root/assets/user-tab-Bc31zSPX.35b6785d0fa8.js.br +0 -0
  387. codex/static_root/assets/user-tab-Bc31zSPX.35b6785d0fa8.js.gz +0 -0
  388. codex/static_root/assets/user-tab-Bc31zSPX.js.br +0 -0
  389. codex/static_root/assets/user-tab-Bc31zSPX.js.gz +0 -0
  390. codex/static_root/manifest.82e98a155f9e.json.br +0 -0
  391. codex/static_root/manifest.82e98a155f9e.json.gz +0 -0
  392. {codex-1.6.6.dist-info → codex-1.6.8.dist-info}/LICENSE +0 -0
  393. {codex-1.6.6.dist-info → codex-1.6.8.dist-info}/WHEEL +0 -0
  394. {codex-1.6.6.dist-info → codex-1.6.8.dist-info}/entry_points.txt +0 -0
Binary file
Binary file
@@ -1 +1 @@
1
- {"paths": {"rest_framework/docs/js/api.js": "rest_framework/docs/js/api.18a5ba8a1bd8.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.e630f8f4990e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.4e1cdcb7acab.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.455080a7b2ce.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/jquery-3.7.1.min.js": "rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/load-ajax-form.js": "rest_framework/js/load-ajax-form.8cdb3a9f3466.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/bootstrap.min.css.map": "rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.f17d4516b026.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-theme.min.css.map": "rest_framework/css/bootstrap-theme.min.css.51806092cc05.map", "img/publisher.svg": "img/publisher.82d378fcd601.svg", "img/logo-32.webp": "img/logo-32.5688944495bf.webp", "img/logo.svg": "img/logo.0f5344a028ca.svg", "img/story-arc.svg": "img/story-arc.ca10014355ef.svg", "img/missing-cover-165.webp": "img/missing-cover-165.0743171f2148.webp", "img/series.svg": "img/series.ec8a889b8f95.svg", "img/logo-maskable-180.webp": "img/logo-maskable-180.c58d966aa64e.webp", "img/missing-cover.svg": "img/missing-cover.ddb038cc2c56.svg", "img/folder.svg": "img/folder.f28936a3701d.svg", "img/volume.svg": "img/volume.814e4c79461a.svg", "img/logo-maskable.svg": "img/logo-maskable.8f7de7f1c6a8.svg", "img/imprint.svg": "img/imprint.7c2adebb76d6.svg", "pwa/offline.html": "pwa/offline.7bfaf9f94bf9.html", "js/choices.json": "js/choices.2f6b0359e1ef.json", "js/choices-admin.json": "js/choices-admin.3521e2a863df.json", "assets/group-tab-CBKuS3Iv.css": "assets/group-tab-CBKuS3Iv.7e4746634782.css", "assets/http-error-DKulXuTl.css": "assets/http-error-DKulXuTl.95e42988d5d5.css", "assets/VSelect-ARDhJiQK.css": "assets/VSelect-ARDhJiQK.372c098fb475.css", "assets/reader-BvLeh7uY.js": "assets/reader-BvLeh7uY.1a72c602c44f.js", "assets/VCheckbox-t2lVZLiy.js": "assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js", "assets/VSelectionControl-BFq--28I.css": "assets/VSelectionControl-BFq--28I.9687c77461fc.css", "assets/http-error-CpMJuFj6.js": "assets/http-error-CpMJuFj6.8b3a74a1afb7.js", "assets/filter-kHxo3w0C.js": "assets/filter-kHxo3w0C.81765ef36d0b.js", "assets/user-tab-Bc31zSPX.js": "assets/user-tab-Bc31zSPX.35b6785d0fa8.js", "assets/pdf-doc-CMzaSV_K.css": "assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css", "assets/pagination-toolbar-T96tREnT.js": "assets/pagination-toolbar-T96tREnT.5c036e8490cc.js", "assets/materialdesignicons-webfont-PXm3-2wK.woff": "assets/materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff", "assets/admin-Crxy4nNV.js": "assets/admin-Crxy4nNV.33ef855fbf4b.js", "assets/VSlideGroup-Dk_1upHt.css": "assets/VSlideGroup-Dk_1upHt.2c836070ec75.css", "assets/admin-drawer-panel-mne3FIj6.css": "assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css", "assets/VTable-DflzroDq.css": "assets/VTable-DflzroDq.160504d82195.css", "assets/settings-drawer-nZ9HvKSZ.css": "assets/settings-drawer-nZ9HvKSZ.01744e131806.css", "assets/VDialog-lQ13FnRR.css": "assets/VDialog-lQ13FnRR.1c801ad756b2.css", "assets/relation-chips-BGitp3yx.css": "assets/relation-chips-BGitp3yx.b3e7d178a615.css", "assets/main-Ztp855PW.css": "assets/main-Ztp855PW.d46d718fac45.css", "assets/group-tab-D7hMON1p.js": "assets/group-tab-D7hMON1p.c43da9487835.js", "assets/VRadioGroup-i2qP9Wu9.css": "assets/VRadioGroup-i2qP9Wu9.8e3741381961.css", "assets/admin-D4sw3N4T.css": "assets/admin-D4sw3N4T.b590f88a62cf.css", "assets/reader-YbzUiD0T.css": "assets/reader-YbzUiD0T.efb15835b39d.css", "assets/change-password-dialog-0u6IJA87.css": "assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css", "assets/relation-chips-C7aq5P_5.js": "assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js", "assets/copy-to-clipboard-DoUvDJVx.js": "assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js", "assets/VWindowItem-ByIod57Y.css": "assets/VWindowItem-ByIod57Y.f7fb19752bf3.css", "assets/pdf-doc-Bi52wiF2.js": "assets/pdf-doc-Bi52wiF2.2d24a692aae7.js", "assets/VTextField-bmvK4DuL.js": "assets/VTextField-bmvK4DuL.98bc6ed20321.js", "assets/unauthorized-Fo9yxN_s.js": "assets/unauthorized-Fo9yxN_s.be090f98b112.js", "assets/VSelectionControl-Dp57cbQU.js": "assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js", "assets/pagination-toolbar-BA9ifTed.css": "assets/pagination-toolbar-BA9ifTed.b4865334ee08.css", "assets/library-tab-BygwYPnO.css": "assets/library-tab-BygwYPnO.94e92aa60bf2.css", "assets/change-password-dialog-CHOnC-Zr.js": "assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js", "assets/VExpansionPanels-DDXfjvGC.js": "assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js", "assets/stats-tab-JXf5C0L2.js": "assets/stats-tab-JXf5C0L2.8a1f23c48803.js", "assets/browser-Cy0OgQJC.css": "assets/browser-Cy0OgQJC.fabbd1aaffcf.css", "assets/confirm-dialog-BmhedLCx.css": "assets/confirm-dialog-BmhedLCx.7c2103d319d4.css", "assets/VWindowItem-SAyGzszW.js": "assets/VWindowItem-SAyGzszW.6aac49e0cb25.js", "assets/browser-5mT8zJ-k.js": "assets/browser-5mT8zJ-k.c8c31ef41b80.js", "assets/materialdesignicons-webfont-B7mPwVP_.ttf": "assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf", "assets/VDialog-BNfcpCH0.js": "assets/VDialog-BNfcpCH0.0d18beaa3249.js", "assets/unauthorized-DGIM1VFy.css": "assets/unauthorized-DGIM1VFy.c93d0b3ea5a4.css", "assets/library-tab-DbtKQkEv.js": "assets/library-tab-DbtKQkEv.cd1b5cb4098d.js", "assets/VCombobox-BksEr4D_.css": "assets/VCombobox-BksEr4D_.73429bb75f42.css", "assets/VSelect-B-kyTG8I.js": "assets/VSelect-B-kyTG8I.c8d8e2815ac0.js", "assets/flag-tab-DBqpLKi7.css": "assets/flag-tab-DBqpLKi7.dcfef39f541e.css", "assets/VCheckboxBtn-C6Ngrnnm.js": "assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js", "assets/task-tab-1XiWn9xP.css": "assets/task-tab-1XiWn9xP.06cb8e1b794d.css", "assets/confirm-dialog-BEylmNEi.js": "assets/confirm-dialog-BEylmNEi.1770e4c440bc.js", "assets/datetime-column-DeCthByU.css": "assets/datetime-column-DeCthByU.1f3bf499e063.css", "assets/materialdesignicons-webfont-CSr8KVlo.eot": "assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot", "assets/VSlideGroup-BCaUdgHs.js": "assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js", "assets/flag-tab-CHpJEV6e.js": "assets/flag-tab-CHpJEV6e.9bef68d8019c.js", "assets/settings-drawer-D20xBWbs.js": "assets/settings-drawer-D20xBWbs.5b01c6683046.js", "assets/stats-tab-CI0u-X7Y.css": "assets/stats-tab-CI0u-X7Y.2d1b6a0d4139.css", "assets/VCombobox-Sd-OIVIP.js": "assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js", "assets/datetime-column-D2cjCSko.js": "assets/datetime-column-D2cjCSko.0fa890d6ca0f.js", "assets/admin-drawer-panel-CtwFZKqt.js": "assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js", "assets/VExpansionPanels-DsEXVcCv.css": "assets/VExpansionPanels-DsEXVcCv.20b475255e66.css", "assets/VTable-BTvFrnRE.js": "assets/VTable-BTvFrnRE.f7e39d2399db.js", "assets/main-DG4M9J1O.js": "assets/main-DG4M9J1O.636c9d4cd8a9.js", "assets/VRadioGroup-DKmAGLI5.js": "assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js", "assets/task-tab-BQTHu8AN.js": "assets/task-tab-BQTHu8AN.88e4de451b29.js", "assets/VCheckbox-CMKdyl0R.css": "assets/VCheckbox-CMKdyl0R.016ed8d222c4.css", "assets/VTextField-BssVoDhB.css": "assets/VTextField-BssVoDhB.4cc388b4aa3c.css", "assets/materialdesignicons-webfont-Dp5v-WZN.woff2": "assets/materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2", "robots.txt": "robots.b6216d61c03e.txt", "manifest.json": "manifest.82e98a155f9e.json"}, "version": "1.1", "hash": "02a316934d3a"}
1
+ {"paths": {"rest_framework/docs/js/api.js": "rest_framework/docs/js/api.18a5ba8a1bd8.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.e630f8f4990e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.4e1cdcb7acab.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.455080a7b2ce.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/jquery-3.7.1.min.js": "rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/load-ajax-form.js": "rest_framework/js/load-ajax-form.8cdb3a9f3466.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/bootstrap.min.css.map": "rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.f17d4516b026.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-theme.min.css.map": "rest_framework/css/bootstrap-theme.min.css.51806092cc05.map", "img/publisher.svg": "img/publisher.82d378fcd601.svg", "img/logo-32.webp": "img/logo-32.5688944495bf.webp", "img/logo.svg": "img/logo.0f5344a028ca.svg", "img/story-arc.svg": "img/story-arc.ca10014355ef.svg", "img/missing-cover-165.webp": "img/missing-cover-165.0743171f2148.webp", "img/series.svg": "img/series.ec8a889b8f95.svg", "img/logo-maskable-180.webp": "img/logo-maskable-180.c58d966aa64e.webp", "img/missing-cover.svg": "img/missing-cover.ddb038cc2c56.svg", "img/folder.svg": "img/folder.f28936a3701d.svg", "img/volume.svg": "img/volume.814e4c79461a.svg", "img/logo-maskable.svg": "img/logo-maskable.8f7de7f1c6a8.svg", "img/imprint.svg": "img/imprint.7c2adebb76d6.svg", "pwa/offline.html": "pwa/offline.7bfaf9f94bf9.html", "js/choices.json": "js/choices.2f6b0359e1ef.json", "js/choices-admin.json": "js/choices-admin.3521e2a863df.json", "assets/group-tab-CBKuS3Iv.css": "assets/group-tab-CBKuS3Iv.7e4746634782.css", "assets/http-error-DKulXuTl.css": "assets/http-error-DKulXuTl.95e42988d5d5.css", "assets/VSelect-ARDhJiQK.css": "assets/VSelect-ARDhJiQK.372c098fb475.css", "assets/change-password-dialog-Cm6AnxGf.js": "assets/change-password-dialog-Cm6AnxGf.66f4e604144b.js", "assets/pdf-doc-CMzaSV_K.css": "assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css", "assets/VRadioGroup-DPsPhrgJ.js": "assets/VRadioGroup-DPsPhrgJ.2232643fa4b2.js", "assets/VCheckboxBtn-DetOzpfX.js": "assets/VCheckboxBtn-DetOzpfX.e4293f13e16f.js", "assets/VSelectionControl-DTgtf_T6.js": "assets/VSelectionControl-DTgtf_T6.bbb99484db2e.js", "assets/materialdesignicons-webfont-PXm3-2wK.woff": "assets/materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff", "assets/admin-drawer-panel-Dm28c2tG.css": "assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css", "assets/VSlideGroup-Dk_1upHt.css": "assets/VSlideGroup-Dk_1upHt.2c836070ec75.css", "assets/settings-drawer-CUQX8aKC.js": "assets/settings-drawer-CUQX8aKC.82a95dcef142.js", "assets/VTable-DflzroDq.css": "assets/VTable-DflzroDq.160504d82195.css", "assets/settings-drawer-nZ9HvKSZ.css": "assets/settings-drawer-nZ9HvKSZ.01744e131806.css", "assets/filter-CvqVrkAJ.js": "assets/filter-CvqVrkAJ.8996d1b1db2a.js", "assets/VDialog-lQ13FnRR.css": "assets/VDialog-lQ13FnRR.1c801ad756b2.css", "assets/relation-chips-BGitp3yx.css": "assets/relation-chips-BGitp3yx.b3e7d178a615.css", "assets/main-Ztp855PW.css": "assets/main-Ztp855PW.d46d718fac45.css", "assets/VRadioGroup-i2qP9Wu9.css": "assets/VRadioGroup-i2qP9Wu9.8e3741381961.css", "assets/admin-D4sw3N4T.css": "assets/admin-D4sw3N4T.b590f88a62cf.css", "assets/browser-C50xLvMD.js": "assets/browser-C50xLvMD.ebeac0d428d2.js", "assets/http-error-BJTIqHG7.js": "assets/http-error-BJTIqHG7.68507d59e73a.js", "assets/reader-YbzUiD0T.css": "assets/reader-YbzUiD0T.efb15835b39d.css", "assets/confirm-dialog-Mznixjrb.js": "assets/confirm-dialog-Mznixjrb.927eaa9bea39.js", "assets/change-password-dialog-0u6IJA87.css": "assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css", "assets/unauthorized-BY4OkaUc.js": "assets/unauthorized-BY4OkaUc.7a55b1214630.js", "assets/copy-to-clipboard-DoUvDJVx.js": "assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js", "assets/VWindowItem-ByIod57Y.css": "assets/VWindowItem-ByIod57Y.f7fb19752bf3.css", "assets/VExpansionPanels-cdsBiWJW.js": "assets/VExpansionPanels-cdsBiWJW.289873cadd1b.js", "assets/pagination-toolbar-BA9ifTed.css": "assets/pagination-toolbar-BA9ifTed.b4865334ee08.css", "assets/task-tab-RfF_m-c2.js": "assets/task-tab-RfF_m-c2.4ea612865931.js", "assets/library-tab-BygwYPnO.css": "assets/library-tab-BygwYPnO.94e92aa60bf2.css", "assets/VCombobox-D2XmpiHi.js": "assets/VCombobox-D2XmpiHi.3427b660b686.js", "assets/VTextField-BJxb_QuX.js": "assets/VTextField-BJxb_QuX.79ef5fb485f2.js", "assets/reader-DwHuZOrV.js": "assets/reader-DwHuZOrV.b6067501f379.js", "assets/browser-Cy0OgQJC.css": "assets/browser-Cy0OgQJC.fabbd1aaffcf.css", "assets/confirm-dialog-BmhedLCx.css": "assets/confirm-dialog-BmhedLCx.7c2103d319d4.css", "assets/VTextField-Bc1tD4nS.css": "assets/VTextField-Bc1tD4nS.2026682c8437.css", "assets/materialdesignicons-webfont-B7mPwVP_.ttf": "assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf", "assets/unauthorized-DGIM1VFy.css": "assets/unauthorized-DGIM1VFy.c93d0b3ea5a4.css", "assets/VCombobox-BksEr4D_.css": "assets/VCombobox-BksEr4D_.73429bb75f42.css", "assets/admin-DrXckZDB.js": "assets/admin-DrXckZDB.5feb8fde2d3a.js", "assets/flag-tab-Bdh3jAbG.js": "assets/flag-tab-Bdh3jAbG.7731e3229cca.js", "assets/admin-drawer-panel-Crj9u2NV.js": "assets/admin-drawer-panel-Crj9u2NV.6b03e2a2ae14.js", "assets/stats-tab-CyDREZdm.js": "assets/stats-tab-CyDREZdm.000d9e8e00a1.js", "assets/flag-tab-DBqpLKi7.css": "assets/flag-tab-DBqpLKi7.dcfef39f541e.css", "assets/library-tab-DoebKL9-.js": "assets/library-tab-DoebKL9-.6eef922082b3.js", "assets/main-DArXKRWW.js": "assets/main-DArXKRWW.47a8064195fe.js", "assets/group-tab-89t0MyqI.js": "assets/group-tab-89t0MyqI.1c743da230be.js", "assets/VSelect-wpuzLrPv.js": "assets/VSelect-wpuzLrPv.f46f25efca5b.js", "assets/VSelectionControl-AnuOsZjr.css": "assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css", "assets/VSlideGroup-KhqCfdKQ.js": "assets/VSlideGroup-KhqCfdKQ.984b37842a8b.js", "assets/task-tab-1XiWn9xP.css": "assets/task-tab-1XiWn9xP.06cb8e1b794d.css", "assets/VDialog-BXw6XFu7.js": "assets/VDialog-BXw6XFu7.38cde34df95a.js", "assets/VCheckbox-DE3METqJ.js": "assets/VCheckbox-DE3METqJ.947b68d61150.js", "assets/pagination-toolbar-m9-HzvQE.js": "assets/pagination-toolbar-m9-HzvQE.178146e802bf.js", "assets/user-tab-tSrCTVFj.js": "assets/user-tab-tSrCTVFj.6c5b9a53a03a.js", "assets/datetime-column-DeCthByU.css": "assets/datetime-column-DeCthByU.1f3bf499e063.css", "assets/materialdesignicons-webfont-CSr8KVlo.eot": "assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot", "assets/stats-tab-CI0u-X7Y.css": "assets/stats-tab-CI0u-X7Y.2d1b6a0d4139.css", "assets/VWindowItem-BWJJgE5I.js": "assets/VWindowItem-BWJJgE5I.8daf8cde5589.js", "assets/VExpansionPanels-DsEXVcCv.css": "assets/VExpansionPanels-DsEXVcCv.20b475255e66.css", "assets/datetime-column-DqSk_iUb.js": "assets/datetime-column-DqSk_iUb.260bcbb4c8e2.js", "assets/pdf-doc-xL1qP1mK.js": "assets/pdf-doc-xL1qP1mK.643e4fab2b8d.js", "assets/relation-chips-CCg5vRIV.js": "assets/relation-chips-CCg5vRIV.59c17fb77441.js", "assets/VCheckbox-CMKdyl0R.css": "assets/VCheckbox-CMKdyl0R.016ed8d222c4.css", "assets/VTable-CJJzxZcw.js": "assets/VTable-CJJzxZcw.edb1bb582e5c.js", "assets/materialdesignicons-webfont-Dp5v-WZN.woff2": "assets/materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2", "robots.txt": "robots.b6216d61c03e.txt", "manifest.json": "manifest.37e83529bf91.json"}, "version": "1.1", "hash": "04ecb62660f3"}
codex/views/auth.py CHANGED
@@ -51,22 +51,40 @@ class TimezoneView(AuthGenericAPIView):
51
51
  input_serializer_class = TimezoneSerializer
52
52
  serializer_class = OKSerializer
53
53
 
54
+ def _save_timezone(self, django_timezone):
55
+ """Save django timezone in session."""
56
+ if not django_timezone:
57
+ return
58
+ session = self.request.session
59
+ session["django_timezone"] = django_timezone
60
+ session.save()
61
+
62
+ def _update_user_active(self):
63
+ """Update user activity."""
64
+ user = self.request.user
65
+ if user and user.is_authenticated:
66
+ UserActive.objects.update_or_create(user=user)
67
+
54
68
  @extend_schema(request=input_serializer_class)
55
- def put(self, request, *args, **kwargs):
69
+ def put(self, *args, **kwargs):
56
70
  """Get the user info for the current user."""
71
+ data = self.request.data # type: ignore
72
+ serializer = self.input_serializer_class(data=data)
73
+ serializer.is_valid(raise_exception=True)
74
+ try:
75
+ self._save_timezone(serializer.validated_data.get("timezone")) # type: ignore
76
+ except Exception as exc:
77
+ reason = f"update user timezone {exc}"
78
+ LOG.warning(reason)
79
+
57
80
  try:
58
- data = self.request.data # type: ignore
59
- serializer = self.input_serializer_class(data=data)
60
- serializer.is_valid(raise_exception=True)
61
- request.session["django_timezone"] = serializer.validated_data["timezone"] # type: ignore
62
- request.session.save()
63
- user = self.request.user
64
- if user.is_authenticated:
65
- UserActive.objects.update_or_create(user=user)
66
- serializer = self.get_serializer()
67
- return Response(serializer.data)
68
- except Exception:
69
- LOG.exception("timezone put")
81
+ self._update_user_active()
82
+ except Exception as exc:
83
+ reason = f"update user activity {exc}"
84
+ LOG.warning(reason)
85
+
86
+ serializer = self.get_serializer()
87
+ return Response(serializer.data)
70
88
 
71
89
 
72
90
  class GroupACLMixin:
codex/views/opds/auth.py CHANGED
@@ -9,7 +9,7 @@ from codex.views.template import CodexXMLTemplateView
9
9
  class OPDSAuthMixin:
10
10
  """Add Basic Auth."""
11
11
 
12
- authentication_classes = (SessionAuthentication, BasicAuthentication)
12
+ authentication_classes = (BasicAuthentication, SessionAuthentication)
13
13
  permission_classes = (IsAuthenticatedOrEnabledNonUsers,)
14
14
 
15
15
 
@@ -4,6 +4,7 @@ from datetime import datetime
4
4
  from math import floor
5
5
  from urllib.parse import quote_plus
6
6
 
7
+ from comicbox.box import Comicbox
7
8
  from django.urls import reverse
8
9
 
9
10
  from codex.logger.logging import get_logger
@@ -96,6 +97,16 @@ class OPDS1EntryLinksMixin:
96
97
  mime_type = self.mime_type_map.get(self.obj.file_type, MimeType.OCTET)
97
98
  return OPDS1Link(Rel.ACQUISITION, href, mime_type, length=self.obj.size)
98
99
 
100
+ def lazy_metadata(self):
101
+ """Get barebones metadata lazily to make pse work for chunky-like readers."""
102
+ if self.obj.page_count and self.obj.file_type:
103
+ return False
104
+ with Comicbox(self.obj.path) as cb:
105
+ self.obj.page_count = cb.get_page_count()
106
+ self.obj.file_type = cb.get_file_type()
107
+ LOG.debug(f"Got lazy opds pse metadata for {self.obj.path}")
108
+ return True
109
+
99
110
  def _stream_link(self):
100
111
  pk = self.obj.pk
101
112
  if not pk:
@@ -107,13 +118,14 @@ class OPDS1EntryLinksMixin:
107
118
  href = href.replace("0/page.jpg", "{pageNumber}/page.jpg")
108
119
  page = self.obj.page
109
120
  # extra stupid pse chunky fix for no metadata
110
- count = max(self.obj.page_count, 1)
121
+ self.lazy_metadata()
122
+ pse_count = self.obj.page_count
111
123
  bookmark_updated_at = self.obj.bookmark_updated_at
112
124
  return OPDS1Link(
113
125
  Rel.STREAM,
114
126
  href,
115
127
  MimeType.STREAM,
116
- pse_count=count,
128
+ pse_count=pse_count,
117
129
  pse_last_read=page,
118
130
  pse_last_read_date=bookmark_updated_at,
119
131
  )
@@ -3,7 +3,6 @@
3
3
  from types import MappingProxyType
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
- from comicbox.box import Comicbox
7
6
  from drf_spectacular.utils import extend_schema
8
7
  from rest_framework.response import Response
9
8
  from rest_framework.throttling import ScopedRateThrottle
@@ -30,7 +29,6 @@ from codex.views.opds.v1.links import (
30
29
  if TYPE_CHECKING:
31
30
  from collections.abc import Mapping
32
31
 
33
- from django.db.models import QuerySet
34
32
 
35
33
  LOG = get_logger(__name__)
36
34
 
@@ -132,15 +130,20 @@ class OPDS1FeedView(OPDS1LinksView, OPDSTemplateView):
132
130
  self.acquisition_groups, zero_pad, metadata, self.mime_type_map
133
131
  )
134
132
  fallback = bool(self.admin_flags.get("folder_view"))
133
+ import_pks = set()
135
134
  for obj in objs: # type: ignore
136
- entries += [
137
- OPDS1Entry(
138
- obj,
139
- self.request.GET,
140
- data,
141
- title_filename_fallback=fallback,
142
- )
143
- ]
135
+ entry = OPDS1Entry(
136
+ obj,
137
+ self.request.GET,
138
+ data,
139
+ title_filename_fallback=fallback,
140
+ )
141
+ if key == "books" and entry.lazy_metadata():
142
+ import_pks.add(obj.pk)
143
+ entries.append(entry)
144
+ if import_pks:
145
+ task = LazyImportComicsTask(frozenset(import_pks))
146
+ LIBRARIAN_QUEUE.put(task)
144
147
  return entries
145
148
 
146
149
  @property
@@ -162,28 +165,6 @@ class OPDS1FeedView(OPDS1LinksView, OPDSTemplateView):
162
165
  LOG.exception("Getting OPDS v1 entries")
163
166
  return entries
164
167
 
165
- def _ensure_page_counts(self):
166
- """Ensure page counts on books with just in time comicbox."""
167
- if self.admin_flags.get("import_metadata"):
168
- return
169
- books_qs: QuerySet = self.obj["books"] # type: ignore
170
- import_pks = set()
171
- new_books = []
172
- for book in books_qs:
173
- if book.page_count is not None:
174
- continue
175
- with Comicbox(book.path) as cb:
176
- book.file_type = cb.get_file_type()
177
- book.page_count = cb.get_page_count()
178
- new_books.append(book)
179
- import_pks.add(book.pk)
180
- if new_books:
181
- writable_obj = dict(self.obj)
182
- writable_obj["books"] = new_books # type: ignore
183
- self.obj = MappingProxyType(writable_obj)
184
- task = LazyImportComicsTask(frozenset(import_pks))
185
- LIBRARIAN_QUEUE.put(task)
186
-
187
168
  def get_object(self): # type: ignore
188
169
  """Get the browser page and serialize it for this subclass."""
189
170
  group_qs, book_qs, num_pages, total_count, zero_pad, mtime = (
@@ -206,8 +187,6 @@ class OPDS1FeedView(OPDS1LinksView, OPDSTemplateView):
206
187
 
207
188
  self.is_aq_feed = self.model_group in ("c", "f")
208
189
 
209
- self._ensure_page_counts()
210
-
211
190
  # Do not return a Mapping despite the type. Return self for the serializer.
212
191
  return self
213
192
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codex
3
- Version: 1.6.6
3
+ Version: 1.6.8
4
4
  Summary: A comic archive web server.
5
5
  Home-page: https://github.com/ajslater/codex
6
6
  License: GPL-3.0-only