accrete 0.0.99__tar.gz → 0.0.101__tar.gz

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.
Files changed (241) hide show
  1. {accrete-0.0.99 → accrete-0.0.101}/PKG-INFO +1 -1
  2. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/__init__.py +2 -0
  3. accrete-0.0.101/accrete/contrib/ui/components/__init__.py +1 -0
  4. accrete-0.0.101/accrete/contrib/ui/components/search_select.py +18 -0
  5. accrete-0.0.101/accrete/contrib/ui/forms/widgets.py +101 -0
  6. accrete-0.0.101/accrete/contrib/ui/templates/django/forms/widgets/date.html +9 -0
  7. accrete-0.0.101/accrete/contrib/ui/templates/ui/components/model_search_select_multi_selected_options.html +3 -0
  8. accrete-0.0.101/accrete/contrib/ui/templates/ui/components/model_search_select_multi_tags.html +6 -0
  9. accrete-0.0.101/accrete/contrib/ui/templates/ui/components/model_search_select_options.html +3 -0
  10. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/layout.html +1 -1
  11. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/modal_form.html +1 -0
  12. accrete-0.0.101/accrete/contrib/ui/templates/ui/widgets/model_search_select.html +53 -0
  13. accrete-0.0.101/accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html +67 -0
  14. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templatetags/accrete_ui.py +1 -1
  15. {accrete-0.0.99 → accrete-0.0.101}/pyproject.toml +1 -1
  16. {accrete-0.0.99 → accrete-0.0.101}/.gitignore +0 -0
  17. {accrete-0.0.99 → accrete-0.0.101}/LICENSE +0 -0
  18. {accrete-0.0.99 → accrete-0.0.101}/README.md +0 -0
  19. {accrete-0.0.99 → accrete-0.0.101}/accrete/__init__.py +0 -0
  20. {accrete-0.0.99 → accrete-0.0.101}/accrete/admin.py +0 -0
  21. {accrete-0.0.99 → accrete-0.0.101}/accrete/annotation.py +0 -0
  22. {accrete-0.0.99 → accrete-0.0.101}/accrete/apps.py +0 -0
  23. {accrete-0.0.99 → accrete-0.0.101}/accrete/config.py +0 -0
  24. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/__init__.py +0 -0
  25. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/__init__.py +0 -0
  26. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/admin.py +0 -0
  27. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/apps.py +0 -0
  28. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/forms.py +0 -0
  29. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/migrations/0001_initial.py +0 -0
  30. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/migrations/0002_alter_sequence_name.py +0 -0
  31. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/migrations/__init__.py +0 -0
  32. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/models.py +0 -0
  33. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/queries.py +0 -0
  34. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/tests.py +0 -0
  35. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/sequence/views.py +0 -0
  36. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/__init__.py +0 -0
  37. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/admin.py +0 -0
  38. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/apps.py +0 -0
  39. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/forms.py +0 -0
  40. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/migrations/0001_initial.py +0 -0
  41. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/migrations/__init__.py +0 -0
  42. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/models.py +0 -0
  43. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/tasks.py +0 -0
  44. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/tests.py +0 -0
  45. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/system_mail/views.py +0 -0
  46. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/admin.py +0 -0
  47. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/apps.py +0 -0
  48. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/context.py +0 -0
  49. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/elements.py +0 -0
  50. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/filter.py +0 -0
  51. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/migrations/__init__.py +0 -0
  52. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/LICENSE +0 -0
  53. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/README.md +0 -0
  54. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/bulma.scss +0 -0
  55. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/bulma.css +0 -0
  56. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/bulma.css.map +0 -0
  57. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/bulma.min.css +0 -0
  58. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-dark-mode.min.css +0 -0
  59. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-dark-mode.min.css.map +0 -0
  60. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers-prefixed.min.css +0 -0
  61. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers-prefixed.min.css.map +0 -0
  62. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers.min.css +0 -0
  63. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers.min.css.map +0 -0
  64. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-prefixed.min.css +0 -0
  65. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/css/versions/bulma-prefixed.min.css.map +0 -0
  66. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/package.json +0 -0
  67. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/_index.scss +0 -0
  68. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/base/_index.scss +0 -0
  69. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/base/animations.scss +0 -0
  70. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/base/generic.scss +0 -0
  71. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/base/minireset.scss +0 -0
  72. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/base/skeleton.scss +0 -0
  73. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/_index.scss +0 -0
  74. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/breadcrumb.scss +0 -0
  75. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/card.scss +0 -0
  76. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/dropdown.scss +0 -0
  77. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/menu.scss +0 -0
  78. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/message.scss +0 -0
  79. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/modal.scss +0 -0
  80. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/navbar.scss +0 -0
  81. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/pagination.scss +0 -0
  82. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/panel.scss +0 -0
  83. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/components/tabs.scss +0 -0
  84. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/_index.scss +0 -0
  85. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/block.scss +0 -0
  86. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/box.scss +0 -0
  87. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/button.scss +0 -0
  88. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/content.scss +0 -0
  89. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/delete.scss +0 -0
  90. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/icon.scss +0 -0
  91. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/image.scss +0 -0
  92. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/loader.scss +0 -0
  93. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/notification.scss +0 -0
  94. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/progress.scss +0 -0
  95. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/table.scss +0 -0
  96. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/tag.scss +0 -0
  97. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/elements/title.scss +0 -0
  98. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/_index.scss +0 -0
  99. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/checkbox-radio.scss +0 -0
  100. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/file.scss +0 -0
  101. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/input-textarea.scss +0 -0
  102. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/select.scss +0 -0
  103. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/shared.scss +0 -0
  104. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/form/tools.scss +0 -0
  105. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/grid/_index.scss +0 -0
  106. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/grid/columns-v2.scss +0 -0
  107. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/grid/columns.scss +0 -0
  108. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/grid/grid.scss +0 -0
  109. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/_index.scss +0 -0
  110. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/aspect-ratio.scss +0 -0
  111. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/border.scss +0 -0
  112. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/color.scss +0 -0
  113. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/flexbox.scss +0 -0
  114. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/float.scss +0 -0
  115. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/gap.scss +0 -0
  116. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/other.scss +0 -0
  117. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/overflow.scss +0 -0
  118. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/position.scss +0 -0
  119. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/spacing.scss +0 -0
  120. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/typography.scss +0 -0
  121. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/helpers/visibility.scss +0 -0
  122. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/_index.scss +0 -0
  123. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/container.scss +0 -0
  124. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/footer.scss +0 -0
  125. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/hero.scss +0 -0
  126. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/level.scss +0 -0
  127. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/media.scss +0 -0
  128. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/layout/section.scss +0 -0
  129. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/themes/_index.scss +0 -0
  130. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/themes/dark.scss +0 -0
  131. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/themes/light.scss +0 -0
  132. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/themes/setup.scss +0 -0
  133. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/_index.scss +0 -0
  134. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/controls.scss +0 -0
  135. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/css-variables.scss +0 -0
  136. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/derived-variables.scss +0 -0
  137. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/extends.scss +0 -0
  138. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/functions.scss +0 -0
  139. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/initial-variables.scss +0 -0
  140. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/sass/utilities/mixins.scss +0 -0
  141. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/versions/bulma-no-dark-mode.scss +0 -0
  142. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/versions/bulma-no-helpers-prefixed.scss +0 -0
  143. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/versions/bulma-no-helpers.scss +0 -0
  144. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/bulma/versions/bulma-prefixed.scss +0 -0
  145. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/css/accrete.css +0 -0
  146. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/css/accrete.css.map +0 -0
  147. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/css/accrete.scss +0 -0
  148. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/css/fa.css +0 -0
  149. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/css/icons.css +0 -0
  150. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/icons/Logo.svg +0 -0
  151. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/icons/accrete.svg +0 -0
  152. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/js/alpine-sort3.14.1.js +0 -0
  153. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/js/alpine3.14.1.js +0 -0
  154. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/js/filter.js +0 -0
  155. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/js/htmx.min.js +0 -0
  156. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/js/ui.js +0 -0
  157. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-brands-400.ttf +0 -0
  158. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-brands-400.woff2 +0 -0
  159. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-regular-400.ttf +0 -0
  160. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-regular-400.woff2 +0 -0
  161. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-solid-900.ttf +0 -0
  162. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-solid-900.woff2 +0 -0
  163. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-v4compatibility.ttf +0 -0
  164. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/static/webfonts/fa-v4compatibility.woff2 +0 -0
  165. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/attrs.html +0 -0
  166. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/email.html +0 -0
  167. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/file.html +0 -0
  168. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/input.html +0 -0
  169. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/select.html +0 -0
  170. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/text.html +0 -0
  171. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/django/forms/widgets/textarea.html +0 -0
  172. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/dashboard.html +0 -0
  173. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/detail.html +0 -0
  174. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/form.html +0 -0
  175. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/list.html +0 -0
  176. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/filter.html +0 -0
  177. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/form_errors.html +0 -0
  178. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/header.html +0 -0
  179. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/modal.html +0 -0
  180. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/onchange_form.html +0 -0
  181. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/pagination_detail.html +0 -0
  182. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/pagination_list.html +0 -0
  183. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/table_field.html +0 -0
  184. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/table_field_float.html +0 -0
  185. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/table_field_monetary.html +0 -0
  186. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/partials/table_field_string.html +0 -0
  187. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templates/ui/table.html +0 -0
  188. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/templatetags/__init__.py +0 -0
  189. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/tests.py +0 -0
  190. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/urls.py +0 -0
  191. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/ui/views.py +0 -0
  192. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/__init__.py +0 -0
  193. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/admin.py +0 -0
  194. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/apps.py +0 -0
  195. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/forms.py +0 -0
  196. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/locale/de/LC_MESSAGES/django.mo +0 -0
  197. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/locale/de/LC_MESSAGES/django.po +0 -0
  198. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/middleware.py +0 -0
  199. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/migrations/0001_initial.py +0 -0
  200. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/migrations/__init__.py +0 -0
  201. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/models.py +0 -0
  202. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html +0 -0
  203. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/change_email.html +0 -0
  204. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/change_password.html +0 -0
  205. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/login.html +0 -0
  206. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/user_detail.html +0 -0
  207. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/templates/user/user_form.html +0 -0
  208. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/tests.py +0 -0
  209. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/urls.py +0 -0
  210. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user/views.py +0 -0
  211. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/__init__.py +0 -0
  212. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/admin.py +0 -0
  213. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/apps.py +0 -0
  214. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/config.py +0 -0
  215. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/forms.py +0 -0
  216. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/migrations/0001_initial.py +0 -0
  217. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/migrations/__init__.py +0 -0
  218. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/models.py +0 -0
  219. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/templates/user_registration/mail_templates/confirmation_mail.html +0 -0
  220. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/templates/user_registration/registration.html +0 -0
  221. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/tests.py +0 -0
  222. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/urls.py +0 -0
  223. {accrete-0.0.99 → accrete-0.0.101}/accrete/contrib/user_registration/views.py +0 -0
  224. {accrete-0.0.99 → accrete-0.0.101}/accrete/forms.py +0 -0
  225. {accrete-0.0.99 → accrete-0.0.101}/accrete/managers.py +0 -0
  226. {accrete-0.0.99 → accrete-0.0.101}/accrete/middleware.py +0 -0
  227. {accrete-0.0.99 → accrete-0.0.101}/accrete/migrations/0001_initial.py +0 -0
  228. {accrete-0.0.99 → accrete-0.0.101}/accrete/migrations/0002_initial.py +0 -0
  229. {accrete-0.0.99 → accrete-0.0.101}/accrete/migrations/__init__.py +0 -0
  230. {accrete-0.0.99 → accrete-0.0.101}/accrete/models.py +0 -0
  231. {accrete-0.0.99 → accrete-0.0.101}/accrete/storage.py +0 -0
  232. {accrete-0.0.99 → accrete-0.0.101}/accrete/tenant.py +0 -0
  233. {accrete-0.0.99 → accrete-0.0.101}/accrete/tests.py +0 -0
  234. {accrete-0.0.99 → accrete-0.0.101}/accrete/urls.py +0 -0
  235. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/__init__.py +0 -0
  236. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/dates.py +0 -0
  237. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/forms.py +0 -0
  238. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/log.py +0 -0
  239. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/models.py +0 -0
  240. {accrete-0.0.99 → accrete-0.0.101}/accrete/utils/views.py +0 -0
  241. {accrete-0.0.99 → accrete-0.0.101}/accrete/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: accrete
