dynamicforms 0.76.14__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 (414) hide show
  1. dynamicforms-0.76.14/.actrc +2 -0
  2. dynamicforms-0.76.14/.coveragerc +15 -0
  3. dynamicforms-0.76.14/.github/workflows/Python tests.yml +183 -0
  4. dynamicforms-0.76.14/.github/workflows/check_code.yml +12 -0
  5. dynamicforms-0.76.14/.github/workflows/check_doc.yml +23 -0
  6. dynamicforms-0.76.14/.github/workflows/incremental-cover-check.yml +73 -0
  7. dynamicforms-0.76.14/.github/workflows/vitest_tests.yml +20 -0
  8. dynamicforms-0.76.14/.gitignore +39 -0
  9. dynamicforms-0.76.14/LICENSE +21 -0
  10. dynamicforms-0.76.14/MANIFEST.in +8 -0
  11. dynamicforms-0.76.14/PKG-INFO +129 -0
  12. dynamicforms-0.76.14/README.md +99 -0
  13. dynamicforms-0.76.14/docs/.docs_archive/Makefile +21 -0
  14. dynamicforms-0.76.14/docs/.docs_archive/conf.py +187 -0
  15. dynamicforms-0.76.14/docs/.docs_archive/documents/api/action_controls.rst +8 -0
  16. dynamicforms-0.76.14/docs/.docs_archive/documents/api/context_processors.rst +5 -0
  17. dynamicforms-0.76.14/docs/.docs_archive/documents/api/dialogs.rst +31 -0
  18. dynamicforms-0.76.14/docs/.docs_archive/documents/api/fields.rst +27 -0
  19. dynamicforms-0.76.14/docs/.docs_archive/documents/api/index.rst +14 -0
  20. dynamicforms-0.76.14/docs/.docs_archive/documents/api/renderers.rst +23 -0
  21. dynamicforms-0.76.14/docs/.docs_archive/documents/api/serializers.rst +18 -0
  22. dynamicforms-0.76.14/docs/.docs_archive/documents/api/templatetags.rst +18 -0
  23. dynamicforms-0.76.14/docs/.docs_archive/documents/api/viewsets.rst +21 -0
  24. dynamicforms-0.76.14/docs/.docs_archive/documents/contribute.rst +137 -0
  25. dynamicforms-0.76.14/docs/.docs_archive/documents/guides/index.rst +12 -0
  26. dynamicforms-0.76.14/docs/.docs_archive/documents/guides/quick_start.rst +139 -0
  27. dynamicforms-0.76.14/docs/.docs_archive/documents/guides/templates.rst +46 -0
  28. dynamicforms-0.76.14/docs/.docs_archive/documents/intro.rst +33 -0
  29. dynamicforms-0.76.14/docs/.docs_archive/documents/settings.rst +56 -0
  30. dynamicforms-0.76.14/docs/.docs_archive/index.rst +24 -0
  31. dynamicforms-0.76.14/docs/.docs_archive/make.bat +42 -0
  32. dynamicforms-0.76.14/docs/.vitepress/config.mts +46 -0
  33. dynamicforms-0.76.14/docs/.vitepress/theme/index.ts +17 -0
  34. dynamicforms-0.76.14/docs/.vitepress/theme/style.css +139 -0
  35. dynamicforms-0.76.14/docs/examples/api-examples.md +49 -0
  36. dynamicforms-0.76.14/docs/examples/markdown-examples.md +85 -0
  37. dynamicforms-0.76.14/docs/getting-started.md +144 -0
  38. dynamicforms-0.76.14/docs/index.md +33 -0
  39. dynamicforms-0.76.14/docs/reference/dialog-size.md +59 -0
  40. dynamicforms-0.76.14/docs/reference/hiding_titlebar_and_navbar.md +29 -0
  41. dynamicforms-0.76.14/docs/reference/index.md +3 -0
  42. dynamicforms-0.76.14/docs/reference/layout.md +129 -0
  43. dynamicforms-0.76.14/docs/settings.md +51 -0
  44. dynamicforms-0.76.14/dynamicforms/__init__.py +8 -0
  45. dynamicforms-0.76.14/dynamicforms/action.py +521 -0
  46. dynamicforms-0.76.14/dynamicforms/apps.py +5 -0
  47. dynamicforms-0.76.14/dynamicforms/fields.py +1570 -0
  48. dynamicforms-0.76.14/dynamicforms/filters.py +44 -0
  49. dynamicforms-0.76.14/dynamicforms/locale/en/LC_MESSAGES/django.po +67 -0
  50. dynamicforms-0.76.14/dynamicforms/locale/en/LC_MESSAGES/djangojs.po +31 -0
  51. dynamicforms-0.76.14/dynamicforms/locale/sl/LC_MESSAGES/django.po +71 -0
  52. dynamicforms-0.76.14/dynamicforms/locale/sl/LC_MESSAGES/djangojs.po +36 -0
  53. dynamicforms-0.76.14/dynamicforms/management/__init__.py +0 -0
  54. dynamicforms-0.76.14/dynamicforms/management/commands/__init__.py +0 -0
  55. dynamicforms-0.76.14/dynamicforms/management/commands/clean_dfpreuploaded_files.py +26 -0
  56. dynamicforms-0.76.14/dynamicforms/migrations/__init__.py +0 -0
  57. dynamicforms-0.76.14/dynamicforms/mixins/__init__.py +27 -0
  58. dynamicforms-0.76.14/dynamicforms/mixins/action.py +14 -0
  59. dynamicforms-0.76.14/dynamicforms/mixins/choice/__init__.py +94 -0
  60. dynamicforms-0.76.14/dynamicforms/mixins/choice/allow_tags.py +79 -0
  61. dynamicforms-0.76.14/dynamicforms/mixins/choice/null_choice.py +26 -0
  62. dynamicforms-0.76.14/dynamicforms/mixins/choice/single_choice.py +21 -0
  63. dynamicforms-0.76.14/dynamicforms/mixins/color_field.py +4 -0
  64. dynamicforms-0.76.14/dynamicforms/mixins/conditional_visibility.py +193 -0
  65. dynamicforms-0.76.14/dynamicforms/mixins/enable_copy.py +4 -0
  66. dynamicforms-0.76.14/dynamicforms/mixins/field_render.py +209 -0
  67. dynamicforms-0.76.14/dynamicforms/mixins/file_field.py +5 -0
  68. dynamicforms-0.76.14/dynamicforms/mixins/help_text.py +46 -0
  69. dynamicforms-0.76.14/dynamicforms/mixins/implicit_hidden.py +7 -0
  70. dynamicforms-0.76.14/dynamicforms/mixins/implicit_natural_date.py +88 -0
  71. dynamicforms-0.76.14/dynamicforms/mixins/null_value.py +15 -0
  72. dynamicforms-0.76.14/dynamicforms/mixins/password_field.py +23 -0
  73. dynamicforms-0.76.14/dynamicforms/mixins/related_field_ajax.py +142 -0
  74. dynamicforms-0.76.14/dynamicforms/mixins/rtf_field.py +58 -0
  75. dynamicforms-0.76.14/dynamicforms/models.py +5 -0
  76. dynamicforms-0.76.14/dynamicforms/models_utils.py +33 -0
  77. dynamicforms-0.76.14/dynamicforms/pagination.py +175 -0
  78. dynamicforms-0.76.14/dynamicforms/preupload_files.py +42 -0
  79. dynamicforms-0.76.14/dynamicforms/progress.py +71 -0
  80. dynamicforms-0.76.14/dynamicforms/renderers.py +1 -0
  81. dynamicforms-0.76.14/dynamicforms/routers.py +36 -0
  82. dynamicforms-0.76.14/dynamicforms/serializers.py +486 -0
  83. dynamicforms-0.76.14/dynamicforms/struct.py +40 -0
  84. dynamicforms-0.76.14/dynamicforms/template_render/__init__.py +10 -0
  85. dynamicforms-0.76.14/dynamicforms/template_render/layout.py +178 -0
  86. dynamicforms-0.76.14/dynamicforms/template_render/mixins/__init__.py +0 -0
  87. dynamicforms-0.76.14/dynamicforms/template_render/mixins/base.py +39 -0
  88. dynamicforms-0.76.14/dynamicforms/template_render/mixins/field.py +74 -0
  89. dynamicforms-0.76.14/dynamicforms/template_render/mixins/listserializer.py +100 -0
  90. dynamicforms-0.76.14/dynamicforms/template_render/mixins/render_mode_enum.py +8 -0
  91. dynamicforms-0.76.14/dynamicforms/template_render/mixins/serializer.py +301 -0
  92. dynamicforms-0.76.14/dynamicforms/template_render/mixins/serializer_filter.py +19 -0
  93. dynamicforms-0.76.14/dynamicforms/template_render/mixins/serializer_render_actions.py +21 -0
  94. dynamicforms-0.76.14/dynamicforms/template_render/mixins/serializer_render_fields.py +57 -0
  95. dynamicforms-0.76.14/dynamicforms/template_render/mixins/util.py +9 -0
  96. dynamicforms-0.76.14/dynamicforms/template_render/renderer.py +38 -0
  97. dynamicforms-0.76.14/dynamicforms/template_render/responsive_table_layout.py +64 -0
  98. dynamicforms-0.76.14/dynamicforms/urls.py +9 -0
  99. dynamicforms-0.76.14/dynamicforms/utils.py +32 -0
  100. dynamicforms-0.76.14/dynamicforms/views.py +1 -0
  101. dynamicforms-0.76.14/dynamicforms/viewsets.py +421 -0
  102. dynamicforms-0.76.14/dynamicforms_dev/__init__.py +0 -0
  103. dynamicforms-0.76.14/dynamicforms_dev/management/__init__.py +0 -0
  104. dynamicforms-0.76.14/dynamicforms_dev/management/commands/__init__.py +0 -0
  105. dynamicforms-0.76.14/dynamicforms_dev/management/commands/generate_fields.py +475 -0
  106. dynamicforms-0.76.14/dynamicforms_dev/management/commands/npm_run.py +28 -0
  107. dynamicforms-0.76.14/dynamicforms_legacy/__init__.py +8 -0
  108. dynamicforms-0.76.14/dynamicforms_legacy/action.py +561 -0
  109. dynamicforms-0.76.14/dynamicforms_legacy/apps.py +5 -0
  110. dynamicforms-0.76.14/dynamicforms_legacy/context_processors.py +27 -0
  111. dynamicforms-0.76.14/dynamicforms_legacy/dynamicforms_migration_mixin.py +42 -0
  112. dynamicforms-0.76.14/dynamicforms_legacy/fields.py +1108 -0
  113. dynamicforms-0.76.14/dynamicforms_legacy/filters.py +44 -0
  114. dynamicforms-0.76.14/dynamicforms_legacy/migrations/__init__.py +0 -0
  115. dynamicforms-0.76.14/dynamicforms_legacy/mixins/__init__.py +16 -0
  116. dynamicforms-0.76.14/dynamicforms_legacy/mixins/action.py +14 -0
  117. dynamicforms-0.76.14/dynamicforms_legacy/mixins/allow_tags.py +85 -0
  118. dynamicforms-0.76.14/dynamicforms_legacy/mixins/enable_copy.py +4 -0
  119. dynamicforms-0.76.14/dynamicforms_legacy/mixins/file_field.py +5 -0
  120. dynamicforms-0.76.14/dynamicforms_legacy/mixins/help_text.py +38 -0
  121. dynamicforms-0.76.14/dynamicforms_legacy/mixins/implicit_hidden.py +7 -0
  122. dynamicforms-0.76.14/dynamicforms_legacy/mixins/implicit_natural_date.py +86 -0
  123. dynamicforms-0.76.14/dynamicforms_legacy/mixins/null_choice.py +26 -0
  124. dynamicforms-0.76.14/dynamicforms_legacy/mixins/null_value.py +15 -0
  125. dynamicforms-0.76.14/dynamicforms_legacy/mixins/password_field.py +19 -0
  126. dynamicforms-0.76.14/dynamicforms_legacy/mixins/related_field_ajax.py +58 -0
  127. dynamicforms-0.76.14/dynamicforms_legacy/mixins/render.py +203 -0
  128. dynamicforms-0.76.14/dynamicforms_legacy/mixins/rtf_field.py +52 -0
  129. dynamicforms-0.76.14/dynamicforms_legacy/mixins/single_choice.py +21 -0
  130. dynamicforms-0.76.14/dynamicforms_legacy/models.py +5 -0
  131. dynamicforms-0.76.14/dynamicforms_legacy/pagination.py +168 -0
  132. dynamicforms-0.76.14/dynamicforms_legacy/progress.py +71 -0
  133. dynamicforms-0.76.14/dynamicforms_legacy/renderers.py +183 -0
  134. dynamicforms-0.76.14/dynamicforms_legacy/serializers.py +335 -0
  135. dynamicforms-0.76.14/dynamicforms_legacy/settings.py +196 -0
  136. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +587 -0
  137. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -0
  138. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +6 -0
  139. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -0
  140. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css +6834 -0
  141. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -0
  142. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css +6 -0
  143. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -0
  144. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.eot +0 -0
  145. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.svg +288 -0
  146. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  147. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff +0 -0
  148. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  149. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.js +2580 -0
  150. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.min.js +6 -0
  151. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/npm.js +13 -0
  152. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css +3719 -0
  153. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map +1 -0
  154. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css +7 -0
  155. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map +1 -0
  156. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css +331 -0
  157. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map +1 -0
  158. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css +8 -0
  159. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map +1 -0
  160. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css +10038 -0
  161. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css.map +1 -0
  162. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css +7 -0
  163. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css.map +1 -0
  164. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js +7013 -0
  165. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map +1 -0
  166. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js +7 -0
  167. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map +1 -0
  168. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js +4435 -0
  169. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js.map +1 -0
  170. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js +7 -0
  171. dynamicforms-0.76.14/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js.map +1 -0
  172. dynamicforms-0.76.14/dynamicforms_legacy/static/ckeditor-df/ckEditorCustomBuildReadMe.txt +255 -0
  173. dynamicforms-0.76.14/dynamicforms_legacy/static/ckeditor-df/ckeditor.js +6 -0
  174. dynamicforms-0.76.14/dynamicforms_legacy/static/dynamicforms/dynamicforms.js +1883 -0
  175. dynamicforms-0.76.14/dynamicforms_legacy/static/dynamicforms/icons/copy.svg +7 -0
  176. dynamicforms-0.76.14/dynamicforms_legacy/static/dynamicforms/icons/eye-off-outline.svg +10 -0
  177. dynamicforms-0.76.14/dynamicforms_legacy/static/dynamicforms/icons/eye-outline.svg +7 -0
  178. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  179. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  180. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  181. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  182. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  183. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  184. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  185. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  186. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_222222_256x240.png +0 -0
  187. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_228ef1_256x240.png +0 -0
  188. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ef8c08_256x240.png +0 -0
  189. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffd27a_256x240.png +0 -0
  190. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffffff_256x240.png +0 -0
  191. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.min.css +7 -0
  192. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.structure.min.css +5 -0
  193. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.theme.min.css +5 -0
  194. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/js/jquery-3.3.1.min.js +2 -0
  195. dynamicforms-0.76.14/dynamicforms_legacy/static/jquery_ui/js/jquery-ui.min.js +13 -0
  196. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/css/select2-bootstrap3.min.css +7 -0
  197. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/css/select2-bootstrap4.min.css +578 -0
  198. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/css/select2.min.css +1 -0
  199. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/af.js +3 -0
  200. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ar.js +3 -0
  201. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/az.js +3 -0
  202. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bg.js +3 -0
  203. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bs.js +3 -0
  204. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ca.js +3 -0
  205. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/cs.js +3 -0
  206. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/da.js +3 -0
  207. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/de.js +3 -0
  208. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/dsb.js +3 -0
  209. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/el.js +3 -0
  210. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/en.js +3 -0
  211. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/es.js +3 -0
  212. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/et.js +3 -0
  213. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/eu.js +3 -0
  214. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fa.js +3 -0
  215. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fi.js +3 -0
  216. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fr.js +3 -0
  217. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/gl.js +3 -0
  218. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/he.js +3 -0
  219. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hi.js +3 -0
  220. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hr.js +3 -0
  221. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hsb.js +3 -0
  222. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hu.js +3 -0
  223. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hy.js +3 -0
  224. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/id.js +3 -0
  225. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/is.js +3 -0
  226. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/it.js +3 -0
  227. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ja.js +3 -0
  228. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/km.js +3 -0
  229. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ko.js +3 -0
  230. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lt.js +3 -0
  231. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lv.js +3 -0
  232. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/mk.js +3 -0
  233. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ms.js +3 -0
  234. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nb.js +3 -0
  235. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nl.js +3 -0
  236. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pl.js +3 -0
  237. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ps.js +3 -0
  238. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt-BR.js +3 -0
  239. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt.js +3 -0
  240. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ro.js +3 -0
  241. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ru.js +3 -0
  242. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sk.js +3 -0
  243. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sl.js +3 -0
  244. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr-Cyrl.js +3 -0
  245. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr.js +3 -0
  246. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sv.js +3 -0
  247. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/th.js +3 -0
  248. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/tr.js +3 -0
  249. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/uk.js +3 -0
  250. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/vi.js +3 -0
  251. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-CN.js +3 -0
  252. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-TW.js +3 -0
  253. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.js +6457 -0
  254. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.min.js +1 -0
  255. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.js +5746 -0
  256. dynamicforms-0.76.14/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.min.js +1 -0
  257. dynamicforms-0.76.14/dynamicforms_legacy/struct.py +40 -0
  258. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base.html +12 -0
  259. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_form.html +44 -0
  260. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_includes.html +51 -0
  261. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_includes_select2.html +6 -0
  262. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_list.html +47 -0
  263. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_table_body.html +46 -0
  264. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/base_table_filter.html +44 -0
  265. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_form.html +10 -0
  266. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes.html +46 -0
  267. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v3.html +90 -0
  268. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v4.html +77 -0
  269. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_list.html +9 -0
  270. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_body.html +4 -0
  271. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_filter.html +5 -0
  272. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field.html +41 -0
  273. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v3.html +11 -0
  274. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v4.html +11 -0
  275. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox.html +7 -0
  276. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox_multiple.html +7 -0
  277. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/fieldset.html +21 -0
  278. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/form.html +4 -0
  279. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/input.html +31 -0
  280. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/list_fieldset.html +18 -0
  281. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/radio.html +8 -0
  282. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/rtf_field.html +4 -0
  283. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select.html +46 -0
  284. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select_multiple.html +17 -0
  285. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/textarea.html +4 -0
  286. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog.html +13 -0
  287. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog_rest.html +23 -0
  288. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/bootstrap/page.html +11 -0
  289. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/base_field.html +55 -0
  290. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/checkbox.html +28 -0
  291. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/checkbox_multiple.html +16 -0
  292. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/dict_field.html +4 -0
  293. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/fieldset.html +4 -0
  294. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/form.html +18 -0
  295. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/input.html +31 -0
  296. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/list_field.html +4 -0
  297. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/list_fieldset.html +4 -0
  298. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/radio.html +24 -0
  299. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/rtf_field.html +14 -0
  300. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/select.html +97 -0
  301. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/select_multiple.html +67 -0
  302. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/field/textarea.html +13 -0
  303. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_form.html +13 -0
  304. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_includes.html +225 -0
  305. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_list.html +9 -0
  306. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_body.html +4 -0
  307. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_filter.html +5 -0
  308. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/base_field.html +16 -0
  309. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox.html +7 -0
  310. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox_multiple.html +9 -0
  311. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/fieldset.html +11 -0
  312. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/form.html +4 -0
  313. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/input.html +17 -0
  314. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/list_fieldset.html +6 -0
  315. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/radio.html +8 -0
  316. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/rtf_field.html +4 -0
  317. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select.html +37 -0
  318. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select_multiple.html +18 -0
  319. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/textarea.html +4 -0
  320. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog.html +2 -0
  321. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog_rest.html +27 -0
  322. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/jquery_ui/page.html +20 -0
  323. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/modal_dialog.html +4 -0
  324. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/modal_dialog_rest.html +18 -0
  325. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/page.html +25 -0
  326. dynamicforms-0.76.14/dynamicforms_legacy/templates/dynamicforms/rtf_field_style.html +41 -0
  327. dynamicforms-0.76.14/dynamicforms_legacy/templatetags/__init__.py +0 -0
  328. dynamicforms-0.76.14/dynamicforms_legacy/templatetags/dynamicforms.py +475 -0
  329. dynamicforms-0.76.14/dynamicforms_legacy/urls.py +8 -0
  330. dynamicforms-0.76.14/dynamicforms_legacy/views.py +1 -0
  331. dynamicforms-0.76.14/dynamicforms_legacy/viewsets.py +366 -0
  332. dynamicforms-0.76.14/examples/__init__.py +0 -0
  333. dynamicforms-0.76.14/examples/admin.py +3 -0
  334. dynamicforms-0.76.14/examples/apps.py +5 -0
  335. dynamicforms-0.76.14/examples/enum_field.py +25 -0
  336. dynamicforms-0.76.14/examples/migrations/0001_initial.py +209 -0
  337. dynamicforms-0.76.14/examples/migrations/0002_auto_20190320_0823.py +17 -0
  338. dynamicforms-0.76.14/examples/migrations/0003_filter_name.py +28 -0
  339. dynamicforms-0.76.14/examples/migrations/0004_basicfields_password_field.py +17 -0
  340. dynamicforms-0.76.14/examples/migrations/0005_advancedfields_file_field_two.py +17 -0
  341. dynamicforms-0.76.14/examples/migrations/0005_refreshtype_rich_text_field.py +17 -0
  342. dynamicforms-0.76.14/examples/migrations/0006_merge_20200921_1152.py +12 -0
  343. dynamicforms-0.76.14/examples/migrations/0007_basicfields_nullint_field.py +17 -0
  344. dynamicforms-0.76.14/examples/migrations/0008_auto_20210303_0904.py +29 -0
  345. dynamicforms-0.76.14/examples/migrations/0008_auto_20210312_1146.py +17 -0
  346. dynamicforms-0.76.14/examples/migrations/0009_auto_20210929_1136.py +32 -0
  347. dynamicforms-0.76.14/examples/migrations/0010_filter_rtf_field.py +17 -0
  348. dynamicforms-0.76.14/examples/migrations/0011_auto_20211120_0523.py +79 -0
  349. dynamicforms-0.76.14/examples/migrations/__init__.py +35 -0
  350. dynamicforms-0.76.14/examples/models.py +288 -0
  351. dynamicforms-0.76.14/examples/recurrence_utils.py +189 -0
  352. dynamicforms-0.76.14/examples/rest/__init__.py +36 -0
  353. dynamicforms-0.76.14/examples/rest/actions_overview.py +91 -0
  354. dynamicforms-0.76.14/examples/rest/advanced_fields.py +123 -0
  355. dynamicforms-0.76.14/examples/rest/basic_fields.py +91 -0
  356. dynamicforms-0.76.14/examples/rest/calculated_css_class_for_table_row.py +26 -0
  357. dynamicforms-0.76.14/examples/rest/calendar.py +89 -0
  358. dynamicforms-0.76.14/examples/rest/calendar_dependencies.py +148 -0
  359. dynamicforms-0.76.14/examples/rest/calendar_recurrence.py +148 -0
  360. dynamicforms-0.76.14/examples/rest/calendar_reminders.py +27 -0
  361. dynamicforms-0.76.14/examples/rest/choice_allow_tags_fields.py +43 -0
  362. dynamicforms-0.76.14/examples/rest/document.py +26 -0
  363. dynamicforms-0.76.14/examples/rest/fields/__init__.py +0 -0
  364. dynamicforms-0.76.14/examples/rest/fields/df_file_field.py +75 -0
  365. dynamicforms-0.76.14/examples/rest/fields/name_field.py +11 -0
  366. dynamicforms-0.76.14/examples/rest/filter.py +41 -0
  367. dynamicforms-0.76.14/examples/rest/hidden_fields.py +35 -0
  368. dynamicforms-0.76.14/examples/rest/page_load.py +31 -0
  369. dynamicforms-0.76.14/examples/rest/relation.py +25 -0
  370. dynamicforms-0.76.14/examples/rest/single_dialog.py +96 -0
  371. dynamicforms-0.76.14/examples/rest/validated.py +43 -0
  372. dynamicforms-0.76.14/examples/rest/write_only_fields.py +27 -0
  373. dynamicforms-0.76.14/examples/tests.py +3 -0
  374. dynamicforms-0.76.14/examples/urls.py +13 -0
  375. dynamicforms-0.76.14/manage.py +32 -0
  376. dynamicforms-0.76.14/package-lock.json +14267 -0
  377. dynamicforms-0.76.14/package.json +42 -0
  378. dynamicforms-0.76.14/publish.py +108 -0
  379. dynamicforms-0.76.14/pyproject.toml +92 -0
  380. dynamicforms-0.76.14/readthedocs.yml +8 -0
  381. dynamicforms-0.76.14/requirements.txt +12 -0
  382. dynamicforms-0.76.14/requirements_test_functional.txt +7 -0
  383. dynamicforms-0.76.14/setup/__init__.py +0 -0
  384. dynamicforms-0.76.14/setup/settings.py +176 -0
  385. dynamicforms-0.76.14/setup/urls.py +26 -0
  386. dynamicforms-0.76.14/setup/wsgi.py +16 -0
  387. dynamicforms-0.76.14/tests/__init__.py +0 -0
  388. dynamicforms-0.76.14/tests/functional/__init__.py +0 -0
  389. dynamicforms-0.76.14/tests/functional/_test_advanced_fields.py +172 -0
  390. dynamicforms-0.76.14/tests/functional/_test_basic_fields.py +294 -0
  391. dynamicforms-0.76.14/tests/functional/_test_filter.py +209 -0
  392. dynamicforms-0.76.14/tests/functional/_test_hidden_fields.py +79 -0
  393. dynamicforms-0.76.14/tests/functional/_test_page_load.py +52 -0
  394. dynamicforms-0.76.14/tests/functional/_test_single_dialog.py +68 -0
  395. dynamicforms-0.76.14/tests/functional/_test_validated.py +416 -0
  396. dynamicforms-0.76.14/tests/functional/_tests.py +83 -0
  397. dynamicforms-0.76.14/tests/functional/select.py +148 -0
  398. dynamicforms-0.76.14/tests/functional/selenium_test_case.py +367 -0
  399. dynamicforms-0.76.14/tests/request_sync.py +53 -0
  400. dynamicforms-0.76.14/tests/static_files/0_3142.prj +1 -0
  401. dynamicforms-0.76.14/tests/unit/__init__.py +0 -0
  402. dynamicforms-0.76.14/tests/unit/test_calendar.py +957 -0
  403. dynamicforms-0.76.14/tests/unit/test_conditional_visibility.py +101 -0
  404. dynamicforms-0.76.14/tests/unit/test_cursor_pagination.py +191 -0
  405. dynamicforms-0.76.14/tests/unit/test_df_serializer.py +30 -0
  406. dynamicforms-0.76.14/tests/unit/test_filter.py +37 -0
  407. dynamicforms-0.76.14/tests/unit/test_page_load.py +55 -0
  408. dynamicforms-0.76.14/tests/unit/test_struct.py +58 -0
  409. dynamicforms-0.76.14/tests/unit/test_validate_allow_null_for_field_with_source_equal_to_star.py +46 -0
  410. dynamicforms-0.76.14/tests/unit/tests.py +63 -0
  411. dynamicforms-0.76.14/tox.ini +40 -0
  412. dynamicforms-0.76.14/tsconfig.build.json +10 -0
  413. dynamicforms-0.76.14/tsconfig.eslint.json +12 -0
  414. dynamicforms-0.76.14/tsconfig.json +10 -0
@@ -0,0 +1,2 @@
1
+ # sample .actrc file
2
+ -P ubuntu-latest=nektos/act-environments-ubuntu:18.04
@@ -0,0 +1,15 @@
1
+ [run]
2
+ plugins =
3
+ django_coverage_plugin
4
+
5
+ source = dynamicforms
6
+
7
+ omit =
8
+ doc/*
9
+ tests/*
10
+ setup/wsgi.py
11
+ rest_framework/*
12
+
13
+ [report]
14
+ show_missing = true
15
+ precision = 2
@@ -0,0 +1,183 @@
1
+ name: Python tests
2
+ on: [push]
3
+ env:
4
+ GITHUB_ACTIONS: 1
5
+
6
+ jobs:
7
+ ubuntu_firefox:
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ matrix:
11
+ python: [3.9, "3.10"]
12
+ fail-fast: false
13
+
14
+ env:
15
+ BROWSER_SELENIUM: 'FIREFOX;{"headless": true, "binary_location": "/usr/bin/firefox"}'
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ - name: Prepare Selenium enviroment
20
+ run: |
21
+ #Download geckodriver
22
+ wget https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz
23
+ #Extract geckodriver
24
+ tar -xvzf geckodriver*
25
+ #Make geckodriver executable
26
+ chmod +x geckodriver
27
+ #Move geckodriver
28
+ sudo mv geckodriver /usr/local/bin/
29
+
30
+ - name: Setup Python
31
+ uses: actions/setup-python@v4
32
+ with:
33
+ python-version: ${{ matrix.python }}
34
+ - name: Install Tox and any other packages
35
+ run: |
36
+ pip install versio
37
+ pip install tox
38
+
39
+ - name: Run Tox py-django3
40
+ if: (success() || failure())
41
+ run: tox -e py-django32-drf314
42
+
43
+ - name: Run Tox py-django4
44
+ if: (success() || failure())
45
+ run: tox -e py-django42-drf314,py-django42-drftip
46
+
47
+ - name: Run Tox py-djangotip-drftip
48
+ if: (success() || failure())
49
+ continue-on-error: true
50
+ run: tox -e py-djangotip-drftip
51
+
52
+ # TODO: uncomment tests when JSON field is supported for older versions and other browsers tested
53
+
54
+ # ubuntu_chrome:
55
+ # runs-on: ubuntu-latest
56
+ # strategy:
57
+ # matrix:
58
+ # python: [3.8, 3.9]
59
+ # fail-fast: false
60
+ #
61
+ # env:
62
+ # BROWSER_SELENIUM: 'CHROME;{"no-sandbox": true, "window-size": "1420,1080", "headless": true, "disable-gpu": true}'
63
+ #
64
+ # steps:
65
+ # - uses: actions/checkout@v1
66
+ # - uses: nanasess/setup-chromedriver@master
67
+ # - run: |
68
+ # export DISPLAY=:99
69
+ # chromedriver --url-base=/wd/hub &
70
+ # sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
71
+ #
72
+ # - name: Setup Python
73
+ # uses: actions/setup-python@v1
74
+ # with:
75
+ # python-version: ${{ matrix.python }}
76
+ # - name: Install Tox and any other packages
77
+ # run: |
78
+ # pip install tox
79
+ #
80
+ # - name: Run Tox py-django22
81
+ # if: success() || failure()
82
+ # continue-on-error: true
83
+ # run: tox -e py-django22-drf310,py-django22-drf311,py-django22-drf312,py-django22-drftip
84
+ #
85
+ # - name: Run Tox py-django30
86
+ # if: success() || failure()
87
+ # continue-on-error: true
88
+ # run: tox -e py-django30-drf310,py-django30-drf311,py-django30-drf312,py-django30-drftip
89
+ #
90
+ # - name: Run Tox py-django31
91
+ # if: (success() || failure())
92
+ # continue-on-error: true
93
+ # run: tox -e py-django31-drf311,py-django31-drf312,py-django31-drftip
94
+ #
95
+ # - name: Run Tox py-djangotip-drftip
96
+ # if: (success() || failure())
97
+ # continue-on-error: true
98
+ # run: tox -e py-djangotip-drftip
99
+ #
100
+ # macos_safari:
101
+ # runs-on: macos-latest
102
+ # strategy:
103
+ # matrix:
104
+ # python: [3.8, 3.9]
105
+ # fail-fast: false
106
+ # max-parallel: 1
107
+ #
108
+ # # Da bodo delali fukcionalni testi v Safariju morajo najprej urediti issue https://github.com/actions/virtual-environments/issues/91
109
+ # env:
110
+ # BROWSER_SELENIUM: 'SAFARI'
111
+ #
112
+ # steps:
113
+ # - uses: actions/checkout@v1
114
+ # - run: sudo safaridriver --enable
115
+ #
116
+ # - name: Setup Python
117
+ # uses: actions/setup-python@v1
118
+ # with:
119
+ # python-version: ${{ matrix.python }}
120
+ #
121
+ # - name: Install Tox and any other packages
122
+ # run: |
123
+ # pip install versio
124
+ # pip install tox
125
+ #
126
+ # - name: Run Tox py-django22
127
+ # if: success() || failure()
128
+ # continue-on-error: true
129
+ # run: tox -e py-django22-drf310,py-django22-drf311,py-django22-drf312,py-django22-drftip
130
+ #
131
+ # - name: Run Tox py-django30
132
+ # if: success() || failure()
133
+ # continue-on-error: true
134
+ # run: tox -e py-django30-drf310,py-django30-drf311,py-django30-drf312,py-django30-drftip
135
+ #
136
+ # - name: Run Tox py-django31
137
+ # if: (success() || failure())
138
+ # continue-on-error: true
139
+ # run: tox -e py-django31-drf311,py-django31-drf312,py-django31-drftip
140
+ #
141
+ # - name: Run Tox py-djangotip-drftip
142
+ # if: (success() || failure())
143
+ # continue-on-error: true
144
+ # run: tox -e py-djangotip-drftip
145
+
146
+ # win_edge:
147
+ # runs-on: windows-latest
148
+ # strategy:
149
+ # matrix:
150
+ # python: [3.8, 3.9]
151
+ # fail-fast: false
152
+ #
153
+ # # Da bodo delali fukcionalni testi v Edge-ju morajo najprej urediti issue https://github.com/actions/virtual-environments/issues/99
154
+ # env:
155
+ # BROWSER_SELENIUM: 'EDGE'
156
+ #
157
+ # steps:
158
+ # - uses: actions/checkout@v1
159
+ # - name: Setup Python
160
+ # uses: actions/setup-python@v1
161
+ # with:
162
+ # python-version: ${{ matrix.python }}
163
+ # - name: Install Tox and any other packages
164
+ # run: |
165
+ # pip install versio
166
+ # pip install tox
167
+ #
168
+ # - name: Run Tox py-django22
169
+ # if: success() || failure()
170
+ # run: tox -e py-django22-drf310,py-django22-drf311,py-django22-drf312,py-django22-drftip
171
+ #
172
+ # - name: Run Tox py-django30
173
+ # if: success() || failure()
174
+ # run: tox -e py-django30-drf310,py-django30-drf311,py-django30-drf312,py-django30-drftip
175
+ #
176
+ # - name: Run Tox py-django31
177
+ # if: (success() || failure())
178
+ # run: tox -e py-django31-drf311,py-django31-drf312,py-django31-drftip
179
+ #
180
+ # - name: Run Tox py-djangotip-drftip
181
+ # if: (success() || failure())
182
+ # continue-on-error: true
183
+ # run: tox -e py-djangotip-drftip
@@ -0,0 +1,12 @@
1
+ name: Code check
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ lint:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v3
10
+ - uses: chartboost/ruff-action@v1
11
+ with:
12
+ args: "check --diff"
@@ -0,0 +1,23 @@
1
+ name: Python check documentation
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ matrix:
11
+ python: [3.9]
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - name: Setup Python
16
+ uses: actions/setup-python@v4
17
+ with:
18
+ python-version: ${{ matrix.python }}
19
+ - name: Install Tox and any other packages
20
+ run: |
21
+ pip install tox
22
+ - name: Run Tox
23
+ run: tox -e doc
@@ -0,0 +1,73 @@
1
+ name: Coverage check
2
+ on: [push, pull_request]
3
+ env:
4
+ UNITTEST: 1
5
+ jobs:
6
+ lint:
7
+ name: Code coverage
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ with:
12
+ fetch-depth: 2
13
+ - name: Setup PostgreSQL With Init Scripts
14
+ uses: m4nu56/postgresql-action@1.0
15
+ with:
16
+ postgresql db: scantron
17
+ postgresql user: scantron
18
+ postgresql password: scantron
19
+ - name: Use Node.js
20
+ uses: actions/setup-node@v3
21
+ with:
22
+ node-version: '18.13.0'
23
+ - name: Install Dependencies
24
+ run: npm ci
25
+ - name: Test build
26
+ run: npm run build-no-tsc --if-present
27
+ - name: Run tests
28
+ run: npm test
29
+ - name: Set up Python 3.9
30
+ uses: actions/setup-python@v4
31
+ with:
32
+ python-version: "3.9"
33
+ - name: PIP install
34
+ run: |
35
+ pip3 install -r requirements.txt
36
+ pip3 install -r requirements_test_functional.txt
37
+ - name: Python unittest
38
+ continue-on-error: true
39
+ run: |
40
+ python -m coverage run manage.py test
41
+ - name: Generate coverage report
42
+ continue-on-error: true
43
+ run: |
44
+ coverage report -m
45
+ coverage json
46
+
47
+ - name: Coverage check on pull_request
48
+ uses: velis74/incremental-coverage-check@main
49
+ with:
50
+ clover_coverage_json: vue/dynamicforms/coverage/coverage-final.json
51
+ py_coverage_json: coverage.json
52
+ logging_level: INFO
53
+ base_ref: ${{ github.base_ref }}
54
+ head_ref: HEAD
55
+ rep_ref: main
56
+ gh_token: ${{ secrets.GITHUB_TOKEN }}
57
+ pr_number: ${{github.event.pull_request.number}}
58
+ if: github.event_name == 'pull_request'
59
+
60
+ - name: Coverage check on push
61
+ uses: velis74/incremental-coverage-check@main
62
+ with:
63
+ clover_coverage_json: vue/dynamicforms/coverage/coverage-final.json
64
+ py_coverage_json: coverage.json
65
+ logging_level: INFO
66
+ base_ref: ${{ github.event.before }}
67
+ head_ref: HEAD
68
+ rep_ref: main
69
+ if: github.event_name == 'push'
70
+
71
+ - name: The job has failed
72
+ run: exit 1
73
+ if: ${{ failure() }}
@@ -0,0 +1,20 @@
1
+ name: Vitest Tests
2
+ on: [push]
3
+
4
+ jobs:
5
+ build:
6
+ runs-on: ubuntu-latest
7
+ timeout-minutes: 10
8
+
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - name: Use Node.js
12
+ uses: actions/setup-node@v3
13
+ with:
14
+ node-version: '18.13.0'
15
+ - name: Install Dependencies
16
+ run: npm ci
17
+ - name: Test build
18
+ run: npm run build-no-tsc --if-present
19
+ - name: Run tests
20
+ run: npm test
@@ -0,0 +1,39 @@
1
+ /DynamicForms.egg-info
2
+ *.pyc
3
+ *~
4
+ .idea
5
+ *.bak
6
+ .#*
7
+ \#*
8
+ *.db
9
+ *.tmp
10
+ *.mo
11
+ .tox
12
+ rest_framework
13
+ db.sqlite3
14
+ /docs/_build/
15
+ /docs/.vitepress/cache/**/*
16
+ /geckodriver.log
17
+ venv/
18
+ .venv/
19
+ media
20
+ /node_modules
21
+ /coverage
22
+ /dynamicforms/static/ckeditor5/
23
+ /dynamicforms/vue/node_modules/
24
+ /dynamicforms/vue/package-lock.json
25
+ /vue/dynamicforms/README.md
26
+ /dist/
27
+ setup/env.py
28
+
29
+ # Local configuration
30
+ .env.local
31
+
32
+ # Make sure to add .vitepress/dist and .vitepress/cache to your .gitignore file.
33
+ .vitepress/dist
34
+ .vitepress/cache
35
+
36
+ # Coverage generated files
37
+ coverage/
38
+ .coverage
39
+ .coverage.json
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright © 2017-present, Jure Erznožnik.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ include README.rst
2
+ include LICENSE.rst
3
+ include requirements.txt
4
+ include requirements_test_functional.txt
5
+ recursive-include dynamicforms *
6
+ recursive-include dynamicforms_legacy *
7
+ global-exclude __pycache__
8
+ global-exclude *.py[co]
@@ -0,0 +1,129 @@
1
+ Metadata-Version: 2.3
2
+ Name: dynamicforms
3
+ Version: 0.76.14
4
+ Summary: DynamicForms performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own
5
+ Project-URL: Homepage, https://github.com/velis74/DynamicForms
6
+ Project-URL: Repository, https://github.com/velis74/DynamicForms
7
+ Project-URL: Bug Tracker, https://github.com/velis74/DynamicForms/issues
8
+ Author-email: Jure Erznožnik <jure@velis.si>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Framework :: Django
13
+ Classifier: License :: OSI Approved :: BSD License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Requires-Python: >=3.8
17
+ Requires-Dist: coreapi>=1.32
18
+ Requires-Dist: django-cors-headers
19
+ Requires-Dist: django-enumfields>=2.1.1
20
+ Requires-Dist: django-filter
21
+ Requires-Dist: django>=2
22
+ Requires-Dist: djangorestframework>=3.14
23
+ Requires-Dist: jsonschema
24
+ Requires-Dist: pillow
25
+ Requires-Dist: pytz
26
+ Requires-Dist: ruff
27
+ Requires-Dist: ruff-lsp
28
+ Requires-Dist: versio
29
+ Description-Content-Type: text/markdown
30
+
31
+ # Notice to users of this library
32
+
33
+ Releases 0.50.x and 0.70.x are interim releases with which we prepare the stage for 1.x release.
34
+
35
+ 0.50.x moves all "existing" code to `dynamicforms_legacy` module. If you weren't following vue
36
+ development branches, you will need to change all imports in python to this "new" module.
37
+
38
+ This is done to keep legacy code still running as existing code is transitioned to vue-based approach. Unless there is
39
+ significant interest, we will remove this module with 1.x release.
40
+
41
+ 0.70.x re-introduces `dynamicforms` module, but this time refactored to only provide .componentdef OPTIONS +
42
+ payload data responses needed by the vue front-end library. This will hopefully be refactored to be more OpenAPI
43
+ compatible. The new primary branch is now `main`.
44
+
45
+ HTML renderers will no longer be supported and have been removed from the "new" dynamicforms module. It was too slow
46
+ and required too many hacks to remain viable. So we moved to Vue. The components in 0.70 will be vue3, vuetify3, vite
47
+ and typescript-compatible. We're in final stages of adapting to the new stack. Some inputs and some table functionality
48
+ isn't working yet.
49
+
50
+ We're keeping the Bootstrap stubs too, but not actively developing to support seamless selection of the two frameworks.
51
+ If there is interest to support CSS frameworks other than Vuetify, pull requests welcome. Hopefully the stubs should
52
+ point the way on how to do it.
53
+
54
+ Migration path is thus:
55
+
56
+ - Upgrade to dynamicforms \>= 0.50.3
57
+ - replace all dynamicforms imports with dynamicforms_legacy
58
+ - because of the rename, there is a bit of work required in settings.py so that Django can find the templates and
59
+ filters:
60
+
61
+ ``` python
62
+ from dynamicforms_legacy import __file__ as DYNAMICFORMS_BASEDIR_FILE
63
+ DYNAMICFORMS_BASEDIR = os.path.dirname(DYNAMICFORMS_BASEDIR_FILE)
64
+ ...
65
+ INSTALLED_APPS = [
66
+ ...
67
+ 'dynamicforms_legacy'
68
+
69
+ TEMPLATES = [
70
+ ...
71
+ 'DIRS': [
72
+ os.path.join(DYNAMICFORMS_BASEDIR, 'templates'),
73
+ ...
74
+ 'OPTIONS': {
75
+ ...
76
+ 'libraries': {
77
+ 'dynamicforms': 'dynamicforms_legacy.templatetags.dynamicforms',
78
+ }
79
+ STATICFILES_DIRS = [
80
+ ...
81
+ os.path.join(DYNAMICFORMS_BASEDIR, 'static'),
82
+ ]
83
+ ```
84
+ - replace any javascript dynamicforms progress calls with progress-legacy
85
+ - all other javascript code remains the same (including the dynamicforms object with support functions)
86
+ - check that everything still works
87
+ - Upgrade dynamicforms to \>= 0.70.1
88
+ - Start migration to Vue front-end and the new backend
89
+
90
+ # What is DynamicForms?
91
+
92
+ DynamicForms wants to eliminate HTML form boilerplate for generic tables & forms. Specifying a single DRF Serializer /
93
+ ViewSet and possibly desired form layout instantly provides both HTML renders and JSON renders (and anything else DRF
94
+ supports) keeping you free to implement your project.
95
+
96
+ There are two parts to DanymicForms:
97
+
98
+ - Django / DRF extensions providing the JSON definitions for on-screen objects
99
+ - HTML / Javascript component library providing the visualisation
100
+
101
+ It performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own: It is
102
+ a [django](https://www.djangoproject.com/) library that gives you the power of dynamically-shown form fields,
103
+ autofilled default values, dynamic record loading and similar candy with little effort. To put it differently: once
104
+ defined, a particular ViewSet / Serializer can be rendered in multiple ways allowing you to perform viewing and
105
+ authoring operations on the data in question.
106
+
107
+ It is based on
108
+ [django-rest-framework](http://www.django-rest-framework.org/)
109
+
110
+ Documentation [on readthedocs](https://dynamicforms.readthedocs.io/)
111
+
112
+ ## Why DynamicForms
113
+
114
+ - Turn your rest-framework ViewSets into HTML tables & forms
115
+ - Powerful HTML based CRUD
116
+ - Support for fetching "new" records
117
+ - Render to table, form or dialog, with plenty of customisation options
118
+ - Full nested data support
119
+ - Dynamically display & hide fields based on other fields' values
120
+ - Easily add actions and place the buttons to execute them anywhere you like
121
+ - Clear separation of list & dialog templates
122
+ - Dynamic loading of additional records for table views supported by infinite scroll
123
+ - Responsive tables (multiple table layouts for various screen widths)
124
+ - Easy implementation of filtering
125
+ - Action items, declared globally, placed where you need them
126
+ - Custom templates whenever & wherever you want them
127
+ - Support for form validation, will show errors even if they are not tied to a field
128
+ - Progress dialog for long lasting ajax operations
129
+
@@ -0,0 +1,99 @@
1
+ # Notice to users of this library
2
+
3
+ Releases 0.50.x and 0.70.x are interim releases with which we prepare the stage for 1.x release.
4
+
5
+ 0.50.x moves all "existing" code to `dynamicforms_legacy` module. If you weren't following vue
6
+ development branches, you will need to change all imports in python to this "new" module.
7
+
8
+ This is done to keep legacy code still running as existing code is transitioned to vue-based approach. Unless there is
9
+ significant interest, we will remove this module with 1.x release.
10
+
11
+ 0.70.x re-introduces `dynamicforms` module, but this time refactored to only provide .componentdef OPTIONS +
12
+ payload data responses needed by the vue front-end library. This will hopefully be refactored to be more OpenAPI
13
+ compatible. The new primary branch is now `main`.
14
+
15
+ HTML renderers will no longer be supported and have been removed from the "new" dynamicforms module. It was too slow
16
+ and required too many hacks to remain viable. So we moved to Vue. The components in 0.70 will be vue3, vuetify3, vite
17
+ and typescript-compatible. We're in final stages of adapting to the new stack. Some inputs and some table functionality
18
+ isn't working yet.
19
+
20
+ We're keeping the Bootstrap stubs too, but not actively developing to support seamless selection of the two frameworks.
21
+ If there is interest to support CSS frameworks other than Vuetify, pull requests welcome. Hopefully the stubs should
22
+ point the way on how to do it.
23
+
24
+ Migration path is thus:
25
+
26
+ - Upgrade to dynamicforms \>= 0.50.3
27
+ - replace all dynamicforms imports with dynamicforms_legacy
28
+ - because of the rename, there is a bit of work required in settings.py so that Django can find the templates and
29
+ filters:
30
+
31
+ ``` python
32
+ from dynamicforms_legacy import __file__ as DYNAMICFORMS_BASEDIR_FILE
33
+ DYNAMICFORMS_BASEDIR = os.path.dirname(DYNAMICFORMS_BASEDIR_FILE)
34
+ ...
35
+ INSTALLED_APPS = [
36
+ ...
37
+ 'dynamicforms_legacy'
38
+
39
+ TEMPLATES = [
40
+ ...
41
+ 'DIRS': [
42
+ os.path.join(DYNAMICFORMS_BASEDIR, 'templates'),
43
+ ...
44
+ 'OPTIONS': {
45
+ ...
46
+ 'libraries': {
47
+ 'dynamicforms': 'dynamicforms_legacy.templatetags.dynamicforms',
48
+ }
49
+ STATICFILES_DIRS = [
50
+ ...
51
+ os.path.join(DYNAMICFORMS_BASEDIR, 'static'),
52
+ ]
53
+ ```
54
+ - replace any javascript dynamicforms progress calls with progress-legacy
55
+ - all other javascript code remains the same (including the dynamicforms object with support functions)
56
+ - check that everything still works
57
+ - Upgrade dynamicforms to \>= 0.70.1
58
+ - Start migration to Vue front-end and the new backend
59
+
60
+ # What is DynamicForms?
61
+
62
+ DynamicForms wants to eliminate HTML form boilerplate for generic tables & forms. Specifying a single DRF Serializer /
63
+ ViewSet and possibly desired form layout instantly provides both HTML renders and JSON renders (and anything else DRF
64
+ supports) keeping you free to implement your project.
65
+
66
+ There are two parts to DanymicForms:
67
+
68
+ - Django / DRF extensions providing the JSON definitions for on-screen objects
69
+ - HTML / Javascript component library providing the visualisation
70
+
71
+ It performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own: It is
72
+ a [django](https://www.djangoproject.com/) library that gives you the power of dynamically-shown form fields,
73
+ autofilled default values, dynamic record loading and similar candy with little effort. To put it differently: once
74
+ defined, a particular ViewSet / Serializer can be rendered in multiple ways allowing you to perform viewing and
75
+ authoring operations on the data in question.
76
+
77
+ It is based on
78
+ [django-rest-framework](http://www.django-rest-framework.org/)
79
+
80
+ Documentation [on readthedocs](https://dynamicforms.readthedocs.io/)
81
+
82
+ ## Why DynamicForms
83
+
84
+ - Turn your rest-framework ViewSets into HTML tables & forms
85
+ - Powerful HTML based CRUD
86
+ - Support for fetching "new" records
87
+ - Render to table, form or dialog, with plenty of customisation options
88
+ - Full nested data support
89
+ - Dynamically display & hide fields based on other fields' values
90
+ - Easily add actions and place the buttons to execute them anywhere you like
91
+ - Clear separation of list & dialog templates
92
+ - Dynamic loading of additional records for table views supported by infinite scroll
93
+ - Responsive tables (multiple table layouts for various screen widths)
94
+ - Easy implementation of filtering
95
+ - Action items, declared globally, placed where you need them
96
+ - Custom templates whenever & wherever you want them
97
+ - Support for form validation, will show errors even if they are not tied to a field
98
+ - Progress dialog for long lasting ajax operations
99
+
@@ -0,0 +1,21 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+ # sphinx-autobuild -v -n -a . _build\html
4
+
5
+ # You can set these variables from the command line.
6
+ SPHINXOPTS =
7
+ SPHINXBUILD = sphinx-build
8
+ SPHINXPROJ = DynamicForms
9
+ SOURCEDIR = .
10
+ BUILDDIR = _build
11
+
12
+ # Put it first so that "make" without argument is like "make help".
13
+ help:
14
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
15
+
16
+ .PHONY: help Makefile
17
+
18
+ # Catch-all target: route all unknown targets to Sphinx using the new
19
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
20
+ %: Makefile
21
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)