django-handyhelpers 0.3.20__py3-none-any.whl → 0.3.35__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (571) hide show
  1. {django_handyhelpers-0.3.20.dist-info → django_handyhelpers-0.3.35.dist-info}/METADATA +16 -6
  2. {django_handyhelpers-0.3.20.dist-info → django_handyhelpers-0.3.35.dist-info}/RECORD +562 -75
  3. {django_handyhelpers-0.3.20.dist-info → django_handyhelpers-0.3.35.dist-info}/WHEEL +1 -1
  4. handyhelpers/__init__.py +6 -6
  5. handyhelpers/forms.py +9 -1
  6. handyhelpers/mixins/form_mixins.py +61 -0
  7. handyhelpers/mixins/model_mixins.py +21 -0
  8. handyhelpers/mixins/serializer_mixins.py +35 -0
  9. handyhelpers/mixins/view_mixins.py +5 -2
  10. handyhelpers/serializers.py +23 -3
  11. handyhelpers/static/handyhelpers/css/table_sortable.css +17 -0
  12. handyhelpers/static/handyhelpers/js/sidebar.js +8 -4
  13. handyhelpers/static/handyhelpers/js/table_sortable.js +119 -0
  14. handyhelpers/static/node_modules/.bin/acorn +4 -0
  15. handyhelpers/static/node_modules/.bin/css-b64-images +13 -0
  16. handyhelpers/static/node_modules/.bin/esbuild +0 -0
  17. handyhelpers/static/node_modules/.bin/html-minifier-terser +308 -0
  18. handyhelpers/static/node_modules/.bin/minify +98 -0
  19. handyhelpers/static/node_modules/.bin/terser +21 -0
  20. handyhelpers/static/node_modules/.bin/uglifyjs +624 -0
  21. handyhelpers/static/node_modules/.package-lock.json +750 -0
  22. handyhelpers/static/node_modules/@esbuild/linux-x64/README.md +3 -0
  23. handyhelpers/static/node_modules/@esbuild/linux-x64/bin/esbuild +0 -0
  24. handyhelpers/static/node_modules/@esbuild/linux-x64/package.json +20 -0
  25. handyhelpers/static/node_modules/@jridgewell/gen-mapping/LICENSE +19 -0
  26. handyhelpers/static/node_modules/@jridgewell/gen-mapping/README.md +227 -0
  27. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs +230 -0
  28. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map +1 -0
  29. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js +246 -0
  30. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map +1 -0
  31. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts +88 -0
  32. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts +12 -0
  33. handyhelpers/static/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts +36 -0
  34. handyhelpers/static/node_modules/@jridgewell/gen-mapping/package.json +76 -0
  35. handyhelpers/static/node_modules/@jridgewell/resolve-uri/LICENSE +19 -0
  36. handyhelpers/static/node_modules/@jridgewell/resolve-uri/README.md +40 -0
  37. handyhelpers/static/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs +232 -0
  38. handyhelpers/static/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map +1 -0
  39. handyhelpers/static/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js +240 -0
  40. handyhelpers/static/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map +1 -0
  41. handyhelpers/static/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts +4 -0
  42. handyhelpers/static/node_modules/@jridgewell/resolve-uri/package.json +69 -0
  43. handyhelpers/static/node_modules/@jridgewell/set-array/LICENSE +19 -0
  44. handyhelpers/static/node_modules/@jridgewell/set-array/README.md +37 -0
  45. handyhelpers/static/node_modules/@jridgewell/set-array/dist/set-array.mjs +69 -0
  46. handyhelpers/static/node_modules/@jridgewell/set-array/dist/set-array.mjs.map +1 -0
  47. handyhelpers/static/node_modules/@jridgewell/set-array/dist/set-array.umd.js +83 -0
  48. handyhelpers/static/node_modules/@jridgewell/set-array/dist/set-array.umd.js.map +1 -0
  49. handyhelpers/static/node_modules/@jridgewell/set-array/dist/types/set-array.d.ts +32 -0
  50. handyhelpers/static/node_modules/@jridgewell/set-array/package.json +65 -0
  51. handyhelpers/static/node_modules/@jridgewell/source-map/LICENSE +19 -0
  52. handyhelpers/static/node_modules/@jridgewell/source-map/README.md +184 -0
  53. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.cjs +95 -0
  54. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.cjs.map +1 -0
  55. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.mjs +90 -0
  56. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.mjs.map +1 -0
  57. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.umd.js +1242 -0
  58. handyhelpers/static/node_modules/@jridgewell/source-map/dist/source-map.umd.js.map +1 -0
  59. handyhelpers/static/node_modules/@jridgewell/source-map/dist/types/source-map.d.ts +35 -0
  60. handyhelpers/static/node_modules/@jridgewell/source-map/package.json +71 -0
  61. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/LICENSE +21 -0
  62. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/README.md +264 -0
  63. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs +424 -0
  64. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map +1 -0
  65. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +439 -0
  66. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map +1 -0
  67. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts +49 -0
  68. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts +8 -0
  69. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts +15 -0
  70. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts +6 -0
  71. handyhelpers/static/node_modules/@jridgewell/sourcemap-codec/package.json +75 -0
  72. handyhelpers/static/node_modules/@jridgewell/trace-mapping/LICENSE +19 -0
  73. handyhelpers/static/node_modules/@jridgewell/trace-mapping/README.md +257 -0
  74. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs +580 -0
  75. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map +1 -0
  76. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js +600 -0
  77. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map +1 -0
  78. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts +8 -0
  79. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts +32 -0
  80. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts +7 -0
  81. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts +1 -0
  82. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts +2 -0
  83. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts +16 -0
  84. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts +4 -0
  85. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts +79 -0
  86. handyhelpers/static/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts +99 -0
  87. handyhelpers/static/node_modules/@jridgewell/trace-mapping/package.json +77 -0
  88. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/enums.js +1 -1
  89. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper-base.js +12 -170
  90. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper-base.js.map +1 -1
  91. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper-lite.js +14 -184
  92. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper-lite.js.map +1 -1
  93. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper.js +14 -197
  94. handyhelpers/static/node_modules/@popperjs/core/dist/cjs/popper.js.map +1 -1
  95. handyhelpers/static/node_modules/@popperjs/core/dist/esm/createPopper.js +6 -66
  96. handyhelpers/static/node_modules/@popperjs/core/dist/esm/modifiers/arrow.js +1 -12
  97. handyhelpers/static/node_modules/@popperjs/core/dist/esm/modifiers/computeStyles.js +2 -14
  98. handyhelpers/static/node_modules/@popperjs/core/dist/esm/utils/computeAutoPlacement.js +0 -4
  99. handyhelpers/static/node_modules/@popperjs/core/dist/esm/utils/userAgent.js +1 -1
  100. handyhelpers/static/node_modules/@popperjs/core/dist/umd/enums.js +1 -1
  101. handyhelpers/static/node_modules/@popperjs/core/dist/umd/enums.min.js +1 -1
  102. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-base.js +12 -170
  103. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-base.js.map +1 -1
  104. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-base.min.js +2 -2
  105. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-base.min.js.map +1 -1
  106. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-lite.js +14 -184
  107. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-lite.js.map +1 -1
  108. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-lite.min.js +2 -2
  109. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper-lite.min.js.map +1 -1
  110. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper.js +14 -197
  111. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper.js.map +1 -1
  112. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper.min.js +2 -2
  113. handyhelpers/static/node_modules/@popperjs/core/dist/umd/popper.min.js.map +1 -1
  114. handyhelpers/static/node_modules/@popperjs/core/lib/createPopper.js +6 -66
  115. handyhelpers/static/node_modules/@popperjs/core/lib/createPopper.js.flow +2 -80
  116. handyhelpers/static/node_modules/@popperjs/core/lib/modifiers/arrow.js +1 -12
  117. handyhelpers/static/node_modules/@popperjs/core/lib/modifiers/arrow.js.flow +0 -22
  118. handyhelpers/static/node_modules/@popperjs/core/lib/modifiers/computeStyles.js +2 -14
  119. handyhelpers/static/node_modules/@popperjs/core/lib/modifiers/computeStyles.js.flow +3 -33
  120. handyhelpers/static/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js +0 -4
  121. handyhelpers/static/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js.flow +0 -12
  122. handyhelpers/static/node_modules/@popperjs/core/lib/utils/userAgent.js +1 -1
  123. handyhelpers/static/node_modules/@popperjs/core/lib/utils/userAgent.js.flow +1 -1
  124. handyhelpers/static/node_modules/@popperjs/core/package.json +1 -1
  125. handyhelpers/static/node_modules/@putout/minify/LICENSE +21 -0
  126. handyhelpers/static/node_modules/@putout/minify/README.md +110 -0
  127. handyhelpers/static/node_modules/@putout/minify/bundle/minify.min.js +52 -0
  128. handyhelpers/static/node_modules/@putout/minify/package.json +112 -0
  129. handyhelpers/static/node_modules/@swc/core/Visitor.d.ts +218 -0
  130. handyhelpers/static/node_modules/@swc/core/Visitor.js +1407 -0
  131. handyhelpers/static/node_modules/@swc/core/binding.d.ts +56 -0
  132. handyhelpers/static/node_modules/@swc/core/binding.js +351 -0
  133. handyhelpers/static/node_modules/@swc/core/index.d.ts +118 -0
  134. handyhelpers/static/node_modules/@swc/core/index.js +439 -0
  135. handyhelpers/static/node_modules/@swc/core/package.json +114 -0
  136. handyhelpers/static/node_modules/@swc/core/postinstall.js +148 -0
  137. handyhelpers/static/node_modules/@swc/core/spack.d.ts +51 -0
  138. handyhelpers/static/node_modules/@swc/core/spack.js +87 -0
  139. handyhelpers/static/node_modules/@swc/core/util.d.ts +1 -0
  140. handyhelpers/static/node_modules/@swc/core/util.js +104 -0
  141. handyhelpers/static/node_modules/@swc/core-linux-x64-gnu/README.md +3 -0
  142. handyhelpers/static/node_modules/@swc/core-linux-x64-gnu/package.json +45 -0
  143. handyhelpers/static/node_modules/@swc/core-linux-x64-gnu/swc.linux-x64-gnu.node +0 -0
  144. handyhelpers/static/node_modules/@swc/counter/CHANGELOG.md +7 -0
  145. handyhelpers/static/node_modules/@swc/counter/README.md +7 -0
  146. handyhelpers/static/node_modules/@swc/counter/index.js +1 -0
  147. handyhelpers/static/node_modules/@swc/counter/package.json +27 -0
  148. handyhelpers/static/node_modules/@swc/types/LICENSE +201 -0
  149. handyhelpers/static/node_modules/@swc/types/README.md +4 -0
  150. handyhelpers/static/node_modules/@swc/types/assumptions.d.ts +92 -0
  151. handyhelpers/static/node_modules/@swc/types/assumptions.js +2 -0
  152. handyhelpers/static/node_modules/@swc/types/index.d.ts +1977 -0
  153. handyhelpers/static/node_modules/@swc/types/index.js +2 -0
  154. handyhelpers/static/node_modules/@swc/types/package.json +39 -0
  155. handyhelpers/static/node_modules/acorn/CHANGELOG.md +928 -0
  156. handyhelpers/static/node_modules/acorn/LICENSE +21 -0
  157. handyhelpers/static/node_modules/acorn/README.md +282 -0
  158. handyhelpers/static/node_modules/acorn/bin/acorn +4 -0
  159. handyhelpers/static/node_modules/acorn/dist/acorn.d.mts +866 -0
  160. handyhelpers/static/node_modules/acorn/dist/acorn.d.ts +866 -0
  161. handyhelpers/static/node_modules/acorn/dist/acorn.js +6174 -0
  162. handyhelpers/static/node_modules/acorn/dist/acorn.mjs +6145 -0
  163. handyhelpers/static/node_modules/acorn/dist/bin.js +90 -0
  164. handyhelpers/static/node_modules/acorn/package.json +50 -0
  165. handyhelpers/static/node_modules/buffer-from/LICENSE +21 -0
  166. handyhelpers/static/node_modules/buffer-from/index.js +72 -0
  167. handyhelpers/static/node_modules/buffer-from/package.json +19 -0
  168. handyhelpers/static/node_modules/buffer-from/readme.md +69 -0
  169. handyhelpers/static/node_modules/camel-case/LICENSE +21 -0
  170. handyhelpers/static/node_modules/camel-case/README.md +47 -0
  171. handyhelpers/static/node_modules/camel-case/dist/index.d.ts +5 -0
  172. handyhelpers/static/node_modules/camel-case/dist/index.js +23 -0
  173. handyhelpers/static/node_modules/camel-case/dist/index.js.map +1 -0
  174. handyhelpers/static/node_modules/camel-case/dist/index.spec.d.ts +1 -0
  175. handyhelpers/static/node_modules/camel-case/dist/index.spec.js +26 -0
  176. handyhelpers/static/node_modules/camel-case/dist/index.spec.js.map +1 -0
  177. handyhelpers/static/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
  178. handyhelpers/static/node_modules/camel-case/dist.es2015/index.js +17 -0
  179. handyhelpers/static/node_modules/camel-case/dist.es2015/index.js.map +1 -0
  180. handyhelpers/static/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
  181. handyhelpers/static/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
  182. handyhelpers/static/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
  183. handyhelpers/static/node_modules/camel-case/package.json +89 -0
  184. handyhelpers/static/node_modules/clean-css/History.md +1504 -0
  185. handyhelpers/static/node_modules/clean-css/LICENSE +19 -0
  186. handyhelpers/static/node_modules/clean-css/README.md +987 -0
  187. handyhelpers/static/node_modules/clean-css/index.js +1 -0
  188. handyhelpers/static/node_modules/clean-css/package.json +48 -0
  189. handyhelpers/static/node_modules/commander/LICENSE +22 -0
  190. handyhelpers/static/node_modules/commander/Readme.md +1134 -0
  191. handyhelpers/static/node_modules/commander/esm.mjs +16 -0
  192. handyhelpers/static/node_modules/commander/index.js +27 -0
  193. handyhelpers/static/node_modules/commander/package-support.json +16 -0
  194. handyhelpers/static/node_modules/commander/package.json +80 -0
  195. handyhelpers/static/node_modules/commander/typings/index.d.ts +889 -0
  196. handyhelpers/static/node_modules/css-b64-images/.npmignore +15 -0
  197. handyhelpers/static/node_modules/css-b64-images/.travis.yml +5 -0
  198. handyhelpers/static/node_modules/css-b64-images/README.md +78 -0
  199. handyhelpers/static/node_modules/css-b64-images/bin/css-b64-images +13 -0
  200. handyhelpers/static/node_modules/css-b64-images/draft.png +0 -0
  201. handyhelpers/static/node_modules/css-b64-images/draft.xcf +0 -0
  202. handyhelpers/static/node_modules/css-b64-images/package.json +30 -0
  203. handyhelpers/static/node_modules/css-b64-images/test/css-b64-images-test.js +38 -0
  204. handyhelpers/static/node_modules/css-b64-images/test/fixture/css/style.css +52 -0
  205. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/callunasansregular-webfont.eot +0 -0
  206. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/callunasansregular-webfont.svg +248 -0
  207. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/callunasansregular-webfont.ttf +0 -0
  208. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/callunasansregular-webfont.woff +0 -0
  209. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/maven_pro_medium-webfont.eot +0 -0
  210. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/maven_pro_medium-webfont.svg +245 -0
  211. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/maven_pro_medium-webfont.ttf +0 -0
  212. handyhelpers/static/node_modules/css-b64-images/test/fixture/fonts/maven_pro_medium-webfont.woff +0 -0
  213. handyhelpers/static/node_modules/css-b64-images/test/fixture/img/background-pattern.gif +0 -0
  214. handyhelpers/static/node_modules/css-b64-images/test/fixture/img/dots.svg +6 -0
  215. handyhelpers/static/node_modules/css-b64-images/test/fixture/img/mixit-banner.png +0 -0
  216. handyhelpers/static/node_modules/debug/LICENSE +20 -0
  217. handyhelpers/static/node_modules/debug/README.md +481 -0
  218. handyhelpers/static/node_modules/debug/package.json +65 -0
  219. handyhelpers/static/node_modules/debug/src/browser.js +272 -0
  220. handyhelpers/static/node_modules/debug/src/common.js +292 -0
  221. handyhelpers/static/node_modules/debug/src/index.js +10 -0
  222. handyhelpers/static/node_modules/debug/src/node.js +263 -0
  223. handyhelpers/static/node_modules/dot-case/LICENSE +21 -0
  224. handyhelpers/static/node_modules/dot-case/README.md +37 -0
  225. handyhelpers/static/node_modules/dot-case/dist/index.d.ts +3 -0
  226. handyhelpers/static/node_modules/dot-case/dist/index.js +11 -0
  227. handyhelpers/static/node_modules/dot-case/dist/index.js.map +1 -0
  228. handyhelpers/static/node_modules/dot-case/dist/index.spec.d.ts +1 -0
  229. handyhelpers/static/node_modules/dot-case/dist/index.spec.js +26 -0
  230. handyhelpers/static/node_modules/dot-case/dist/index.spec.js.map +1 -0
  231. handyhelpers/static/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
  232. handyhelpers/static/node_modules/dot-case/dist.es2015/index.js +7 -0
  233. handyhelpers/static/node_modules/dot-case/dist.es2015/index.js.map +1 -0
  234. handyhelpers/static/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
  235. handyhelpers/static/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
  236. handyhelpers/static/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
  237. handyhelpers/static/node_modules/dot-case/package.json +89 -0
  238. handyhelpers/static/node_modules/entities/LICENSE +11 -0
  239. handyhelpers/static/node_modules/entities/package.json +90 -0
  240. handyhelpers/static/node_modules/entities/readme.md +122 -0
  241. handyhelpers/static/node_modules/esbuild/LICENSE.md +21 -0
  242. handyhelpers/static/node_modules/esbuild/README.md +3 -0
  243. handyhelpers/static/node_modules/esbuild/bin/esbuild +0 -0
  244. handyhelpers/static/node_modules/esbuild/install.js +286 -0
  245. handyhelpers/static/node_modules/esbuild/package.json +47 -0
  246. handyhelpers/static/node_modules/find-up/index.d.ts +247 -0
  247. handyhelpers/static/node_modules/find-up/index.js +107 -0
  248. handyhelpers/static/node_modules/find-up/license +9 -0
  249. handyhelpers/static/node_modules/find-up/package.json +61 -0
  250. handyhelpers/static/node_modules/find-up/readme.md +160 -0
  251. handyhelpers/static/node_modules/fun-effects/LICENSE +674 -0
  252. handyhelpers/static/node_modules/fun-effects/README.md +10 -0
  253. handyhelpers/static/node_modules/fun-effects/dist/css/background_icons.min.css +1 -0
  254. handyhelpers/static/node_modules/fun-effects/dist/css/blur_group.min.css +1 -0
  255. handyhelpers/static/node_modules/fun-effects/dist/css/fades.min.css +1 -0
  256. handyhelpers/static/node_modules/fun-effects/dist/css/marquee.min.css +1 -0
  257. handyhelpers/static/node_modules/fun-effects/dist/css/scroller.min.css +1 -0
  258. handyhelpers/static/node_modules/fun-effects/dist/index.js +15 -0
  259. handyhelpers/static/node_modules/fun-effects/dist/js/background_icons.min.js +1 -0
  260. handyhelpers/static/node_modules/fun-effects/dist/js/marquee.min.js +1 -0
  261. handyhelpers/static/node_modules/fun-effects/dist/js/scroller.min.js +1 -0
  262. handyhelpers/static/node_modules/fun-effects/package.json +39 -0
  263. handyhelpers/static/node_modules/fun-effects/src/css/background_icons.css +39 -0
  264. handyhelpers/static/node_modules/fun-effects/src/css/blur_group.css +22 -0
  265. handyhelpers/static/node_modules/fun-effects/src/css/fades.css +94 -0
  266. handyhelpers/static/node_modules/fun-effects/src/css/marquee.css +45 -0
  267. handyhelpers/static/node_modules/fun-effects/src/css/scroller.css +144 -0
  268. handyhelpers/static/node_modules/fun-effects/src/index.js +15 -0
  269. handyhelpers/static/node_modules/fun-effects/src/js/background_icons.js +101 -0
  270. handyhelpers/static/node_modules/fun-effects/src/js/marquee.js +81 -0
  271. handyhelpers/static/node_modules/fun-effects/src/js/scroller.js +37 -0
  272. handyhelpers/static/node_modules/html-minifier-terser/LICENSE +22 -0
  273. handyhelpers/static/node_modules/html-minifier-terser/README.md +168 -0
  274. handyhelpers/static/node_modules/html-minifier-terser/cli.js +308 -0
  275. handyhelpers/static/node_modules/html-minifier-terser/dist/htmlminifier.cjs +1857 -0
  276. handyhelpers/static/node_modules/html-minifier-terser/dist/htmlminifier.esm.bundle.js +57509 -0
  277. handyhelpers/static/node_modules/html-minifier-terser/dist/htmlminifier.umd.bundle.js +57520 -0
  278. handyhelpers/static/node_modules/html-minifier-terser/dist/htmlminifier.umd.bundle.min.js +9 -0
  279. handyhelpers/static/node_modules/html-minifier-terser/package.json +105 -0
  280. handyhelpers/static/node_modules/html-minifier-terser/src/htmlminifier.js +1366 -0
  281. handyhelpers/static/node_modules/html-minifier-terser/src/htmlparser.js +565 -0
  282. handyhelpers/static/node_modules/html-minifier-terser/src/tokenchain.js +68 -0
  283. handyhelpers/static/node_modules/html-minifier-terser/src/utils.js +11 -0
  284. handyhelpers/static/node_modules/jju/LICENSE +21 -0
  285. handyhelpers/static/node_modules/jju/Makefile +20 -0
  286. handyhelpers/static/node_modules/jju/README.md +249 -0
  287. handyhelpers/static/node_modules/jju/index.js +32 -0
  288. handyhelpers/static/node_modules/jju/package.json +34 -0
  289. handyhelpers/static/node_modules/jju/package.yaml +36 -0
  290. handyhelpers/static/node_modules/locate-path/index.d.ts +92 -0
  291. handyhelpers/static/node_modules/locate-path/index.js +77 -0
  292. handyhelpers/static/node_modules/locate-path/license +9 -0
  293. handyhelpers/static/node_modules/locate-path/package.json +48 -0
  294. handyhelpers/static/node_modules/locate-path/readme.md +123 -0
  295. handyhelpers/static/node_modules/lower-case/LICENSE +21 -0
  296. handyhelpers/static/node_modules/lower-case/README.md +35 -0
  297. handyhelpers/static/node_modules/lower-case/dist/index.d.ts +8 -0
  298. handyhelpers/static/node_modules/lower-case/dist/index.js +53 -0
  299. handyhelpers/static/node_modules/lower-case/dist/index.js.map +1 -0
  300. handyhelpers/static/node_modules/lower-case/dist/index.spec.d.ts +1 -0
  301. handyhelpers/static/node_modules/lower-case/dist/index.spec.js +36 -0
  302. handyhelpers/static/node_modules/lower-case/dist/index.spec.js.map +1 -0
  303. handyhelpers/static/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
  304. handyhelpers/static/node_modules/lower-case/dist.es2015/index.js +48 -0
  305. handyhelpers/static/node_modules/lower-case/dist.es2015/index.js.map +1 -0
  306. handyhelpers/static/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
  307. handyhelpers/static/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
  308. handyhelpers/static/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
  309. handyhelpers/static/node_modules/lower-case/package.json +87 -0
  310. handyhelpers/static/node_modules/minify/ChangeLog +1307 -0
  311. handyhelpers/static/node_modules/minify/LICENSE +22 -0
  312. handyhelpers/static/node_modules/minify/README.md +177 -0
  313. handyhelpers/static/node_modules/minify/bin/minify.js +98 -0
  314. handyhelpers/static/node_modules/minify/deno.json +5 -0
  315. handyhelpers/static/node_modules/minify/help.json +8 -0
  316. handyhelpers/static/node_modules/minify/package.json +65 -0
  317. handyhelpers/static/node_modules/ms/index.js +162 -0
  318. handyhelpers/static/node_modules/ms/license.md +21 -0
  319. handyhelpers/static/node_modules/ms/package.json +38 -0
  320. handyhelpers/static/node_modules/ms/readme.md +59 -0
  321. handyhelpers/static/node_modules/no-case/LICENSE +21 -0
  322. handyhelpers/static/node_modules/no-case/README.md +37 -0
  323. handyhelpers/static/node_modules/no-case/dist/index.d.ts +10 -0
  324. handyhelpers/static/node_modules/no-case/dist/index.js +35 -0
  325. handyhelpers/static/node_modules/no-case/dist/index.js.map +1 -0
  326. handyhelpers/static/node_modules/no-case/dist/index.spec.d.ts +1 -0
  327. handyhelpers/static/node_modules/no-case/dist/index.spec.js +59 -0
  328. handyhelpers/static/node_modules/no-case/dist/index.spec.js.map +1 -0
  329. handyhelpers/static/node_modules/no-case/dist.es2015/index.d.ts +10 -0
  330. handyhelpers/static/node_modules/no-case/dist.es2015/index.js +31 -0
  331. handyhelpers/static/node_modules/no-case/dist.es2015/index.js.map +1 -0
  332. handyhelpers/static/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
  333. handyhelpers/static/node_modules/no-case/dist.es2015/index.spec.js +57 -0
  334. handyhelpers/static/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
  335. handyhelpers/static/node_modules/no-case/package.json +85 -0
  336. handyhelpers/static/node_modules/p-limit/index.d.ts +40 -0
  337. handyhelpers/static/node_modules/p-limit/index.js +68 -0
  338. handyhelpers/static/node_modules/p-limit/license +9 -0
  339. handyhelpers/static/node_modules/p-limit/package.json +54 -0
  340. handyhelpers/static/node_modules/p-limit/readme.md +99 -0
  341. handyhelpers/static/node_modules/p-locate/index.d.ts +49 -0
  342. handyhelpers/static/node_modules/p-locate/index.js +48 -0
  343. handyhelpers/static/node_modules/p-locate/license +9 -0
  344. handyhelpers/static/node_modules/p-locate/package.json +56 -0
  345. handyhelpers/static/node_modules/p-locate/readme.md +91 -0
  346. handyhelpers/static/node_modules/param-case/LICENSE +21 -0
  347. handyhelpers/static/node_modules/param-case/README.md +37 -0
  348. handyhelpers/static/node_modules/param-case/dist/index.d.ts +3 -0
  349. handyhelpers/static/node_modules/param-case/dist/index.js +11 -0
  350. handyhelpers/static/node_modules/param-case/dist/index.js.map +1 -0
  351. handyhelpers/static/node_modules/param-case/dist/index.spec.d.ts +1 -0
  352. handyhelpers/static/node_modules/param-case/dist/index.spec.js +24 -0
  353. handyhelpers/static/node_modules/param-case/dist/index.spec.js.map +1 -0
  354. handyhelpers/static/node_modules/param-case/dist.es2015/index.d.ts +3 -0
  355. handyhelpers/static/node_modules/param-case/dist.es2015/index.js +7 -0
  356. handyhelpers/static/node_modules/param-case/dist.es2015/index.js.map +1 -0
  357. handyhelpers/static/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
  358. handyhelpers/static/node_modules/param-case/dist.es2015/index.spec.js +22 -0
  359. handyhelpers/static/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
  360. handyhelpers/static/node_modules/param-case/package.json +91 -0
  361. handyhelpers/static/node_modules/pascal-case/LICENSE +21 -0
  362. handyhelpers/static/node_modules/pascal-case/README.md +47 -0
  363. handyhelpers/static/node_modules/pascal-case/dist/index.d.ts +5 -0
  364. handyhelpers/static/node_modules/pascal-case/dist/index.js +24 -0
  365. handyhelpers/static/node_modules/pascal-case/dist/index.js.map +1 -0
  366. handyhelpers/static/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
  367. handyhelpers/static/node_modules/pascal-case/dist/index.spec.js +25 -0
  368. handyhelpers/static/node_modules/pascal-case/dist/index.spec.js.map +1 -0
  369. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
  370. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.js +18 -0
  371. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
  372. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
  373. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
  374. handyhelpers/static/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
  375. handyhelpers/static/node_modules/pascal-case/package.json +90 -0
  376. handyhelpers/static/node_modules/path-exists/index.d.ts +31 -0
  377. handyhelpers/static/node_modules/path-exists/index.js +19 -0
  378. handyhelpers/static/node_modules/path-exists/license +9 -0
  379. handyhelpers/static/node_modules/path-exists/package.json +41 -0
  380. handyhelpers/static/node_modules/path-exists/readme.md +52 -0
  381. handyhelpers/static/node_modules/readjson/ChangeLog +110 -0
  382. handyhelpers/static/node_modules/readjson/LICENSE +21 -0
  383. handyhelpers/static/node_modules/readjson/README.md +36 -0
  384. handyhelpers/static/node_modules/readjson/package.json +46 -0
  385. handyhelpers/static/node_modules/relateurl/README.md +159 -0
  386. handyhelpers/static/node_modules/relateurl/license +21 -0
  387. handyhelpers/static/node_modules/relateurl/package.json +46 -0
  388. handyhelpers/static/node_modules/simport/ChangeLog +77 -0
  389. handyhelpers/static/node_modules/simport/LICENSE +21 -0
  390. handyhelpers/static/node_modules/simport/README.md +81 -0
  391. handyhelpers/static/node_modules/simport/fixture/context.js +3 -0
  392. handyhelpers/static/node_modules/simport/fixture/default-frozen-function.mjs +2 -0
  393. handyhelpers/static/node_modules/simport/fixture/default-frozen-object.mjs +2 -0
  394. handyhelpers/static/node_modules/simport/package.json +65 -0
  395. handyhelpers/static/node_modules/simport/simport.js +84 -0
  396. handyhelpers/static/node_modules/simport/simport.mjs +22 -0
  397. handyhelpers/static/node_modules/source-map/CHANGELOG.md +301 -0
  398. handyhelpers/static/node_modules/source-map/LICENSE +28 -0
  399. handyhelpers/static/node_modules/source-map/README.md +742 -0
  400. handyhelpers/static/node_modules/source-map/dist/source-map.debug.js +3234 -0
  401. handyhelpers/static/node_modules/source-map/dist/source-map.js +3233 -0
  402. handyhelpers/static/node_modules/source-map/dist/source-map.min.js +2 -0
  403. handyhelpers/static/node_modules/source-map/dist/source-map.min.js.map +1 -0
  404. handyhelpers/static/node_modules/source-map/package.json +73 -0
  405. handyhelpers/static/node_modules/source-map/source-map.d.ts +98 -0
  406. handyhelpers/static/node_modules/source-map/source-map.js +8 -0
  407. handyhelpers/static/node_modules/source-map-support/LICENSE.md +21 -0
  408. handyhelpers/static/node_modules/source-map-support/README.md +284 -0
  409. handyhelpers/static/node_modules/source-map-support/browser-source-map-support.js +114 -0
  410. handyhelpers/static/node_modules/source-map-support/package.json +31 -0
  411. handyhelpers/static/node_modules/source-map-support/register-hook-require.js +1 -0
  412. handyhelpers/static/node_modules/source-map-support/register.js +1 -0
  413. handyhelpers/static/node_modules/source-map-support/source-map-support.js +625 -0
  414. handyhelpers/static/node_modules/terser/CHANGELOG.md +783 -0
  415. handyhelpers/static/node_modules/terser/LICENSE +27 -0
  416. handyhelpers/static/node_modules/terser/PATRONS.md +15 -0
  417. handyhelpers/static/node_modules/terser/README.md +1421 -0
  418. handyhelpers/static/node_modules/terser/bin/package.json +10 -0
  419. handyhelpers/static/node_modules/terser/bin/terser +21 -0
  420. handyhelpers/static/node_modules/terser/bin/uglifyjs +10 -0
  421. handyhelpers/static/node_modules/terser/dist/.gitkeep +0 -0
  422. handyhelpers/static/node_modules/terser/dist/bundle.min.js +32962 -0
  423. handyhelpers/static/node_modules/terser/dist/package.json +10 -0
  424. handyhelpers/static/node_modules/terser/main.js +27 -0
  425. handyhelpers/static/node_modules/terser/node_modules/commander/CHANGELOG.md +419 -0
  426. handyhelpers/static/node_modules/terser/node_modules/commander/LICENSE +22 -0
  427. handyhelpers/static/node_modules/terser/node_modules/commander/Readme.md +428 -0
  428. handyhelpers/static/node_modules/terser/node_modules/commander/index.js +1224 -0
  429. handyhelpers/static/node_modules/terser/node_modules/commander/package.json +38 -0
  430. handyhelpers/static/node_modules/terser/node_modules/commander/typings/index.d.ts +310 -0
  431. handyhelpers/static/node_modules/terser/package.json +153 -0
  432. handyhelpers/static/node_modules/terser/tools/domprops.js +9026 -0
  433. handyhelpers/static/node_modules/terser/tools/exit.cjs +7 -0
  434. handyhelpers/static/node_modules/terser/tools/props.html +68 -0
  435. handyhelpers/static/node_modules/terser/tools/terser.d.ts +216 -0
  436. handyhelpers/static/node_modules/tippy.js/LICENSE +21 -0
  437. handyhelpers/static/node_modules/tippy.js/README.md +63 -0
  438. handyhelpers/static/node_modules/tippy.js/animations/perspective-extreme.css +1 -0
  439. handyhelpers/static/node_modules/tippy.js/animations/perspective-subtle.css +1 -0
  440. handyhelpers/static/node_modules/tippy.js/animations/perspective.css +1 -0
  441. handyhelpers/static/node_modules/tippy.js/animations/scale-extreme.css +1 -0
  442. handyhelpers/static/node_modules/tippy.js/animations/scale-subtle.css +1 -0
  443. handyhelpers/static/node_modules/tippy.js/animations/scale.css +1 -0
  444. handyhelpers/static/node_modules/tippy.js/animations/shift-away-extreme.css +1 -0
  445. handyhelpers/static/node_modules/tippy.js/animations/shift-away-subtle.css +1 -0
  446. handyhelpers/static/node_modules/tippy.js/animations/shift-away.css +1 -0
  447. handyhelpers/static/node_modules/tippy.js/animations/shift-toward-extreme.css +1 -0
  448. handyhelpers/static/node_modules/tippy.js/animations/shift-toward-subtle.css +1 -0
  449. handyhelpers/static/node_modules/tippy.js/animations/shift-toward.css +1 -0
  450. handyhelpers/static/node_modules/tippy.js/dist/backdrop.css +1 -0
  451. handyhelpers/static/node_modules/tippy.js/dist/border.css +1 -0
  452. handyhelpers/static/node_modules/tippy.js/dist/svg-arrow.css +1 -0
  453. handyhelpers/static/node_modules/tippy.js/dist/tippy-bundle.umd.js +2516 -0
  454. handyhelpers/static/node_modules/tippy.js/dist/tippy-bundle.umd.js.map +1 -0
  455. handyhelpers/static/node_modules/tippy.js/dist/tippy-bundle.umd.min.js +2 -0
  456. handyhelpers/static/node_modules/tippy.js/dist/tippy-bundle.umd.min.js.map +1 -0
  457. handyhelpers/static/node_modules/tippy.js/dist/tippy.cjs.js +2497 -0
  458. handyhelpers/static/node_modules/tippy.js/dist/tippy.cjs.js.map +1 -0
  459. handyhelpers/static/node_modules/tippy.js/dist/tippy.css +1 -0
  460. handyhelpers/static/node_modules/tippy.js/dist/tippy.esm.js +2486 -0
  461. handyhelpers/static/node_modules/tippy.js/dist/tippy.esm.js.map +1 -0
  462. handyhelpers/static/node_modules/tippy.js/dist/tippy.umd.js +2496 -0
  463. handyhelpers/static/node_modules/tippy.js/dist/tippy.umd.js.map +1 -0
  464. handyhelpers/static/node_modules/tippy.js/dist/tippy.umd.min.js +2 -0
  465. handyhelpers/static/node_modules/tippy.js/dist/tippy.umd.min.js.map +1 -0
  466. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.cjs.js +2388 -0
  467. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.cjs.js.map +1 -0
  468. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.esm.js +2377 -0
  469. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.esm.js.map +1 -0
  470. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.umd.js +2382 -0
  471. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.umd.js.map +1 -0
  472. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.umd.min.js +2 -0
  473. handyhelpers/static/node_modules/tippy.js/headless/dist/tippy-headless.umd.min.js.map +1 -0
  474. handyhelpers/static/node_modules/tippy.js/headless/package.json +16 -0
  475. handyhelpers/static/node_modules/tippy.js/index.d.ts +260 -0
  476. handyhelpers/static/node_modules/tippy.js/package.json +157 -0
  477. handyhelpers/static/node_modules/tippy.js/themes/light-border.css +1 -0
  478. handyhelpers/static/node_modules/tippy.js/themes/light.css +1 -0
  479. handyhelpers/static/node_modules/tippy.js/themes/material.css +1 -0
  480. handyhelpers/static/node_modules/tippy.js/themes/translucent.css +1 -0
  481. handyhelpers/static/node_modules/try-catch/ChangeLog +55 -0
  482. handyhelpers/static/node_modules/try-catch/LICENSE +21 -0
  483. handyhelpers/static/node_modules/try-catch/README.md +38 -0
  484. handyhelpers/static/node_modules/try-catch/package.json +34 -0
  485. handyhelpers/static/node_modules/try-to-catch/ChangeLog +64 -0
  486. handyhelpers/static/node_modules/try-to-catch/LICENSE +21 -0
  487. handyhelpers/static/node_modules/try-to-catch/README.md +74 -0
  488. handyhelpers/static/node_modules/try-to-catch/package.json +47 -0
  489. handyhelpers/static/node_modules/tslib/CopyrightNotice.txt +15 -0
  490. handyhelpers/static/node_modules/tslib/LICENSE.txt +12 -0
  491. handyhelpers/static/node_modules/tslib/README.md +164 -0
  492. handyhelpers/static/node_modules/tslib/SECURITY.md +41 -0
  493. handyhelpers/static/node_modules/tslib/modules/index.d.ts +38 -0
  494. handyhelpers/static/node_modules/tslib/modules/index.js +70 -0
  495. handyhelpers/static/node_modules/tslib/modules/package.json +3 -0
  496. handyhelpers/static/node_modules/tslib/package.json +47 -0
  497. handyhelpers/static/node_modules/tslib/tslib.d.ts +460 -0
  498. handyhelpers/static/node_modules/tslib/tslib.es6.html +1 -0
  499. handyhelpers/static/node_modules/tslib/tslib.es6.js +402 -0
  500. handyhelpers/static/node_modules/tslib/tslib.es6.mjs +401 -0
  501. handyhelpers/static/node_modules/tslib/tslib.html +1 -0
  502. handyhelpers/static/node_modules/tslib/tslib.js +484 -0
  503. handyhelpers/static/node_modules/uglify-js/LICENSE +29 -0
  504. handyhelpers/static/node_modules/uglify-js/README.md +1479 -0
  505. handyhelpers/static/node_modules/uglify-js/bin/uglifyjs +624 -0
  506. handyhelpers/static/node_modules/uglify-js/package.json +56 -0
  507. handyhelpers/static/node_modules/uglify-js/tools/domprops.html +456 -0
  508. handyhelpers/static/node_modules/uglify-js/tools/domprops.json +8327 -0
  509. handyhelpers/static/node_modules/uglify-js/tools/exports.js +8 -0
  510. handyhelpers/static/node_modules/uglify-js/tools/node.js +115 -0
  511. handyhelpers/static/node_modules/uglify-js/tools/tty.js +22 -0
  512. handyhelpers/static/node_modules/unicorn-magic/default.js +14 -0
  513. handyhelpers/static/node_modules/unicorn-magic/index.d.ts +29 -0
  514. handyhelpers/static/node_modules/unicorn-magic/license +9 -0
  515. handyhelpers/static/node_modules/unicorn-magic/node.js +7 -0
  516. handyhelpers/static/node_modules/unicorn-magic/package.json +49 -0
  517. handyhelpers/static/node_modules/unicorn-magic/readme.md +25 -0
  518. handyhelpers/static/node_modules/yocto-queue/index.d.ts +61 -0
  519. handyhelpers/static/node_modules/yocto-queue/index.js +78 -0
  520. handyhelpers/static/node_modules/yocto-queue/license +9 -0
  521. handyhelpers/static/node_modules/yocto-queue/package.json +48 -0
  522. handyhelpers/static/node_modules/yocto-queue/readme.md +70 -0
  523. handyhelpers/static/package.json +3 -1
  524. handyhelpers/static/yarn.lock +393 -20
  525. handyhelpers/templates/handyhelpers/generic/bs5/generic_index.html +5 -8
  526. handyhelpers/templates/handyhelpers/handyhelpers_base_bs5.htm +5 -1
  527. handyhelpers/templates/handyhelpers/handyhelpers_with_sidebar.htm +50 -3
  528. handyhelpers/templates/handyhelpers/htmx/bs5/filter_form/generic_modal_swap.htm +48 -0
  529. handyhelpers/templates/handyhelpers/htmx/bs5/form/form_wrapper.htm +48 -0
  530. handyhelpers/templates/handyhelpers/htmx/bs5/form/inline_form.htm +166 -0
  531. handyhelpers/templates/handyhelpers/htmx/bs5/form/inline_form_disabled.htm +125 -0
  532. handyhelpers/templates/handyhelpers/htmx/bs5/generic_modal_swap.htm +2 -3
  533. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/content_title.htm +38 -0
  534. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/controls.htm +21 -0
  535. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/examples/card.htm +17 -0
  536. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/examples/list.htm +11 -0
  537. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/examples/table.htm +21 -0
  538. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/filter_form_modal_swap.htm +48 -0
  539. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/full.html +6 -0
  540. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/wrapper_card.htm +7 -0
  541. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/wrapper_list.htm +7 -0
  542. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/wrapper_minimal.htm +7 -0
  543. handyhelpers/templates/handyhelpers/htmx/bs5/htmx_option_multi_filter_view/wrapper_table.htm +18 -0
  544. handyhelpers/templates/handyhelpers/htmx/bs5/index.htm +34 -0
  545. handyhelpers/templates/handyhelpers/report/annual_stats.html +6 -0
  546. handyhelpers/templates/handyhelpers/report/annual_stats_content.htm +43 -0
  547. handyhelpers/templates/handyhelpers/report/chartjs/annual_progress_chart.htm +1 -1
  548. handyhelpers/templates/handyhelpers/report/chartjs/annual_progress_content.htm +40 -39
  549. handyhelpers/templates/handyhelpers/report/chartjs/annual_stats.html +25 -36
  550. handyhelpers/templates/handyhelpers/report/chartjs/annual_trends_content.htm +35 -34
  551. handyhelpers/templates/handyhelpers/report/chartjs/day_count_chart.htm +1 -1
  552. handyhelpers/templates/handyhelpers/report/chartjs/month_count_chart.htm +1 -1
  553. handyhelpers/templates/handyhelpers/report/chartjs/week_count_chart.htm +1 -1
  554. handyhelpers/templates/handyhelpers/report/chartjs/year_count_chart.htm +1 -1
  555. handyhelpers/templatetags/form_tags.py +47 -0
  556. handyhelpers/templatetags/htmx_tags.py +21 -0
  557. handyhelpers/views/action.py +3 -1
  558. handyhelpers/views/calendar.py +33 -14
  559. handyhelpers/views/htmx.py +396 -4
  560. handyhelpers/views/report.py +12 -5
  561. handyhelpers/management/commands/generate_admin.py +0 -110
  562. handyhelpers/static/node_modules/@popperjs/core/dist/esm/utils/format.js +0 -9
  563. handyhelpers/static/node_modules/@popperjs/core/dist/esm/utils/validateModifiers.js +0 -81
  564. handyhelpers/static/node_modules/@popperjs/core/lib/utils/format.d.ts +0 -1
  565. handyhelpers/static/node_modules/@popperjs/core/lib/utils/format.js +0 -9
  566. handyhelpers/static/node_modules/@popperjs/core/lib/utils/format.js.flow +0 -5
  567. handyhelpers/static/node_modules/@popperjs/core/lib/utils/validateModifiers.d.ts +0 -1
  568. handyhelpers/static/node_modules/@popperjs/core/lib/utils/validateModifiers.js +0 -81
  569. handyhelpers/static/node_modules/@popperjs/core/lib/utils/validateModifiers.js.flow +0 -151
  570. {django_handyhelpers-0.3.20.dist-info → django_handyhelpers-0.3.35.dist-info}/LICENSE +0 -0
  571. {django_handyhelpers-0.3.20.dist-info → django_handyhelpers-0.3.35.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,34 @@
1
+ {% load handyhelper_tags %}
2
+ <section>
3
+ <header class="m-5 animated fadeIn">
4
+ <div class="headline text-center">
5
+ <div class="container">
6
+ <div class="h1 text-primary fw-bold mb-3">{{ title|safe }}</div>
7
+ <div class="h5 text-secondary">{{ subtitle|safe }}</div>
8
+ </div>
9
+ </div>
10
+ </header>
11
+
12
+ <div class="zoom-group-flex-container animated fadeIn" style="animation-delay: .25s;">
13
+
14
+ <!-- unprotected items -->
15
+ {% for item in item_list %}
16
+ <a href="{{ item.url }}" class="card zoom-card zoom-index-card">
17
+ <div class="icon"><i class="{{ item.icon }}"></i></div>
18
+ <div class="title">{{ item.title }}</div>
19
+ <div class="description">{{ item.description }}</div>
20
+ </a>
21
+ {% endfor %}
22
+
23
+ <!-- protected items -->
24
+ {% if request.user|has_group:protected_group_name %}
25
+ {% for item in protected_item_list %}
26
+ <a href="{{ item.url }}" class="card zoom-card zoom-index-card">
27
+ <div class="icon"><i class="{{ item.icon }}"></i></div>
28
+ <div class="title">{{ item.title }}</div>
29
+ <div class="description">{{ item.description }}</div>
30
+ </a>
31
+ {% endfor %}
32
+ {% endif %}
33
+ </div>
34
+ </section>
@@ -0,0 +1,6 @@
1
+ {% extends base_template|default:"handyhelpers/handyhelpers_base.htm" %}
2
+ {% load static %}
3
+
4
+ {% block content %}
5
+ {% include 'handyhelpers/report/annual_stats_content.htm' %}
6
+ {% endblock content %}
@@ -0,0 +1,43 @@
1
+ <header class="mx-5 my-3">
2
+ <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
3
+ <div class="container mb-5">
4
+ <h1 class="text-primary fw-bold">{{ title }}</h1>
5
+ <h3 class="text-secondary">{% if sub_title %}{{ sub_title }}{% endif %} &nbsp; </h3>
6
+ </div>
7
+ </div>
8
+ </header>
9
+
10
+ <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .25s;">
11
+ {% for data in dataset_list %}
12
+ <div class="row m-4">
13
+ <div class="row border-bottom border-secondary ps-0">
14
+ <div class="h3 text-primary fw-bold ps-0">
15
+ <span class="text-primary me-3">{{ data.icon|safe }}</span>{{ data.title }}
16
+ </div>
17
+ </div>
18
+ <div class="row">
19
+ <table>
20
+ <thead class="h6">
21
+ <tr>
22
+ <th class="bg-transparent text-secondary">Total</th>
23
+ <th class="bg-transparent text-secondary">past day</th>
24
+ <th class="bg-transparent text-secondary">past week</th>
25
+ <th class="bg-transparent text-secondary">past month</th>
26
+ <th class="bg-transparent text-secondary">past year</th>
27
+ </tr>
28
+ </thead>
29
+ <tbody>
30
+ <tr class="text-primary h6">
31
+ <td><span class="ms-2"><a href="{{data.url}}">{{ data.total }}</a></span></td>
32
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past day&created_at__gte={{data.day_date|date:'Y-m-d H:i:s' }}">{{ data.day_count }}</a></span></td>
33
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past week&created_at__gte={{data.week_date|date:'Y-m-d H:i:s' }}">{{ data.week_count }}</a></span></td>
34
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past month&created_at__gte={{data.month_date|date:'Y-m-d H:i:s' }}">{{ data.month_count }}</a></span></td>
35
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past year&created_at__gte={{data.year_date|date:'Y-m-d H:i:s' }}">{{ data.year_count }}</a></span></td>
36
+ </tr>
37
+ </tbody>
38
+ </table>
39
+ </div>
40
+ </div>
41
+ <div class="mb-1">&nbsp;</div>
42
+ {% endfor %}
43
+ </div>
@@ -8,7 +8,7 @@
8
8
  labels: {{ month_labels|safe }},
9
9
  year:[{% for ts in month_timestamps %} "{{ ts.year }}", {% endfor %}],
10
10
  month:[{% for ts in month_timestamps %} "{{ ts.month }}", {% endfor %}],
11
- ts:[{% for ts in month_timestamps %} "{{ ts|date:'Y-m-d H:00:00' }}", {% endfor %}],
11
+ ts:[{% for ts in month_timestamps %} "{{ ts|date:'Y-m-d' }}", {% endfor %}],
12
12
  datasets: [
13
13
  {% for data in annual_progress_dataset_list %}
14
14
  {
@@ -1,46 +1,47 @@
1
- <style>
2
- .card-container {
3
- align-content: center;
4
- display: flex;
5
- align-items: center;
6
- justify-content: center;
7
- flex-wrap: wrap;
8
- }
9
- .card {
10
- width: 16rem;
11
- height: 8rem;
12
- }
13
- </style>
1
+ <style>
2
+ .card-container {
3
+ align-content: center;
4
+ display: flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ flex-wrap: wrap;
8
+ }
9
+ .card {
10
+ width: 16rem;
11
+ height: 8rem;
12
+ }
13
+ </style>
14
14
 
15
- <header class="m-5">
16
- <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
17
- <div class="container mb-5">
18
- <h1 class="text-primary fw-bold">{{ title }}</h1>
19
- <h3 class="text-secondary">{% if sub_title %}{{ sub_title }}{% endif %} &nbsp; </h3>
20
- </div>
15
+ <header class="m-5">
16
+ <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
17
+ <div class="container mb-5">
18
+ <h1 class="text-primary fw-bold">{{ title }}</h1>
19
+ <h3 class="text-secondary">{% if sub_title %}{{ sub_title }}{% endif %} &nbsp; </h3>
21
20
  </div>
22
- </header>
21
+ </div>
22
+ </header>
23
23
 
24
- {# current counts of data #}
25
- <div class="card-container mt-5 mb-5 animated fadeIn" style="animation-delay: .25s;">
26
- {% for data in annual_progress_dataset_list %}
27
- <a href="{{ data.list_view|safe }}" class="hvr-grow">
28
- <div class="card shadow text-center vw-75 m-4">
29
- <div class="card-body">
30
- <div class="h1 fw-bold text-primary">{{ data.data|last }}</div>
31
- <div class="h4 fw-bold text-secondary">{{ data.title }}</div>
32
- </div>
24
+ {# current counts of data #}
25
+ <div class="card-container mt-5 mb-5 animated fadeIn" style="animation-delay: .25s;">
26
+ {% for data in annual_progress_dataset_list %}
27
+ <a href="{{ data.list_view|safe }}" class="hvr-grow">
28
+ <div class="card shadow text-center vw-75 m-4">
29
+ <div class="card-body">
30
+ <div class="h1 fw-bold text-primary">{{ data.data|last }}</div>
31
+ <div class="h4 fw-bold text-secondary">{{ data.title }}{{ data.data|last|pluralize:"s" }}</div>
33
32
  </div>
34
- </a>
35
- {% endfor %}
36
- </div>
33
+ </div>
34
+ </a>
35
+ {% endfor %}
36
+ </div>
37
37
 
38
38
 
39
- <div>&nbsp;</div>
40
- {# line graph for year #}
41
- <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .35s;">
42
- <canvas id="annual_progress" width="800" height="250"></canvas>
43
- </div>
39
+ <div>&nbsp;</div>
40
+ {# line graph for year #}
41
+ <div class="container-fluid mt-2 animated fadeIn" style="animation-delay: .35s;">
42
+ <canvas id="annual_progress" width="800" height="250"></canvas>
43
+ </div>
44
+ <div class="container-fluid mb-3 me-3 text-end text-muted" style="font-size: .75rem;">(today)</div>
44
45
 
45
- {% include 'handyhelpers/report/theme_colors.htm' %}
46
- {% include 'handyhelpers/report/chartjs/annual_progress_chart.htm' %}
46
+ {% include 'handyhelpers/report/theme_colors.htm' %}
47
+ {% include 'handyhelpers/report/chartjs/annual_progress_chart.htm' %}
@@ -1,14 +1,6 @@
1
1
  {% extends base_template|default:"handyhelpers/handyhelpers_base.htm" %}
2
2
  {% load static %}
3
3
 
4
- {% block local_head %}
5
- <style>
6
- a:hover {
7
- text-decoration: none;
8
- }
9
- </style>
10
- {% endblock local_head %}
11
-
12
4
  {% block content %}
13
5
  <header class="m-5">
14
6
  <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
@@ -21,36 +13,33 @@
21
13
 
22
14
  <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .25s;">
23
15
  {% for data in dataset_list %}
24
- <div class="row mb-5">
25
- <div class="col-sm-12 col-md-3 col-lg-2 col-xl-1 mb-3">
26
- <span class="fa-4x text-primary">{{ data.icon|safe }}</span><br/>
27
- </div>
28
- <div class="col-sm-12 col-md-9 col-lg-10 col-xl-11 pl-4">
29
- <div class="row border-bottom border-secondary">
30
- <h3 class="text-primary fw-bold h2 mb-3">{{ data.title }}</h3>
16
+ <div class="row m-4">
17
+ <div class="row border-bottom border-secondary ps-0">
18
+ <div class="h3 text-primary fw-bold ps-0">
19
+ <span class="text-primary me-3">{{ data.icon|safe }}</span>{{ data.title }}
31
20
  </div>
32
- <div class="row">
33
- <table>
34
- <thead class="h5">
35
- <tr>
36
- <th class="bg-transparent text-secondary">Total</th>
37
- <th class="bg-transparent text-secondary">past day</th>
38
- <th class="bg-transparent text-secondary">past week</th>
39
- <th class="bg-transparent text-secondary">past month</th>
40
- <th class="bg-transparent text-secondary">past year</th>
21
+ </div>
22
+ <div class="row">
23
+ <table>
24
+ <thead class="h6">
25
+ <tr>
26
+ <th class="bg-transparent text-secondary">Total</th>
27
+ <th class="bg-transparent text-secondary">past day</th>
28
+ <th class="bg-transparent text-secondary">past week</th>
29
+ <th class="bg-transparent text-secondary">past month</th>
30
+ <th class="bg-transparent text-secondary">past year</th>
31
+ </tr>
32
+ </thead>
33
+ <tbody>
34
+ <tr class="text-primary h6">
35
+ <td><span class="ms-2"><a href="{{data.url}}">{{ data.total }}</a></span></td>
36
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past day&created_at__gte={{data.day_date|date:'Y-m-d H:i:s' }}">{{ data.day_count }}</a></span></td>
37
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past week&created_at__gte={{data.week_date|date:'Y-m-d H:i:s' }}">{{ data.week_count }}</a></span></td>
38
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past month&created_at__gte={{data.month_date|date:'Y-m-d H:i:s' }}">{{ data.month_count }}</a></span></td>
39
+ <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past year&created_at__gte={{data.year_date|date:'Y-m-d H:i:s' }}">{{ data.year_count }}</a></span></td>
41
40
  </tr>
42
- </thead>
43
- <tbody>
44
- <tr class="text-primary h5">
45
- <td><span class="ms-2"><a href="{{data.url}}">{{ data.total }}</a></span></td>
46
- <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past day&created_at__gte={{data.day_date|date:'Y-m-d H:i:s' }}">{{ data.day_count }}</a></span></td>
47
- <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past week&created_at__gte={{data.week_date|date:'Y-m-d H:i:s' }}">{{ data.week_count }}</a></span></td>
48
- <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past month&created_at__gte={{data.month_date|date:'Y-m-d H:i:s' }}">{{ data.month_count }}</a></span></td>
49
- <td><span class="ms-2"><a href="{{data.url}}?page_description=added in past year&created_at__gte={{data.year_date|date:'Y-m-d H:i:s' }}">{{ data.year_count }}</a></span></td>
50
- </tr>
51
- </tbody>
52
- </table>
53
- </div>
41
+ </tbody>
42
+ </table>
54
43
  </div>
55
44
  </div>
56
45
  <div class="mb-1">&nbsp;</div>
@@ -1,42 +1,43 @@
1
- <header class="m-5">
2
- <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
3
- <div class="container mb-5">
4
- <h1 class="text-primary fw-bold">{{ title }}</h1>
5
- <h3 class="text-secondary">{% if sub_title %}{{ sub_title }}{% endif %} &nbsp; </h3>
6
- </div>
1
+ <header class="m-5">
2
+ <div class="headline text-center animated fadeIn" style="animation-delay: .15s;">
3
+ <div class="container mb-5">
4
+ <h1 class="text-primary fw-bold">{{ title }}</h1>
5
+ <h3 class="text-secondary">{% if sub_title %}{{ sub_title }}{% endif %} &nbsp; </h3>
7
6
  </div>
8
- </header>
7
+ </div>
8
+ </header>
9
9
 
10
- {# bar graphs for day/week/month/year #}
11
- <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .25s;">
12
- <div class="row mb-4 text-center">
13
- <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
14
- <canvas id="bar-chart-day" width="400" height="250"></canvas>
15
- </div>
16
- <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
17
- <canvas id="bar-chart-week" width="400" height="250"></canvas>
18
- </div>
19
- <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
20
- <canvas id="bar-chart-month" width="400" height="250"></canvas>
21
- </div>
22
- <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
23
- <canvas id="bar-chart-year" width="400" height="250"></canvas>
24
- </div>
10
+ {# bar graphs for day/week/month/year #}
11
+ <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .25s;">
12
+ <div class="row mb-4 text-center">
13
+ <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
14
+ <canvas id="bar-chart-day" width="400" height="250"></canvas>
15
+ </div>
16
+ <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
17
+ <canvas id="bar-chart-week" width="400" height="250"></canvas>
18
+ </div>
19
+ <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
20
+ <canvas id="bar-chart-month" width="400" height="250"></canvas>
21
+ </div>
22
+ <div class="col-sm-12 col-md-3 d-flex justify-content-center mb-4">
23
+ <canvas id="bar-chart-year" width="400" height="250"></canvas>
25
24
  </div>
26
25
  </div>
26
+ </div>
27
27
 
28
- {# line graph for annual trend #}
29
- <div class="container-fluid mt-2 mb-5 animated fadeIn" style="animation-delay: .35s;">
30
- <div class="row mb-4 text-center">
31
- <div class="col-sm-12 d-flex justify-content-center mb-4">
32
- <canvas id="annual_trend" width="800" height="250"></canvas>
33
- </div>
28
+ {# line graph for annual trend #}
29
+ <div class="container-fluid mt-2 animated fadeIn" style="animation-delay: .35s;">
30
+ <div class="row mb-4 text-center">
31
+ <div class="col-sm-12 d-flex justify-content-center">
32
+ <canvas id="annual_trend" width="800" height="250"></canvas>
34
33
  </div>
34
+ <div class="container-fluid mb-3 ms-3 text-start text-muted" style="font-size: .75rem;">(today)</div>
35
35
  </div>
36
+ </div>
36
37
 
37
- {% include 'handyhelpers/report/theme_colors.htm' %}
38
- {% include 'handyhelpers/report/chartjs/day_count_chart.htm' %}
39
- {% include 'handyhelpers/report/chartjs/week_count_chart.htm' %}
40
- {% include 'handyhelpers/report/chartjs/month_count_chart.htm' %}
41
- {% include 'handyhelpers/report/chartjs/year_count_chart.htm' %}
42
- {% include 'handyhelpers/report/chartjs/annual_trends_chart.htm' %}
38
+ {% include 'handyhelpers/report/theme_colors.htm' %}
39
+ {% include 'handyhelpers/report/chartjs/day_count_chart.htm' %}
40
+ {% include 'handyhelpers/report/chartjs/week_count_chart.htm' %}
41
+ {% include 'handyhelpers/report/chartjs/month_count_chart.htm' %}
42
+ {% include 'handyhelpers/report/chartjs/year_count_chart.htm' %}
43
+ {% include 'handyhelpers/report/chartjs/annual_trends_chart.htm' %}
@@ -43,7 +43,7 @@
43
43
  switch (label) {
44
44
  {% for data in dataset_list %}
45
45
  case '{{ data.title }}':
46
- location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_day|date:'Y-m-d H:i:s' }}&page_description=added in the past day";
46
+ location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_day|date:'Y-m-d' }}&page_description=added in the past day";
47
47
  break;
48
48
  {% endfor %}
49
49
  }
@@ -43,7 +43,7 @@
43
43
  switch (label) {
44
44
  {% for data in dataset_list %}
45
45
  case '{{ data.title }}':
46
- location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_month|date:'Y-m-d H:i:s' }}&page_description=added in the past month";
46
+ location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_month|date:'Y-m-d' }}&page_description=added in the past month";
47
47
  break;
48
48
  {% endfor %}
49
49
  }
@@ -43,7 +43,7 @@
43
43
  switch (label) {
44
44
  {% for data in dataset_list %}
45
45
  case '{{ data.title }}':
46
- location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_week|date:'Y-m-d H:i:s' }}&page_description=added in the past week";
46
+ location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_week|date:'Y-m-d' }}&page_description=added in the past week";
47
47
  break;