3
- Version: 0.0.99
3
+ Version: 0.0.101
4
4
  Summary: Django Shared Schema Multi Tenant
5
5
  Author-email: Benedikt Jilek <benedikt.jilek@pm.me>
6
6
  License: Copyright (c) 2023 Benedikt Jilek
@@ -29,3 +29,5 @@ from .elements import (
29
29
  TableFieldType,
30
30
  Icon
31
31
  )
32
+
33
+ from . import components
@@ -0,0 +1 @@
1
+ from .search_select import ModelSearchSelectOptions
@@ -0,0 +1,18 @@
1
+ from dataclasses import dataclass
2
+
3
+ from django.db.models import QuerySet
4
+ from django.template.loader import render_to_string
5
+ from django.utils.safestring import mark_safe
6
+
7
+
8
+ @dataclass
9
+ class ModelSearchSelectOptions:
10
+
11
+ queryset: QuerySet
12
+ template: str = 'ui/components/model_search_select_options.html'
13
+
14
+ def get_context(self):
15
+ return {'options': self.queryset}
16
+
17
+ def __str__(self):
18
+ return mark_safe(render_to_string(self.template, self.get_context()))
@@ -0,0 +1,101 @@
1
+ from django.forms import widgets
2
+ from django.shortcuts import resolve_url
3
+
4
+
5
+ class ModelSearchSelect(widgets.NumberInput):
6
+ template_name = 'ui/widgets/model_search_select.html'
7
+ option_template_name = 'ui/widgets/model_search_select_options.html'
8
+ input_type = 'number'
9
+
10
+ def __init__(
11
+ self,
12
+ search_url: str,
13
+ search_parameter: str = 'search',
14
+ limit: int | None = 5,
15
+ hx_trigger_on_change: bool = False,
16
+ choices=()
17
+ ):
18
+ super().__init__()
19
+ self.search_url = search_url
20
+ self.search_parameter = search_parameter
21
+ self.limit = limit
22
+ self.hx_trigger_on_change = hx_trigger_on_change
23
+ self.choices = choices
24
+
25
+ def get_context(self, name, value, attrs):
26
+ qs = self.choices.queryset
27
+ if self.limit:
28
+ qs = qs[:self.limit]
29
+
30
+ context = {
31
+ "widget": {
32
+ "name": name,
33
+ "is_hidden": self.is_hidden,
34
+ "required": self.is_required,
35
+ "value": self.format_value(value or ''),
36
+ 'value_display': self.value_display(value),
37
+ "attrs": self.build_attrs(self.attrs, attrs),
38
+ "template_name": self.template_name,
39
+ 'search_url': self.search_url,
40
+ 'search_parameter': self.search_parameter,
41
+ 'hx_trigger_on_change': self.hx_trigger_on_change
42
+ },
43
+ 'options': qs
44
+ }
45
+ return context
46
+
47
+ def format_value(self, value):
48
+ res = super().format_value(value)
49
+ return res or ''
50
+
51
+ def value_display(self, value):
52
+ if value is None:
53
+ return ''
54
+ try:
55
+ value = int(value)
56
+ except ValueError:
57
+ return ''
58
+ return str(self.choices.queryset.get(pk=value))
59
+
60
+
61
+ class ModelSearchSelectMulti(widgets.SelectMultiple):
62
+ template_name = 'ui/widgets/model_search_select_multi.html'
63
+ option_template_name = 'ui/widgets/model_search_select_options.html'
64
+ input_type = 'number'
65
+
66
+ def __init__(
67
+ self,
68
+ search_url: str,
69
+ search_parameter: str = 'search',
70
+ limit: int | None = 5,
71
+ hx_trigger_on_change: bool = False,
72
+ choices=()
73
+ ):
74
+ super().__init__()
75
+ self.search_url = search_url
76
+ self.search_parameter = search_parameter
77
+ self.limit = limit
78
+ self.hx_trigger_on_change = hx_trigger_on_change
79
+ self.choices = choices
80
+
81
+ def get_context(self, name, value, attrs):
82
+ qs = self.choices.queryset
83
+ if self.limit:
84
+ qs = qs[:self.limit]
85
+
86
+ context = {
87
+ "widget": {
88
+ "name": name,
89
+ "is_hidden": self.is_hidden,
90
+ "required": self.is_required,
91
+ "value": self.format_value(value),
92
+ "attrs": self.build_attrs(self.attrs, attrs),
93
+ "template_name": self.template_name,
94
+ 'search_url': resolve_url(self.search_url),
95
+ 'search_parameter': self.search_parameter,
96
+ 'hx_trigger_on_change': self.hx_trigger_on_change
97
+ },
98
+ 'options': qs,
99
+ 'selected': self.choices.queryset.filter(pk__in=value) if value else qs.none()
100
+ }
101
+ return context
@@ -0,0 +1,9 @@
1
+ <div class="field">
2
+ <p class="control">
3
+ <input class="{% if widget.type != 'checkbox' %}input{% endif %} is-fullwidth"
4
+ name="{{ widget.name }}" type="{{ widget.type }}"
5
+ {% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}
6
+ {% include "django/forms/widgets/attrs.html" %}
7
+ >
8
+ </p>
9
+ </div>
@@ -0,0 +1,3 @@
1
+ {% for obj in selected %}
2
+ <option selected value="{{ obj.pk }}"></option>
3
+ {% endfor %}
@@ -0,0 +1,6 @@
1
+ {% for obj in selected %}
2
+ <span class="tag" style="white-space: normal; height: fit-content">
3
+ {{ obj }}
4
+ <button class="delete is-small" type="button" data-value="{{ obj.pk }}"></button>
5
+ </span>
6
+ {% endfor %}
@@ -0,0 +1,3 @@
1
+ {% for option in options %}
2
+ <button type="button" class="dropdown-item px-1" value="{{ option.pk }}" style="word-wrap: break-word; width: 100%; white-space: normal">{{ option }}</button>
3
+ {% endfor %}
@@ -11,7 +11,7 @@
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1">
12
12
  {% block favicon %}<link rel="icon" type="image/svg" href="{% static 'icons/accrete.svg' %}"/>{% endblock %}
