codex 1.5.0rc1__py3-none-any.whl → 1.5.0rc2__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 (460) hide show
  1. codex/integrity.py +1 -1
  2. codex/logger/loggerd.py +1 -1
  3. codex/migrations/0026_comicbox_1.py +41 -19
  4. codex/serializers/opds/authentication.py +3 -3
  5. codex/serializers/opds/v2.py +1 -1
  6. codex/serializers/opds/v2_unused.py +1 -1
  7. codex/settings/settings.py +0 -5
  8. codex/static_root/assets/VCheckbox-Flv8K2j6.89239120bde3.css +1 -0
  9. codex/static_root/assets/VCheckbox-Flv8K2j6.89239120bde3.css.br +0 -0
  10. codex/static_root/assets/VCheckbox-Flv8K2j6.css +1 -0
  11. codex/static_root/assets/VCheckbox-Flv8K2j6.css.br +0 -0
  12. codex/static_root/assets/VCheckbox-MGquS0QE.fa4200601992.js +1 -0
  13. codex/static_root/assets/VCheckbox-MGquS0QE.fa4200601992.js.br +0 -0
  14. codex/static_root/assets/VCheckbox-MGquS0QE.fa4200601992.js.gz +0 -0
  15. codex/static_root/assets/VCheckbox-MGquS0QE.js +1 -0
  16. codex/static_root/assets/VCheckbox-MGquS0QE.js.br +0 -0
  17. codex/static_root/assets/VCheckbox-MGquS0QE.js.gz +0 -0
  18. codex/static_root/assets/VCheckboxBtn-yxvU5omH.988a7b938375.js +1 -0
  19. codex/static_root/assets/VCheckboxBtn-yxvU5omH.988a7b938375.js.br +0 -0
  20. codex/static_root/assets/VCheckboxBtn-yxvU5omH.988a7b938375.js.gz +0 -0
  21. codex/static_root/assets/VCheckboxBtn-yxvU5omH.js +1 -0
  22. codex/static_root/assets/VCheckboxBtn-yxvU5omH.js.br +0 -0
  23. codex/static_root/assets/VCheckboxBtn-yxvU5omH.js.gz +0 -0
  24. codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css +1 -0
  25. codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css.br +0 -0
  26. codex/static_root/assets/VCombobox-JDYDwU3-.5b3aabc73eeb.css.gz +0 -0
  27. codex/static_root/assets/VCombobox-JDYDwU3-.css +1 -0
  28. codex/static_root/assets/VCombobox-JDYDwU3-.css.br +0 -0
  29. codex/static_root/assets/VCombobox-JDYDwU3-.css.gz +0 -0
  30. codex/static_root/assets/VCombobox-w65JObkI.97abe248659d.js +1 -0
  31. codex/static_root/assets/VCombobox-w65JObkI.97abe248659d.js.br +0 -0
  32. codex/static_root/assets/VCombobox-w65JObkI.97abe248659d.js.gz +0 -0
  33. codex/static_root/assets/VCombobox-w65JObkI.js +1 -0
  34. codex/static_root/assets/VCombobox-w65JObkI.js.br +0 -0
  35. codex/static_root/assets/VCombobox-w65JObkI.js.gz +0 -0
  36. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css +1 -0
  37. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css.br +0 -0
  38. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.1a711f5f2fc0.css.gz +0 -0
  39. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.css +1 -0
  40. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.css.br +0 -0
  41. codex/static_root/assets/VDataTableVirtual-cJ9EDO4X.css.gz +0 -0
  42. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.a8a17160d7ef.js +1 -0
  43. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.a8a17160d7ef.js.br +0 -0
  44. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.a8a17160d7ef.js.gz +0 -0
  45. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.js +1 -0
  46. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.js.br +0 -0
  47. codex/static_root/assets/VDataTableVirtual-oL2PAKTi.js.gz +0 -0
  48. codex/static_root/assets/VExpansionPanel-EX1vU7wN.f746ab10168a.js +1 -0
  49. codex/static_root/assets/VExpansionPanel-EX1vU7wN.f746ab10168a.js.br +0 -0
  50. codex/static_root/assets/VExpansionPanel-EX1vU7wN.f746ab10168a.js.gz +0 -0
  51. codex/static_root/assets/VExpansionPanel-EX1vU7wN.js +1 -0
  52. codex/static_root/assets/VExpansionPanel-EX1vU7wN.js.br +0 -0
  53. codex/static_root/assets/VExpansionPanel-EX1vU7wN.js.gz +0 -0
  54. codex/static_root/assets/VExpansionPanel-gdSap9-6.212a9add7ff2.css +1 -0
  55. codex/static_root/assets/VExpansionPanel-gdSap9-6.212a9add7ff2.css.br +0 -0
  56. codex/static_root/assets/VExpansionPanel-gdSap9-6.212a9add7ff2.css.gz +0 -0
  57. codex/static_root/assets/VExpansionPanel-gdSap9-6.css +1 -0
  58. codex/static_root/assets/VExpansionPanel-gdSap9-6.css.br +0 -0
  59. codex/static_root/assets/VExpansionPanel-gdSap9-6.css.gz +0 -0
  60. codex/static_root/assets/VMain-VT-qZQ__.c0547e61f15f.js +1 -0
  61. codex/static_root/assets/VMain-VT-qZQ__.c0547e61f15f.js.br +0 -0
  62. codex/static_root/assets/VMain-VT-qZQ__.c0547e61f15f.js.gz +0 -0
  63. codex/static_root/assets/VMain-VT-qZQ__.js +1 -0
  64. codex/static_root/assets/VMain-VT-qZQ__.js.br +0 -0
  65. codex/static_root/assets/VMain-VT-qZQ__.js.gz +0 -0
  66. codex/static_root/assets/VMain-crd-1eHM.a00e206f3cfa.css +1 -0
  67. codex/static_root/assets/VMain-crd-1eHM.a00e206f3cfa.css.br +0 -0
  68. codex/static_root/assets/VMain-crd-1eHM.a00e206f3cfa.css.gz +0 -0
  69. codex/static_root/assets/VMain-crd-1eHM.css +1 -0
  70. codex/static_root/assets/VMain-crd-1eHM.css.br +0 -0
  71. codex/static_root/assets/VMain-crd-1eHM.css.gz +0 -0
  72. codex/static_root/assets/VRadioGroup-Itqj_Vrv.8e3741381961.css +1 -0
  73. codex/static_root/assets/VRadioGroup-Itqj_Vrv.8e3741381961.css.br +0 -0
  74. codex/static_root/assets/VRadioGroup-Itqj_Vrv.8e3741381961.css.gz +0 -0
  75. codex/static_root/assets/VRadioGroup-Itqj_Vrv.css +1 -0
  76. codex/static_root/assets/VRadioGroup-Itqj_Vrv.css.br +0 -0
  77. codex/static_root/assets/VRadioGroup-Itqj_Vrv.css.gz +0 -0
  78. codex/static_root/assets/VRadioGroup-TtGu5WYN.82313d607c3b.js +1 -0
  79. codex/static_root/assets/VRadioGroup-TtGu5WYN.82313d607c3b.js.br +3 -0
  80. codex/static_root/assets/VRadioGroup-TtGu5WYN.82313d607c3b.js.gz +0 -0
  81. codex/static_root/assets/VRadioGroup-TtGu5WYN.js +1 -0
  82. codex/static_root/assets/VRadioGroup-TtGu5WYN.js.br +3 -0
  83. codex/static_root/assets/VRadioGroup-TtGu5WYN.js.gz +0 -0
  84. codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css +1 -0
  85. codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css.br +0 -0
  86. codex/static_root/assets/VSelect-3jR8Um8C.0c8560b189db.css.gz +0 -0
  87. codex/static_root/assets/VSelect-3jR8Um8C.css +1 -0
  88. codex/static_root/assets/VSelect-3jR8Um8C.css.br +0 -0
  89. codex/static_root/assets/VSelect-3jR8Um8C.css.gz +0 -0
  90. codex/static_root/assets/VSelect-Yw9YsgjJ.343b4b0ef067.js +1 -0
  91. codex/static_root/assets/VSelect-Yw9YsgjJ.343b4b0ef067.js.br +0 -0
  92. codex/static_root/assets/VSelect-Yw9YsgjJ.343b4b0ef067.js.gz +0 -0
  93. codex/static_root/assets/VSelect-Yw9YsgjJ.js +1 -0
  94. codex/static_root/assets/VSelect-Yw9YsgjJ.js.br +0 -0
  95. codex/static_root/assets/VSelect-Yw9YsgjJ.js.gz +0 -0
  96. codex/static_root/assets/VSelectionControl-9CzKd8rG.94ddb0376ad2.js +1 -0
  97. codex/static_root/assets/VSelectionControl-9CzKd8rG.94ddb0376ad2.js.br +0 -0
  98. codex/static_root/assets/VSelectionControl-9CzKd8rG.94ddb0376ad2.js.gz +0 -0
  99. codex/static_root/assets/VSelectionControl-9CzKd8rG.js +1 -0
  100. codex/static_root/assets/VSelectionControl-9CzKd8rG.js.br +0 -0
  101. codex/static_root/assets/VSelectionControl-9CzKd8rG.js.gz +0 -0
  102. codex/static_root/assets/VSelectionControl-RavvtvCK.9687c77461fc.css +1 -0
  103. codex/static_root/assets/VSelectionControl-RavvtvCK.9687c77461fc.css.br +0 -0
  104. codex/static_root/assets/VSelectionControl-RavvtvCK.9687c77461fc.css.gz +0 -0
  105. codex/static_root/assets/VSelectionControl-RavvtvCK.css +1 -0
  106. codex/static_root/assets/VSelectionControl-RavvtvCK.css.br +0 -0
  107. codex/static_root/assets/VSelectionControl-RavvtvCK.css.gz +0 -0
  108. codex/static_root/assets/VTable-aiByCThw.85589025b93b.css +1 -0
  109. codex/static_root/assets/VTable-aiByCThw.85589025b93b.css.br +0 -0
  110. codex/static_root/assets/VTable-aiByCThw.85589025b93b.css.gz +0 -0
  111. codex/static_root/assets/VTable-aiByCThw.css +1 -0
  112. codex/static_root/assets/VTable-aiByCThw.css.br +0 -0
  113. codex/static_root/assets/VTable-aiByCThw.css.gz +0 -0
  114. codex/static_root/assets/VTable-q30xy1Qm.a295a3c5b1fd.js +1 -0
  115. codex/static_root/assets/VTable-q30xy1Qm.a295a3c5b1fd.js.br +0 -0
  116. codex/static_root/assets/VTable-q30xy1Qm.a295a3c5b1fd.js.gz +0 -0
  117. codex/static_root/assets/VTable-q30xy1Qm.js +1 -0
  118. codex/static_root/assets/VTable-q30xy1Qm.js.br +0 -0
  119. codex/static_root/assets/VTable-q30xy1Qm.js.gz +0 -0
  120. codex/static_root/assets/VTextField-1s8i2nK8.28e3377981c8.js +1 -0
  121. codex/static_root/assets/VTextField-1s8i2nK8.28e3377981c8.js.br +0 -0
  122. codex/static_root/assets/VTextField-1s8i2nK8.28e3377981c8.js.gz +0 -0
  123. codex/static_root/assets/VTextField-1s8i2nK8.js +1 -0
  124. codex/static_root/assets/VTextField-1s8i2nK8.js.br +0 -0
  125. codex/static_root/assets/VTextField-1s8i2nK8.js.gz +0 -0
  126. codex/static_root/assets/VTextField-8NJPNEpH.190723039dea.css +1 -0
  127. codex/static_root/assets/VTextField-8NJPNEpH.190723039dea.css.br +0 -0
  128. codex/static_root/assets/VTextField-8NJPNEpH.190723039dea.css.gz +0 -0
  129. codex/static_root/assets/VTextField-8NJPNEpH.css +1 -0
  130. codex/static_root/assets/VTextField-8NJPNEpH.css.br +0 -0
  131. codex/static_root/assets/VTextField-8NJPNEpH.css.gz +0 -0
  132. codex/static_root/assets/VToolbar-BBzymioO.ec12d95a725e.js +7 -0
  133. codex/static_root/assets/VToolbar-BBzymioO.ec12d95a725e.js.br +0 -0
  134. codex/static_root/assets/VToolbar-BBzymioO.ec12d95a725e.js.gz +0 -0
  135. codex/static_root/assets/VToolbar-BBzymioO.js +7 -0
  136. codex/static_root/assets/VToolbar-BBzymioO.js.br +0 -0
  137. codex/static_root/assets/VToolbar-BBzymioO.js.gz +0 -0
  138. codex/static_root/assets/VToolbar-PLads6MY.css +1 -0
  139. codex/static_root/assets/VToolbar-PLads6MY.css.br +0 -0
  140. codex/static_root/assets/VToolbar-PLads6MY.css.gz +0 -0
  141. codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css +1 -0
  142. codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css.br +0 -0
  143. codex/static_root/assets/VToolbar-PLads6MY.ebe8dfc407e8.css.gz +0 -0
  144. codex/static_root/assets/VWindowItem--TlRwQ5R.css +1 -0
  145. codex/static_root/assets/VWindowItem--TlRwQ5R.css.br +0 -0
  146. codex/static_root/assets/VWindowItem--TlRwQ5R.css.gz +0 -0
  147. codex/static_root/assets/VWindowItem--TlRwQ5R.fe195e056b07.css +1 -0
  148. codex/static_root/assets/VWindowItem--TlRwQ5R.fe195e056b07.css.br +0 -0
  149. codex/static_root/assets/VWindowItem--TlRwQ5R.fe195e056b07.css.gz +0 -0
  150. codex/static_root/assets/VWindowItem-J3hy1lxS.b8e6081f6afc.js +1 -0
  151. codex/static_root/assets/VWindowItem-J3hy1lxS.b8e6081f6afc.js.br +0 -0
  152. codex/static_root/assets/VWindowItem-J3hy1lxS.b8e6081f6afc.js.gz +0 -0
  153. codex/static_root/assets/VWindowItem-J3hy1lxS.js +1 -0
  154. codex/static_root/assets/VWindowItem-J3hy1lxS.js.br +0 -0
  155. codex/static_root/assets/VWindowItem-J3hy1lxS.js.gz +0 -0
  156. codex/static_root/assets/admin-MwCSFwIp.6de10f13b01b.css +1 -0
  157. codex/static_root/assets/admin-MwCSFwIp.6de10f13b01b.css.br +0 -0
  158. codex/static_root/assets/admin-MwCSFwIp.6de10f13b01b.css.gz +0 -0
  159. codex/static_root/assets/admin-MwCSFwIp.css +1 -0
  160. codex/static_root/assets/admin-MwCSFwIp.css.br +0 -0
  161. codex/static_root/assets/admin-MwCSFwIp.css.gz +0 -0
  162. codex/static_root/assets/admin-NMv29Iqq.9918d0dee7ba.js +1 -0
  163. codex/static_root/assets/admin-NMv29Iqq.9918d0dee7ba.js.br +0 -0
  164. codex/static_root/assets/admin-NMv29Iqq.9918d0dee7ba.js.gz +0 -0
  165. codex/static_root/assets/admin-NMv29Iqq.js +1 -0
  166. codex/static_root/assets/admin-NMv29Iqq.js.br +0 -0
  167. codex/static_root/assets/admin-NMv29Iqq.js.gz +0 -0
  168. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.a2371ad685d2.js +33 -0
  169. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.a2371ad685d2.js.br +0 -0
  170. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.a2371ad685d2.js.gz +0 -0
  171. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.js +33 -0
  172. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.js.br +0 -0
  173. codex/static_root/assets/admin-drawer-panel-JjJ1iA6R.js.gz +0 -0
  174. codex/static_root/assets/admin-drawer-panel-qf94Ysts.c0696c636fab.css +1 -0
  175. codex/static_root/assets/admin-drawer-panel-qf94Ysts.c0696c636fab.css.br +0 -0
  176. codex/static_root/assets/admin-drawer-panel-qf94Ysts.c0696c636fab.css.gz +0 -0
  177. codex/static_root/assets/admin-drawer-panel-qf94Ysts.css +1 -0
  178. codex/static_root/assets/admin-drawer-panel-qf94Ysts.css.br +0 -0
  179. codex/static_root/assets/admin-drawer-panel-qf94Ysts.css.gz +0 -0
  180. codex/static_root/assets/{browser-LpHrL2zI.11f261776acd.css → browser-hLiDgCIH.6dd225a38a22.css} +1 -1
  181. codex/static_root/assets/browser-hLiDgCIH.6dd225a38a22.css.br +0 -0
  182. codex/static_root/assets/{browser-LpHrL2zI.11f261776acd.css.gz → browser-hLiDgCIH.6dd225a38a22.css.gz} +0 -0
  183. codex/static_root/assets/{browser-LpHrL2zI.css → browser-hLiDgCIH.css} +1 -1
  184. codex/static_root/assets/browser-hLiDgCIH.css.br +0 -0
  185. codex/static_root/assets/{browser-LpHrL2zI.css.gz → browser-hLiDgCIH.css.gz} +0 -0
  186. codex/static_root/assets/browser-zvI8XpnW.3f264709f471.js +1 -0
  187. codex/static_root/assets/browser-zvI8XpnW.3f264709f471.js.br +0 -0
  188. codex/static_root/assets/browser-zvI8XpnW.3f264709f471.js.gz +0 -0
  189. codex/static_root/assets/browser-zvI8XpnW.js +1 -0
  190. codex/static_root/assets/browser-zvI8XpnW.js.br +0 -0
  191. codex/static_root/assets/browser-zvI8XpnW.js.gz +0 -0
  192. codex/static_root/assets/change-password-dialog-9i9SZGmU.83b35cb4309c.js +1 -0
  193. codex/static_root/assets/change-password-dialog-9i9SZGmU.83b35cb4309c.js.br +0 -0
  194. codex/static_root/assets/change-password-dialog-9i9SZGmU.83b35cb4309c.js.gz +0 -0
  195. codex/static_root/assets/change-password-dialog-9i9SZGmU.js +1 -0
  196. codex/static_root/assets/change-password-dialog-9i9SZGmU.js.br +0 -0
  197. codex/static_root/assets/change-password-dialog-9i9SZGmU.js.gz +0 -0
  198. codex/static_root/assets/change-password-dialog-UZr5DYqw.2fead58a78c7.css +1 -0
  199. codex/static_root/assets/change-password-dialog-UZr5DYqw.2fead58a78c7.css.br +0 -0
  200. codex/static_root/assets/change-password-dialog-UZr5DYqw.2fead58a78c7.css.gz +0 -0
  201. codex/static_root/assets/change-password-dialog-UZr5DYqw.css +1 -0
  202. codex/static_root/assets/change-password-dialog-UZr5DYqw.css.br +0 -0
  203. codex/static_root/assets/change-password-dialog-UZr5DYqw.css.gz +0 -0
  204. codex/static_root/assets/confirm-dialog-3RjVRgsv.46d811c7f837.js +1 -0
  205. codex/static_root/assets/confirm-dialog-3RjVRgsv.46d811c7f837.js.br +0 -0
  206. codex/static_root/assets/confirm-dialog-3RjVRgsv.46d811c7f837.js.gz +0 -0
  207. codex/static_root/assets/confirm-dialog-3RjVRgsv.js +1 -0
  208. codex/static_root/assets/confirm-dialog-3RjVRgsv.js.br +0 -0
  209. codex/static_root/assets/confirm-dialog-3RjVRgsv.js.gz +0 -0
  210. codex/static_root/assets/confirm-dialog-ZoXnSwsX.7c2103d319d4.css +1 -0
  211. codex/static_root/assets/confirm-dialog-ZoXnSwsX.css +1 -0
  212. codex/static_root/assets/confirm-footer-IJHq21-K.8e9be6e41786.js +1 -0
  213. codex/static_root/assets/confirm-footer-IJHq21-K.8e9be6e41786.js.br +0 -0
  214. codex/static_root/assets/confirm-footer-IJHq21-K.8e9be6e41786.js.gz +0 -0
  215. codex/static_root/assets/confirm-footer-IJHq21-K.js +1 -0
  216. codex/static_root/assets/confirm-footer-IJHq21-K.js.br +0 -0
  217. codex/static_root/assets/confirm-footer-IJHq21-K.js.gz +0 -0
  218. codex/static_root/assets/confirm-footer-wmmDHzIL.04fb93e7daf3.css +1 -0
  219. codex/static_root/assets/confirm-footer-wmmDHzIL.04fb93e7daf3.css.br +0 -0
  220. codex/static_root/assets/confirm-footer-wmmDHzIL.04fb93e7daf3.css.gz +0 -0
  221. codex/static_root/assets/confirm-footer-wmmDHzIL.css +1 -0
  222. codex/static_root/assets/confirm-footer-wmmDHzIL.css.br +0 -0
  223. codex/static_root/assets/confirm-footer-wmmDHzIL.css.gz +0 -0
  224. codex/static_root/assets/datetime-column-Vln78oZ2.a4a94ba57c73.css +1 -0
  225. codex/static_root/assets/datetime-column-Vln78oZ2.a4a94ba57c73.css.br +0 -0
  226. codex/static_root/assets/datetime-column-Vln78oZ2.css +1 -0
  227. codex/static_root/assets/datetime-column-Vln78oZ2.css.br +0 -0
  228. codex/static_root/assets/datetime-column-hS6FHx6v.1158c5db4d07.js +1 -0
  229. codex/static_root/assets/datetime-column-hS6FHx6v.1158c5db4d07.js.br +0 -0
  230. codex/static_root/assets/datetime-column-hS6FHx6v.1158c5db4d07.js.gz +0 -0
  231. codex/static_root/assets/datetime-column-hS6FHx6v.js +1 -0
  232. codex/static_root/assets/datetime-column-hS6FHx6v.js.br +0 -0
  233. codex/static_root/assets/datetime-column-hS6FHx6v.js.gz +0 -0
  234. codex/static_root/assets/filter-jwn1nJiw.5001415d600e.js +1 -0
  235. codex/static_root/assets/filter-jwn1nJiw.5001415d600e.js.br +0 -0
  236. codex/static_root/assets/filter-jwn1nJiw.5001415d600e.js.gz +0 -0
  237. codex/static_root/assets/filter-jwn1nJiw.js +1 -0
  238. codex/static_root/assets/filter-jwn1nJiw.js.br +0 -0
  239. codex/static_root/assets/filter-jwn1nJiw.js.gz +0 -0
  240. codex/static_root/assets/flag-tab--ch0e4rD.58776d26590c.js +1 -0
  241. codex/static_root/assets/flag-tab--ch0e4rD.58776d26590c.js.br +0 -0
  242. codex/static_root/assets/flag-tab--ch0e4rD.58776d26590c.js.gz +0 -0
  243. codex/static_root/assets/flag-tab--ch0e4rD.js +1 -0
  244. codex/static_root/assets/flag-tab--ch0e4rD.js.br +0 -0
  245. codex/static_root/assets/flag-tab--ch0e4rD.js.gz +0 -0
  246. codex/static_root/assets/flag-tab-Iblj4w2l.6bf1e65123e6.css +1 -0
  247. codex/static_root/assets/flag-tab-Iblj4w2l.6bf1e65123e6.css.br +1 -0
  248. codex/static_root/assets/flag-tab-Iblj4w2l.6bf1e65123e6.css.gz +0 -0
  249. codex/static_root/assets/flag-tab-Iblj4w2l.css +1 -0
  250. codex/static_root/assets/flag-tab-Iblj4w2l.css.br +1 -0
  251. codex/static_root/assets/flag-tab-Iblj4w2l.css.gz +0 -0
  252. codex/static_root/assets/group-tab-ArQ1w79f.cc06faf5e6b9.js +1 -0
  253. codex/static_root/assets/group-tab-ArQ1w79f.cc06faf5e6b9.js.br +0 -0
  254. codex/static_root/assets/group-tab-ArQ1w79f.cc06faf5e6b9.js.gz +0 -0
  255. codex/static_root/assets/group-tab-ArQ1w79f.js +1 -0
  256. codex/static_root/assets/group-tab-ArQ1w79f.js.br +0 -0
  257. codex/static_root/assets/group-tab-ArQ1w79f.js.gz +0 -0
  258. codex/static_root/assets/group-tab-Nw18UnrX.5fc2cfa31669.css +1 -0
  259. codex/static_root/assets/group-tab-Nw18UnrX.5fc2cfa31669.css.br +0 -0
  260. codex/static_root/assets/group-tab-Nw18UnrX.5fc2cfa31669.css.gz +0 -0
  261. codex/static_root/assets/group-tab-Nw18UnrX.css +1 -0
  262. codex/static_root/assets/group-tab-Nw18UnrX.css.br +0 -0
  263. codex/static_root/assets/group-tab-Nw18UnrX.css.gz +0 -0
  264. codex/static_root/assets/http-error--_xFbHmk.4ac657568407.js +1 -0
  265. codex/static_root/assets/http-error--_xFbHmk.4ac657568407.js.br +0 -0
  266. codex/static_root/assets/http-error--_xFbHmk.4ac657568407.js.gz +0 -0
  267. codex/static_root/assets/http-error--_xFbHmk.js +1 -0
  268. codex/static_root/assets/http-error--_xFbHmk.js.br +0 -0
  269. codex/static_root/assets/http-error--_xFbHmk.js.gz +0 -0
  270. codex/static_root/assets/index-RrPhDVxT.36d50c91b2c1.js +1 -0
  271. codex/static_root/assets/index-RrPhDVxT.36d50c91b2c1.js.br +0 -0
  272. codex/static_root/assets/index-RrPhDVxT.36d50c91b2c1.js.gz +0 -0
  273. codex/static_root/assets/index-RrPhDVxT.js +1 -0
  274. codex/static_root/assets/index-RrPhDVxT.js.br +0 -0
  275. codex/static_root/assets/index-RrPhDVxT.js.gz +0 -0
  276. codex/static_root/assets/library-tab-2Sg7UOb_.c8123e4bc5a4.css +1 -0
  277. codex/static_root/assets/library-tab-2Sg7UOb_.c8123e4bc5a4.css.br +3 -0
  278. codex/static_root/assets/library-tab-2Sg7UOb_.c8123e4bc5a4.css.gz +0 -0
  279. codex/static_root/assets/library-tab-2Sg7UOb_.css +1 -0
  280. codex/static_root/assets/library-tab-2Sg7UOb_.css.br +3 -0
  281. codex/static_root/assets/library-tab-2Sg7UOb_.css.gz +0 -0
  282. codex/static_root/assets/library-tab-DTSk7xJH.c19461f4ea09.js +1 -0
  283. codex/static_root/assets/library-tab-DTSk7xJH.c19461f4ea09.js.br +0 -0
  284. codex/static_root/assets/library-tab-DTSk7xJH.c19461f4ea09.js.gz +0 -0
  285. codex/static_root/assets/library-tab-DTSk7xJH.js +1 -0
  286. codex/static_root/assets/library-tab-DTSk7xJH.js.br +0 -0
  287. codex/static_root/assets/library-tab-DTSk7xJH.js.gz +0 -0
  288. codex/static_root/assets/main-fEXxBNBg.d57876a83567.js +37 -0
  289. codex/static_root/assets/main-fEXxBNBg.d57876a83567.js.br +0 -0
  290. codex/static_root/assets/main-fEXxBNBg.d57876a83567.js.gz +0 -0
  291. codex/static_root/assets/main-fEXxBNBg.js +37 -0
  292. codex/static_root/assets/main-fEXxBNBg.js.br +0 -0
  293. codex/static_root/assets/main-fEXxBNBg.js.gz +0 -0
  294. codex/static_root/assets/{metadata-dialog-h6Ksq8nL.042fed116504.css → metadata-dialog-GoqskInA.4e2d05d79644.css} +1 -1
  295. codex/static_root/assets/metadata-dialog-GoqskInA.4e2d05d79644.css.br +0 -0
  296. codex/static_root/assets/metadata-dialog-GoqskInA.4e2d05d79644.css.gz +0 -0
  297. codex/static_root/assets/{metadata-dialog-h6Ksq8nL.css → metadata-dialog-GoqskInA.css} +1 -1
  298. codex/static_root/assets/metadata-dialog-GoqskInA.css.br +0 -0
  299. codex/static_root/assets/metadata-dialog-GoqskInA.css.gz +0 -0
  300. codex/static_root/assets/metadata-dialog-JnnKcg8a.ab72001734ab.js +1 -0
  301. codex/static_root/assets/metadata-dialog-JnnKcg8a.ab72001734ab.js.br +0 -0
  302. codex/static_root/assets/metadata-dialog-JnnKcg8a.ab72001734ab.js.gz +0 -0
  303. codex/static_root/assets/metadata-dialog-JnnKcg8a.js +1 -0
  304. codex/static_root/assets/metadata-dialog-JnnKcg8a.js.br +0 -0
  305. codex/static_root/assets/metadata-dialog-JnnKcg8a.js.gz +0 -0
  306. codex/static_root/assets/{page-pdf-8DCW311Z.58ff7f64f5c7.js → page-pdf-g4F4Ke5z.389bdaf4fdf0.js} +1 -1
  307. codex/static_root/assets/page-pdf-g4F4Ke5z.389bdaf4fdf0.js.br +0 -0
  308. codex/static_root/assets/page-pdf-g4F4Ke5z.389bdaf4fdf0.js.gz +0 -0
  309. codex/static_root/assets/{page-pdf-8DCW311Z.js → page-pdf-g4F4Ke5z.js} +1 -1
  310. codex/static_root/assets/page-pdf-g4F4Ke5z.js.br +0 -0
  311. codex/static_root/assets/page-pdf-g4F4Ke5z.js.gz +0 -0
  312. codex/static_root/assets/reader-QLyUuSWQ.9e6c0e79fcc4.js +7 -0
  313. codex/static_root/assets/reader-QLyUuSWQ.9e6c0e79fcc4.js.br +0 -0
  314. codex/static_root/assets/reader-QLyUuSWQ.9e6c0e79fcc4.js.gz +0 -0
  315. codex/static_root/assets/reader-QLyUuSWQ.js +7 -0
  316. codex/static_root/assets/reader-QLyUuSWQ.js.br +0 -0
  317. codex/static_root/assets/reader-QLyUuSWQ.js.gz +0 -0
  318. codex/static_root/assets/stats-tab-Uk5KYfnH.577928e85d6f.js +1 -0
  319. codex/static_root/assets/stats-tab-Uk5KYfnH.577928e85d6f.js.br +0 -0
  320. codex/static_root/assets/stats-tab-Uk5KYfnH.577928e85d6f.js.gz +0 -0
  321. codex/static_root/assets/stats-tab-Uk5KYfnH.js +1 -0
  322. codex/static_root/assets/stats-tab-Uk5KYfnH.js.br +0 -0
  323. codex/static_root/assets/stats-tab-Uk5KYfnH.js.gz +0 -0
  324. codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css +1 -0
  325. codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css.br +0 -0
  326. codex/static_root/assets/stats-tab-p4QMYgdc.2f98833311d8.css.gz +0 -0
  327. codex/static_root/assets/stats-tab-p4QMYgdc.css +1 -0
  328. codex/static_root/assets/stats-tab-p4QMYgdc.css.br +0 -0
  329. codex/static_root/assets/stats-tab-p4QMYgdc.css.gz +0 -0
  330. codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css +1 -0
  331. codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css.br +4 -0
  332. codex/static_root/assets/task-tab-ZlzQK_L_.11bd9219039b.css.gz +0 -0
  333. codex/static_root/assets/task-tab-ZlzQK_L_.css +1 -0
  334. codex/static_root/assets/task-tab-ZlzQK_L_.css.br +4 -0
  335. codex/static_root/assets/task-tab-ZlzQK_L_.css.gz +0 -0
  336. codex/static_root/assets/task-tab-yrzb0Yg7.acca63d69906.js +1 -0
  337. codex/static_root/assets/task-tab-yrzb0Yg7.acca63d69906.js.br +0 -0
  338. codex/static_root/assets/task-tab-yrzb0Yg7.acca63d69906.js.gz +0 -0
  339. codex/static_root/assets/task-tab-yrzb0Yg7.js +1 -0
  340. codex/static_root/assets/task-tab-yrzb0Yg7.js.br +0 -0
  341. codex/static_root/assets/task-tab-yrzb0Yg7.js.gz +0 -0
  342. codex/static_root/assets/to-case-FdEoSAB7.98a284e67723.js +1 -0
  343. codex/static_root/assets/to-case-FdEoSAB7.98a284e67723.js.br +0 -0
  344. codex/static_root/assets/to-case-FdEoSAB7.js +1 -0
  345. codex/static_root/assets/to-case-FdEoSAB7.js.br +0 -0
  346. codex/static_root/assets/user-tab-tjEgknk-.03270572c181.js +1 -0
  347. codex/static_root/assets/user-tab-tjEgknk-.03270572c181.js.br +0 -0
  348. codex/static_root/assets/user-tab-tjEgknk-.03270572c181.js.gz +0 -0
  349. codex/static_root/assets/user-tab-tjEgknk-.js +1 -0
  350. codex/static_root/assets/user-tab-tjEgknk-.js.br +0 -0
  351. codex/static_root/assets/user-tab-tjEgknk-.js.gz +0 -0
  352. codex/static_root/manifest.e029798eeec1.json +572 -0
  353. codex/static_root/manifest.e029798eeec1.json.br +0 -0
  354. codex/static_root/manifest.e029798eeec1.json.gz +0 -0
  355. codex/static_root/manifest.json +572 -0
  356. codex/static_root/manifest.json.br +0 -0
  357. codex/static_root/manifest.json.gz +0 -0
  358. codex/static_root/staticfiles.json +1 -1
  359. codex/views/browser/metadata.py +17 -12
  360. codex/views/const.py +2 -0
  361. codex/views/cover.py +1 -1
  362. codex/views/opds/const.py +0 -1
  363. codex/views/opds/v1/feed.py +2 -5
  364. codex/views/opds/v2/feed.py +2 -1
  365. codex/views/opds/v2/links.py +3 -2
  366. codex/views/reader/page.py +2 -2
  367. codex/views/template.py +1 -1
  368. {codex-1.5.0rc1.dist-info → codex-1.5.0rc2.dist-info}/METADATA +29 -27
  369. {codex-1.5.0rc1.dist-info → codex-1.5.0rc2.dist-info}/RECORD +372 -117
  370. codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css +0 -51
  371. codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.br +0 -0
  372. codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.gz +0 -0
  373. codex/static_root/admin/css/codex-admin-dark.css +0 -51
  374. codex/static_root/admin/css/codex-admin-dark.css.br +0 -0
  375. codex/static_root/admin/css/codex-admin-dark.css.gz +0 -0
  376. codex/static_root/admin/css/codex-admin.7ad6b144bf84.css +0 -60
  377. codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.br +0 -0
  378. codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.gz +0 -0
  379. codex/static_root/admin/css/codex-admin.css +0 -60
  380. codex/static_root/admin/css/codex-admin.css.br +0 -0
  381. codex/static_root/admin/css/codex-admin.css.gz +0 -0
  382. codex/static_root/admin/css/queue-job.bee4dbac67f1.css +0 -9
  383. codex/static_root/admin/css/queue-job.bee4dbac67f1.css.br +0 -0
  384. codex/static_root/admin/css/queue-job.bee4dbac67f1.css.gz +0 -0
  385. codex/static_root/admin/css/queue-job.css +0 -9
  386. codex/static_root/admin/css/queue-job.css.br +0 -0
  387. codex/static_root/admin/css/queue-job.css.gz +0 -0
  388. codex/static_root/admin/js/queue-job.628c5e325415.js +0 -53
  389. codex/static_root/admin/js/queue-job.628c5e325415.js.br +0 -0
  390. codex/static_root/admin/js/queue-job.628c5e325415.js.gz +0 -0
  391. codex/static_root/admin/js/queue-job.js +0 -53
  392. codex/static_root/admin/js/queue-job.js.br +0 -0
  393. codex/static_root/admin/js/queue-job.js.gz +0 -0
  394. codex/static_root/assets/admin-I3RmFwkX.css +0 -1
  395. codex/static_root/assets/admin-I3RmFwkX.css.br +0 -0
  396. codex/static_root/assets/admin-I3RmFwkX.css.gz +0 -0
  397. codex/static_root/assets/admin-I3RmFwkX.f37f64bccd87.css +0 -1
  398. codex/static_root/assets/admin-I3RmFwkX.f37f64bccd87.css.br +0 -0
  399. codex/static_root/assets/admin-I3RmFwkX.f37f64bccd87.css.gz +0 -0
  400. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.c37134d4a58c.css +0 -1
  401. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.c37134d4a58c.css.br +0 -0
  402. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.c37134d4a58c.css.gz +0 -0
  403. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.css +0 -1
  404. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.css.br +0 -0
  405. codex/static_root/assets/admin-drawer-panel-6Jzha_HG.css.gz +0 -0
  406. codex/static_root/assets/admin-drawer-panel-v7PBN80C.b839d90a76e3.js +0 -1
  407. codex/static_root/assets/admin-drawer-panel-v7PBN80C.b839d90a76e3.js.br +0 -0
  408. codex/static_root/assets/admin-drawer-panel-v7PBN80C.b839d90a76e3.js.gz +0 -0
  409. codex/static_root/assets/admin-drawer-panel-v7PBN80C.js +0 -1
  410. codex/static_root/assets/admin-drawer-panel-v7PBN80C.js.br +0 -0
  411. codex/static_root/assets/admin-drawer-panel-v7PBN80C.js.gz +0 -0
  412. codex/static_root/assets/admin-eKzY3vzh.6fb51913d3af.js +0 -49
  413. codex/static_root/assets/admin-eKzY3vzh.6fb51913d3af.js.br +0 -0
  414. codex/static_root/assets/admin-eKzY3vzh.6fb51913d3af.js.gz +0 -0
  415. codex/static_root/assets/admin-eKzY3vzh.js +0 -49
  416. codex/static_root/assets/admin-eKzY3vzh.js.br +0 -0
  417. codex/static_root/assets/admin-eKzY3vzh.js.gz +0 -0
  418. codex/static_root/assets/browser-2U3chfQN.9841f3b5f8bf.js +0 -1
  419. codex/static_root/assets/browser-2U3chfQN.9841f3b5f8bf.js.br +0 -0
  420. codex/static_root/assets/browser-2U3chfQN.9841f3b5f8bf.js.gz +0 -0
  421. codex/static_root/assets/browser-2U3chfQN.js +0 -1
  422. codex/static_root/assets/browser-2U3chfQN.js.br +0 -0
  423. codex/static_root/assets/browser-2U3chfQN.js.gz +0 -0
  424. codex/static_root/assets/browser-LpHrL2zI.11f261776acd.css.br +0 -0
  425. codex/static_root/assets/browser-LpHrL2zI.css.br +0 -0
  426. codex/static_root/assets/http-error-tGvBmzRt.6d163aa84451.js +0 -1
  427. codex/static_root/assets/http-error-tGvBmzRt.6d163aa84451.js.br +0 -0
  428. codex/static_root/assets/http-error-tGvBmzRt.6d163aa84451.js.gz +0 -0
  429. codex/static_root/assets/http-error-tGvBmzRt.js +0 -1
  430. codex/static_root/assets/http-error-tGvBmzRt.js.br +0 -0
  431. codex/static_root/assets/http-error-tGvBmzRt.js.gz +0 -0
  432. codex/static_root/assets/main-2hDi4F7b.a08454eeb79f.js +0 -1
  433. codex/static_root/assets/main-2hDi4F7b.a08454eeb79f.js.br +0 -0
  434. codex/static_root/assets/main-2hDi4F7b.a08454eeb79f.js.gz +0 -0
  435. codex/static_root/assets/main-2hDi4F7b.js +0 -1
  436. codex/static_root/assets/main-2hDi4F7b.js.br +0 -0
  437. codex/static_root/assets/main-2hDi4F7b.js.gz +0 -0
  438. codex/static_root/assets/metadata-dialog-LCLm-ZqL.26f9e71ba429.js +0 -1
  439. codex/static_root/assets/metadata-dialog-LCLm-ZqL.26f9e71ba429.js.br +0 -0
  440. codex/static_root/assets/metadata-dialog-LCLm-ZqL.26f9e71ba429.js.gz +0 -0
  441. codex/static_root/assets/metadata-dialog-LCLm-ZqL.js +0 -1
  442. codex/static_root/assets/metadata-dialog-LCLm-ZqL.js.br +0 -0
  443. codex/static_root/assets/metadata-dialog-LCLm-ZqL.js.gz +0 -0
  444. codex/static_root/assets/metadata-dialog-h6Ksq8nL.042fed116504.css.br +0 -0
  445. codex/static_root/assets/metadata-dialog-h6Ksq8nL.042fed116504.css.gz +0 -0
  446. codex/static_root/assets/metadata-dialog-h6Ksq8nL.css.br +0 -0
  447. codex/static_root/assets/metadata-dialog-h6Ksq8nL.css.gz +0 -0
  448. codex/static_root/assets/page-pdf-8DCW311Z.58ff7f64f5c7.js.br +0 -0
  449. codex/static_root/assets/page-pdf-8DCW311Z.58ff7f64f5c7.js.gz +0 -0
  450. codex/static_root/assets/page-pdf-8DCW311Z.js.br +0 -0
  451. codex/static_root/assets/page-pdf-8DCW311Z.js.gz +0 -0
  452. codex/static_root/assets/reader-YZw9-gq4.c6e5ac51f5b9.js +0 -7
  453. codex/static_root/assets/reader-YZw9-gq4.c6e5ac51f5b9.js.br +0 -0
  454. codex/static_root/assets/reader-YZw9-gq4.c6e5ac51f5b9.js.gz +0 -0
  455. codex/static_root/assets/reader-YZw9-gq4.js +0 -7
  456. codex/static_root/assets/reader-YZw9-gq4.js.br +0 -0
  457. codex/static_root/assets/reader-YZw9-gq4.js.gz +0 -0
  458. {codex-1.5.0rc1.dist-info → codex-1.5.0rc2.dist-info}/LICENSE +0 -0
  459. {codex-1.5.0rc1.dist-info → codex-1.5.0rc2.dist-info}/WHEEL +0 -0
  460. {codex-1.5.0rc1.dist-info → codex-1.5.0rc2.dist-info}/entry_points.txt +0 -0
codex/views/cover.py CHANGED
@@ -20,7 +20,7 @@ class WEBPRenderer(BaseRenderer):
20
20
  """Render WEBP images."""
21
21
 
22
22
  media_type = "image/webp"
23
- format = "webp" # noqa A003
23
+ format = "webp"
24
24
  charset = None
25
25
  render_style = "binary"
26
26
 
codex/views/opds/const.py CHANGED
@@ -4,7 +4,6 @@ from collections.abc import Mapping
4
4
  from types import MappingProxyType
5
5
 
6
6
  BLANK_TITLE = "Unknown"
7
- FALSY = {"", "false", "0"}
8
7
  AUTHOR_ROLES = {"Writer"}
9
8
 
10
9
 
@@ -12,11 +12,8 @@ from codex.serializers.opds.v1 import (
12
12
  OPDS1TemplateSerializer,
13
13
  )
14
14
  from codex.views.browser.browser import BrowserView
15
- from codex.views.opds.const import (
16
- BLANK_TITLE,
17
- FALSY,
18
- MimeType,
19
- )
15
+ from codex.views.const import FALSY
16
+ from codex.views.opds.const import BLANK_TITLE, MimeType
20
17
  from codex.views.opds.v1.entry.data import OPDS1EntryData
21
18
  from codex.views.opds.v1.entry.entry import OPDS1Entry
22
19
  from codex.views.opds.v1.links import (
@@ -10,7 +10,8 @@ from codex.logger.logging import get_logger
10
10
  from codex.models import AdminFlag
11
11
  from codex.serializers.opds.v2 import OPDS2FeedSerializer
12
12
  from codex.views.browser.browser import BrowserView
13
- from codex.views.opds.const import BLANK_TITLE, FALSY
13
+ from codex.views.const import FALSY
14
+ from codex.views.opds.const import BLANK_TITLE
14
15
  from codex.views.opds.v2.const import (
15
16
  FACETS,
16
17
  FACETS_SECTION_DATA,
@@ -6,7 +6,8 @@ from urllib.parse import parse_qsl, urlparse
6
6
  from django.urls import reverse
7
7
 
8
8
  from codex.views.browser.browser import BrowserView
9
- from codex.views.opds.const import FALSY, MimeType, Rel
9
+ from codex.views.const import FALSY
10
+ from codex.views.opds.const import MimeType, Rel
10
11
  from codex.views.opds.util import update_href_query_params
11
12
 
12
13
 
@@ -97,7 +98,7 @@ class LinksMixin(BrowserView):
97
98
  def _normalize_query_params(qps_dict):
98
99
  if qps_dict.get("orderBy") == "sort_name":
99
100
  qps_dict.pop("orderBy")
100
- if qps_dict.get("orderReverse") == FALSY:
101
+ if qps_dict.get("orderReverse", "").lower() in FALSY:
101
102
  qps_dict.pop("orderReverse")
102
103
  return frozenset(qps_dict.items())
103
104
 
@@ -10,10 +10,10 @@ from rest_framework.negotiation import BaseContentNegotiation
10
10
  from codex.logger.logging import get_logger
11
11
  from codex.models import Comic
12
12
  from codex.views.bookmark import BookmarkBaseView
13
+ from codex.views.const import FALSY
13
14
 
14
15
  LOG = get_logger(__name__)
15
16
  PDF_MIME_TYPE = "application/pdf"
16
- FALSY = {"", "false", "0", False}
17
17
 
18
18
 
19
19
  class IgnoreClientContentNegotiation(BaseContentNegotiation):
@@ -61,7 +61,7 @@ class ReaderPageView(BookmarkBaseView):
61
61
  pk = self.kwargs.get("pk")
62
62
  comic = Comic.objects.filter(group_acl_filter).only("path").get(pk=pk)
63
63
  page = self.kwargs.get("page")
64
- to_pixmap = self.request.GET.get("pixmap") not in FALSY
64
+ to_pixmap = self.request.GET.get("pixmap", "").lower() not in FALSY
65
65
  if comic.file_type == Comic.FileType.PDF.value and not to_pixmap:
66
66
  content_type = PDF_MIME_TYPE
67
67
  else:
codex/views/template.py CHANGED
@@ -9,7 +9,7 @@ class TemplateXMLRenderer(TemplateHTMLRenderer):
9
9
  """Template rendeerer for xml."""
10
10
 
11
11
  media_type = "text/xml"
12
- format = "xml" # noqa: A003
12
+ format = "xml"
13
13
 
14
14
 
15
15
  class SimpleAPIView(APIView):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codex
3
- Version: 1.5.0rc1
3
+ Version: 1.5.0rc2
4
4
  Summary: A comic archive web server.
5
5
  Home-page: https://github.com/ajslater/codex
6
6
  License: GPL-3.0-only
@@ -28,7 +28,7 @@ Requires-Dist: aioprocessing (>=2.0.1,<3.0.0)
28
28
  Requires-Dist: ansicolors (>=1.1,<2.0)
29
29
  Requires-Dist: case-converter (>=1.1.0,<2.0.0)
30
30
  Requires-Dist: channels (>=4.0.0,<5.0.0)
31
- Requires-Dist: comicbox[pdf] (>=1.0.0rc6,<2.0.0)
31
+ Requires-Dist: comicbox[pdf] (>=1.0.0,<2.0.0)
32
32
  Requires-Dist: django (>=5.0.1,<6.0.0)
33
33
  Requires-Dist: django-cors-headers (>=4.0,<5.0)
34
34
  Requires-Dist: django-rest-registration (>=0.8.0,<0.9.0)
@@ -72,7 +72,7 @@ border-radius: 128px;
72
72
  - Filter and sort on all comic metadata and unread status per user.
73
73
  - Browse a tree of publishers, imprints, series, volumes, or your own folder
74
74
  hierarchy.
75
- - Read comics in a variety of aspect ratios that fit your screen.
75
+ - Read comics in a variety of aspect ratios and directions that fit your screen.
76
76
  - Per user bookmarking. Per browser bookmarks even before you make an account.
77
77
  - Watches the filesystem and automatically imports new or changed comics.
78
78
  - Private Libraries accessible only to certain groups of users.
@@ -127,21 +127,10 @@ brew install jpeg libffi libyaml libzip openssl python unrar webp
127
127
 
128
128
  ###### <a href="#debian">Debian</a>
129
129
 
130
- Like Ubuntu, Mint, MX and others.
130
+ ...and Ubuntu, Mint, MX and others.
131
131
 
132
132
  ```sh
133
- apt install build-essential libffi-dev libjpeg-dev libssl-dev libwebp7 python3-pip zlib1g-dev
134
- ```
135
-
136
- older releases may use the `libweb6` package instead.
137
-
138
- ###### Debian on ARM
139
-
140
- The python cryptography wheel needs compiling on rare architectures. Install the
141
- Rust compiler.
142
-
143
- ```sh
144
- apt install cargo
133
+ apt install build-essential libimagequant0 libjpeg62-turbo libopenjp2-7 libssl3 libyaml-0-2 libtiff6 libwebp7 python3-dev python3-pip mupdf unrar zlib1g
145
134
  ```
146
135
 
147
136
  ###### Alpine
@@ -150,25 +139,25 @@ apt install cargo
150
139
  apk add bsd-compat-headers build-base jpeg-dev libffi-dev libwebp openssl-dev yaml-dev zlib-dev
151
140
  ```
152
141
 
153
- ##### Install unrar Runtime Dependency on Linux
142
+ ##### Install unrar Runtime Dependency on non-debian Linux
154
143
 
155
- Codex requires unrar to read cbr formatted comic archives. Unrar is often not
144
+ Codex requires unrar to read CBR formatted comic archives. Unrar is often not
156
145
  packaged for Linux, but here are some instructions:
157
146
  [How to install unrar in Linux](https://www.unixtutorial.org/how-to-install-unrar-in-linux/)
158
147
 
159
- Unrar as packaged for Alpine Linux v3.14 seems to work on Alpine v3.15
148
+ Unrar as packaged for Alpine Linux v3.14 seems to work on Alpine v3.15+
160
149
 
161
150
  #### Windows
162
151
 
163
152
  Windows users should use Docker to run Codex until this documentation section is
164
153
  complete.
165
154
 
166
- Codex can _probably_ Windows Linux Subsystem but I haven't done personally
155
+ Codex can _probably_ run on the Windows Linux Subsystem but I haven't personally
167
156
  tested it yet. Try following the instructions for [Debian](#debian) above. There
168
157
  may be outstanding platform related bugs.
169
158
 
170
- Contributions to this documentation accepted on
171
- [the outstanding issue](https://github.com/ajslater/codex/issues/76) or discord.
159
+ Contributions to the Windows documentation will be gratefully accepted on
160
+ [the outstanding issue](https://github.com/ajslater/codex/issues/76) or Discord.
172
161
 
173
162
  #### Install Codex with pip
174
163
 
@@ -248,6 +237,11 @@ A library with _any_ groups is accessible only to users who are in those groups.
248
237
  Use the Groups admin panel to create groups and the Users admin panel to add and
249
238
  remove users to groups.
250
239
 
240
+ #### Include and Exclude Groups
241
+
242
+ Codex can make groups for libraries that exclude groups of users or exclude
243
+ everyone and include only certain groups of users.
244
+
251
245
  ### PDFs
252
246
 
253
247
  Codex only reads PDF metadata from the filename. If you decide to include PDFs
@@ -282,9 +276,11 @@ index, a Django cache and comic book cover thumbnails.
282
276
 
283
277
  ### Environment Variables
284
278
 
279
+ ### Codex
280
+
285
281
  - `LOGLEVEL` will change how verbose codex's logging is. Valid values are
286
282
  `ERROR`, `WARNING`, `INFO`, `DEBUG`. The default is `INFO`.
287
- - `TIMEZONE` or `TZ` will explicitly the timezone in long format (e.g.
283
+ - `TIMEZONE` or `TZ` will explicitly set the timezone in long format (e.g.
288
284
  `"America/Los Angeles"`). This is useful inside Docker because codex cannot
289
285
  automatically detect the host machine's timezone.
290
286
  - `CODEX_CONFIG_DIR` will set the path to codex config directory. Defaults to
@@ -298,6 +294,12 @@ index, a Django cache and comic book cover thumbnails.
298
294
  - `CODEX_LOG_TO_FILE=0` will not log to files.
299
295
  - `CODEX_LOG_TO_CONSOLE=0` will not log to the console.
300
296
 
297
+ #### Comicbox
298
+
299
+ - `DEBUG_TRANSFORM` will show verbose information about how the comicbox library
300
+ reads all archive metadata sources and transforms it into a the comicbox
301
+ schema.
302
+
301
303
  ### Reverse Proxy
302
304
 
303
305
  [nginx](https://nginx.org/) is often used as a TLS terminator and subpath proxy.
@@ -346,11 +348,11 @@ Codex can run with as little as 1GB available RAM. Large batch jobs –like
346
348
  importing and indexing tens of thousands of comics at once– will run faster the
347
349
  more memory is available to Codex. The biggest gains in speed happen when you
348
350
  increase memory up to about 6GB. Codex batch jobs do get faster the more memory
349
- you give it above 6GB, but there are diminishing returns.
351
+ it has above 6GB, but with diminishing returns.
350
352
 
351
- If you run Codex in an admin restricted memory environment you might want to
352
- temporarily give codex a lot of memory to run a very large batch job and then
353
- restrict it for normal operation.
353
+ If you must run Codex in an admin restricted memory environment you might want
354
+ to temporarily give Codex a lot of memory to run a very large import job and
355
+ then restrict it for normal operation.
354
356
 
355
357
  ## <a name="usage">📖 Usage</a>
356
358