48
48
  {% endfor %}
49
49
  }
@@ -43,7 +43,7 @@
43
43
  switch (label) {
44
44
  {% for data in dataset_list %}
45
45
  case '{{ data.title }}':
46
- location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_year|date:'Y-m-d H:i:s' }}&page_description=added in the past year";
46
+ location.href = "{{ data.list_view }}?{{ data.dt_field }}__gte={{ last_year|date:'Y-m-d' }}&page_description=added in the past year";
47
47
  break;
48
48
  {% endfor %}
49
49
  }
@@ -0,0 +1,47 @@
1
+ from django import template
2
+
3
+ register = template.Library()
4
+
5
+
6
+ @register.filter
7
+ def get_form_errors(form, field_name):
8
+ """Get errors on a form field
9
+
10
+ Args:
11
+ form (Form): django form object
12
+ field_name (str): name of form field
13
+
14
+ Returns:
15
+ str: comma separated list of errors on the form field
16
+
17
+ Usage Example:
18
+ {{ form|get_form_errors:field.name }}
19
+ """
20
+ try:
21
+ error_list = [
22
+ item for sublist in form.errors.as_data()[field_name] for item in sublist
23
+ ]
24
+ return ", ".join(error_list)
25
+ except Exception:
26
+ return ""
27
+
28
+
29
+ @register.filter
30
+ def get_field_value(form, field_name):
31
+ """Get the value of a form field
32
+
33
+ Args:
34
+ form (Form): django form object
35
+ field_name (str): name of form field
36
+
37
+ Returns:
38
+ str: value of the form field
39
+
40
+ Usage Example:
41
+ {{ form|get_field_value:field.name }}
42
+ """
43
+
44
+ try:
45
+ return form.data.get(field_name)
46
+ except Exception:
47
+ return ""
@@ -0,0 +1,21 @@
1
+ from django import template
2
+ from django.urls import reverse
3
+ from django.utils.http import urlencode
4
+
5
+ register = template.Library()
6
+
7
+ @register.simple_tag(takes_context=True)
8
+ def append_query_params(context, url_name, display=None, **kwargs):
9
+ request = context['request']
10
+ query_params = request.GET.copy()
11
+
12
+ for key, value in kwargs.items():
13
+ query_params[key] = value
14
+
15
+ if display:
16
+ url = reverse(url_name, kwargs={'display': display})
17
+ else:
18
+ url = reverse(url_name)
19
+
20
+ query_string = query_params.urlencode()
21
+ return f"{url}?{query_string}" if query_string else url
@@ -31,4 +31,6 @@ class ShowAllListView(View):
31
31
  def get(self, request, *args, **kwargs):
32
32
  """ process GET request """
33
33
  redirect_url = self.request.META.get('HTTP_REFERER')
34
- return redirect(redirect_url.split('?')[0])
34
+ if redirect_url:
35
+ return redirect(redirect_url.split('?')[0])
36
+ return redirect(redirect_url)
@@ -1,28 +1,33 @@
1
1
  import calendar
2
- from datetime import date
2
+
3
+ # from datetime import date, datetime
4
+ from django.utils.timezone import datetime
5
+
3
6
  import re
4
7
 
5
8
  from django.shortcuts import render
6
9
  from django.views.generic import View
7
10
 
11
+ from handyhelpers.mixins.view_mixins import HtmxViewMixin
8
12
 
9
13
 
10
14
  class CalendarView(View):
11
- """ View to render a monthly calendar and optionally display events.
15
+ """View to render a monthly calendar and optionally display events.
12
16
 
13
17
  class parameters:
14
18
  template_name - template used when rendering partial; defaults to: handyhelpers/partials/calendar.htm
15
19
  event_model - django model representing events
16
20
  event_model_date_field - date or datetime field containing event date
17
21
  event_detail_url - url to use to get event details and display in a modal
18
- use_htmx - boolean representing option to use htmx in in today/next month/previous month links
19
-
22
+ use_htmx - boolean representing option to use htmx in in today/next month/previous month links
23
+
20
24
  Usage Example:
21
25
  class MyEventCalendarView(CalendarView):
22
26
  event_model = Event
23
27
  event_model_date_field = "date"
24
- event_detail_url = "myapp_:get_event_details"
28
+ event_detail_url = "myapp_:get_event_details"
25
29
  """
30
+
26
31
  title = "Calendar"
27
32
  event_model = None
28
33
  event_model_date_field = None
@@ -30,7 +35,7 @@ class CalendarView(View):
30
35
  template_name = "handyhelpers/partials/calendar.htm"
31
36
  use_htmx = True
32
37
 
33
- def get_next(self, this_year:int, this_month:int) -> tuple:
38
+ def get_next(self, this_year: int, this_month: int) -> tuple:
34
39
  """get the year and month of the next month
35
40
 
36
41
  Args:
@@ -44,7 +49,7 @@ class CalendarView(View):
44
49
  return (this_year + 1), 1
45
50
  return this_year, this_month + 1
46
51
 
47
- def get_previous(self, this_year:int, this_month:int) -> tuple:
52
+ def get_previous(self, this_year: int, this_month: int) -> tuple:
48
53
  """get the year and month of the previous month
49
54
 
50
55
  Args:
@@ -62,8 +67,8 @@ class CalendarView(View):
62
67
  mo = re.search(r"^(/[^/]+/)", request.path)
63
68
  if mo:
64
69
  calendar_url_root = mo.groups()[0]
65
-
66
- today = date.today()
70
+
71
+ today = datetime.today()
67
72
  year = kwargs.get("year", today.year)
68
73
  month = kwargs.get("month", today.month)
69
74
  if year == 0:
@@ -76,19 +81,24 @@ class CalendarView(View):
76
81
  today_url = f"{calendar_url_root}{today.year}/{today.month}"
77
82
  prev_month_url = f"{calendar_url_root}{prev_year}/{prev_month}"
78
83
  next_month_url = f"{calendar_url_root}{next_year}/{next_month}"
79
-
84
+
80
85
  cal_data = calendar.monthcalendar(year, month)
86
+ cal_data_str = [
87
+ [str(day) if day != 0 else "" for day in week] for week in cal_data
88
+ ]
81
89
 
82
90
  queryset = None
83
91
  if self.event_model:
84
92
  queryset = self.event_model.objects.filter(
85
- **{f"{self.event_model_date_field}__year": year,
86
- f"{self.event_model_date_field}__month": month,
87
- }
88
- )
93
+ **{
94
+ f"{self.event_model_date_field}__year": year,
95
+ f"{self.event_model_date_field}__month": month,
96
+ }
97
+ )
89
98
 
90
99
  context = {
91
100
  "cal_data": cal_data,
101
+ "cal_data_str": cal_data_str,
92
102
  "title": self.title,
93
103
  "year": year,
94
104
  "month": month,
@@ -102,3 +112,12 @@ class CalendarView(View):
102
112
  "next_month_url": next_month_url,
103
113
  }
104
114
  return render(request, self.template_name, context)
115
+
116
+
117
+ class HtmxCalendarView(HtmxViewMixin, CalendarView):
118
+ htmx_template_name = None
119
+
120
+ def get(self, request, *args, **kwargs):
121
+ if self.is_htmx() and self.htmx_template_name:
122
+ self.template_name = self.htmx_template_name
123
+ return super().get(request, *args, **kwargs)