13
13
  {% block style %}
14
- <link rel="stylesheet" type="text/css" href="{% static "css/accrete.css" %}?v=0.0.93">
14
+ <link rel="stylesheet" type="text/css" href="{% static "css/accrete.css" %}?v=0.0.100">
15
15
  <link rel="stylesheet" type="text/css" href="{% static "css/icons.css" %}">
16
16
  <link rel="stylesheet" type="text/css" href="{% static "css/fa.css" %}">
17
17
  {% endblock %}
@@ -3,6 +3,7 @@
3
3
  <div id="modal-{{ form_id }}" class="modal {% block modal_form_class %}is-active{% endblock %}"
4
4
  hx-swap="outerHTML"
5
5
  hx-target="#modal-{{ form_id }}"
6
+ hx-on:delete="removeModal('modal-{{ form_id }}')"
6
7
  {% if blocking %}
7
8
  hx-indicator="#modal-{{ form_id }}-indicator"
8
9
  hx-disabled-elt="#modal-{{ form_id }}-background"
@@ -0,0 +1,53 @@
1
+ {% load static %}
2
+ {% load i18n %}
3
+
4
+
5
+ <script>
6
+ function modelSearchSelect() {
7
+ return {
8
+ open: false,
9
+
10
+ shouldClose(event) {
11
+ return event.relatedTarget === this.$refs.dropdownContent || this.$refs.dropdownContent.contains(event.relatedTarget)
12
+ }
13
+ }
14
+ }
15
+ </script>
16
+
17
+
18
+ <div class="field select" x-data="modelSearchSelect()" @click.outside="open = false">
19
+ <input id="id_{{ widget.name }}_value" hidden="hidden" type="{{ widget.type }}" name="{{ widget.name }}" x-ref="inputValue" aria-label="inputValue"
20
+ value="{{ widget.value }}"
21
+ >
22
+ <input id="id_{{ widget.name }}_display" class="input" type="text" readonly x-ref="inputDisplay" value="{{ widget.value_display }}" aria-label="inputDisplay"
23
+ style="padding-right: 30px"
24
+ x-on:focus="open = true;"
25
+ x-on:keydown="if ($event.keyCode == 27) {document.activeElement.blur()} else if ($event.keyCode != 9) {$refs.searchInput.focus();}"
26
+ x-on:focusout="open = shouldClose($event)"
27
+ >
28
+ <div style="position: relative; z-index: 90;">
29
+ <div x-show="open" class="box pt-1" x-ref="dropdownContent" tabindex="-1" x-transition>
30
+ <input id="id_{{ widget.name }}_search" type="search" autocomplete="off" class="input" x-ref="searchInput" aria-label="search"
31
+ name="{{ widget.search_parameter }}"
32
+ placeholder="{% translate 'Type to search' %}"
33
+ x-on:keydown="if ($event.keyCode == 27) {document.activeElement.blur()}"
34
+ x-on:focusout="open = shouldClose($event)"
35
+ hx-get="{{ widget.search_url }}"
36
+ hx-trigger="input changed delay:500ms, search"
37
+ hx-target="#{{ widget.name }}_dropdown_items"
38
+ >
39
+ <div x-on:click="$refs.inputValue.setAttribute('value', $event.target.value); $refs.inputDisplay.value = $event.target.innerText; htmx.trigger($refs.inputValue, 'submit'); open = false; {% if widget.hx_trigger_on_change %}htmx.trigger('#id_{{ widget.name }}_value', 'change');{% endif %}"
40
+ x-on:keydown="if ($event.keyCode == 27) {document.activeElement.blur()} else if ($event.keyCode != 9 && $event.keyCode != 13) {$refs.searchInput.focus();}"
41
+ >
42
+ {% if not widget.required %}
43
+ <div class="hoverable" style="max-height: 200px; width: 100%; overflow-y: auto;">
44
+ <button type="button" class="dropdown-item px-1" value="" style="word-wrap: break-word; width: 100%; white-space: normal">---------</button>
45
+ </div>
46
+ {% endif %}
47
+ <div id="{{ widget.name }}_dropdown_items" class="hoverable" style="max-height: 200px; width: 100%; overflow-y: auto;">
48
+ {% include 'ui/components/model_search_select_options.html' %}
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
@@ -0,0 +1,67 @@
1
+ {% load i18n %}
2
+
3
+ <div class="" x-data="{open: false, shouldClose(event) {return event.relatedTarget == $refs.dropdownContent || $refs.dropdownContent.contains(event.relatedTarget);} }"
4
+ @click.outside="open = false" style="width: 100%"
5
+ >
6
+ <select multiple id="{{ widget.attrs.id }}" hidden="hidden" name="{{ widget.name }}" aria-label="{{ widget.name }}" x-ref="inputValue">
7
+ {% include 'ui/components/model_search_select_multi_selected_options.html' %}
8
+ </select>
9
+ <div id="{{ widget.attrs.id }}_display" class="input select py-1 pl-1" tabindex="0" x-ref="inputDisplay" aria-label="inputDisplay"
10
+ style="padding-right: 30px; border-radius: 0; border-top: 0; border-right:0; border-left: 0; min-height: var(--bulma-control-height); height: fit-content; width: 100%"
11
+ x-on:focus="open = true;"
12
+ x-on:keydown="if ($event.keyCode == 27) {document.activeElement.blur()} else if ($event.keyCode != 9) {$refs.searchInput.focus();}"
13
+ x-on:focusout="open = shouldClose($event)"
14
+ >
15
+ <div class="tags" x-ref="inputDisplayTags"
16
+ @click="
17
+ if ($event.target.classList.contains('delete')) {
18
+ let val = $event.target.getAttribute('data-value');
19
+ $refs.inputValue.querySelector(`option[value=${CSS.escape(val)}]`).remove();
20
+ $event.target.parentElement.remove();
21
+ }
22
+ ">
23
+ {% include 'ui/components/model_search_select_multi_tags.html' %}
24
+ </div>
25
+ </div>
26
+ <div style="position: relative; z-index: 90;">
27
+ <div x-show="open" class="box pt-1" x-ref="dropdownContent" tabindex="-1" x-transition style="position: absolute; min-width: 100%">
28
+ <input id="id_{{ widget.name }}_search" type="search" autocomplete="off" class="input" x-ref="searchInput" aria-label="search"
29
+ name="{{ widget.search_parameter }}"
30
+ placeholder="{% translate 'Type to search' %}"
31
+ x-on:keydown="if ($event.keyCode == 27) {document.activeElement.blur()}"
32
+ x-on:focusout="open = shouldClose($event)"
33
+ hx-get="{{ widget.search_url }}"
34
+ hx-trigger="input changed delay:500ms, search"
35
+ hx-target="#{{ widget.name }}_dropdown_items"
36
+ >
37
+ <div id="{{ widget.name }}_dropdown_items" class="hoverable" style="max-height: 200px; width: 100%; overflow-y: auto;"
38
+ x-on:click="
39
+ if (! $refs.inputValue.querySelectorAll(`option[value=${CSS.escape($event.target.value)}]`).length) {
40
+ let option = document.createElement('option');
41
+ let tag = document.createElement('span');
42
+ let delButton = document.createElement('button');
43
+ option.setAttribute('selected', '');
44
+ option.value = $event.target.value;
45
+ tag.classList.add('tag');
46
+ tag.innerText = $event.target.innerText;
47
+ tag.style.whiteSpace = 'normal';
48
+ tag.style.height = 'fit-content';
49
+ delButton.classList.add('delete', 'is-small');
50
+ delButton.type = 'button';
51
+ delButton.setAttribute('data-value', $event.target.value);
52
+ tag.appendChild(delButton);
53
+ $refs.inputValue.appendChild(option);
54
+ $refs.inputDisplayTags.appendChild(tag);
55
+ };
56
+ {% if widget.hx_trigger_on_change %}htmx.trigger('#{{ widget.attrs.id }}_value', 'change');{% endif %}
57
+ "
58
+ x-on:keydown="
59
+ if ($event.keyCode == 27) {document.activeElement.blur()}
60
+ else if ($event.keyCode != 9 && $event.keyCode != 13) {$refs.searchInput.focus();}
61
+ "
62
+ >
63
+ {% include 'ui/components/model_search_select_options.html' %}
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </div>
@@ -120,7 +120,7 @@ def timedelta_cast(td: timedelta, code: str) -> str | None:
120
120
 
121
121
 
122
122
  @register.filter(name='weekday')
123
- def datetime_to_weekday(dt: datetime|date, default=None):
123
+ def datetime_to_weekday(dt: datetime|date, default=None) -> str:
124
124
  if dt is None:
125
125
  return default
126
126
  mapping = {
@@ -4,7 +4,7 @@ build-backend = 'hatchling.build'
4
4
 
5
5
  [project]
6
6
  name = 'accrete'
7
- version = '0.0.99'
7
+ version = '0.0.101'
8
8
  authors = [
9
9
  { name='Benedikt Jilek', email='benedikt.jilek@pm.me' },
10
10
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes