dynamicforms 0.76.19__tar.gz → 0.77.1__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.19 → dynamicforms-0.77.1}/PKG-INFO +1 -1
  2. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/reference/layout.md +9 -9
  3. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/__init__.py +1 -1
  4. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/serializers.py +6 -6
  5. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/layout.py +45 -28
  6. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/serializer.py +1 -1
  7. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/basic_fields.py +19 -3
  8. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/calendar.py +1 -1
  9. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/pyproject.toml +1 -1
  10. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.actrc +0 -0
  11. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.coveragerc +0 -0
  12. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.github/workflows/Python tests.yml +0 -0
  13. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.github/workflows/check_code.yml +0 -0
  14. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.github/workflows/check_doc.yml +0 -0
  15. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.github/workflows/incremental-cover-check.yml +0 -0
  16. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.github/workflows/vitest_tests.yml +0 -0
  17. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/.gitignore +0 -0
  18. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/LICENSE +0 -0
  19. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/MANIFEST.in +0 -0
  20. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/README.md +0 -0
  21. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/Makefile +0 -0
  22. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/conf.py +0 -0
  23. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/action_controls.rst +0 -0
  24. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/context_processors.rst +0 -0
  25. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/dialogs.rst +0 -0
  26. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/fields.rst +0 -0
  27. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/index.rst +0 -0
  28. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/renderers.rst +0 -0
  29. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/serializers.rst +0 -0
  30. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/templatetags.rst +0 -0
  31. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/api/viewsets.rst +0 -0
  32. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/contribute.rst +0 -0
  33. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/guides/index.rst +0 -0
  34. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/guides/quick_start.rst +0 -0
  35. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/guides/templates.rst +0 -0
  36. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/intro.rst +0 -0
  37. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/documents/settings.rst +0 -0
  38. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/index.rst +0 -0
  39. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.docs_archive/make.bat +0 -0
  40. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.vitepress/config.mts +0 -0
  41. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.vitepress/theme/index.ts +0 -0
  42. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/.vitepress/theme/style.css +0 -0
  43. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/examples/api-examples.md +0 -0
  44. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/examples/markdown-examples.md +0 -0
  45. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/getting-started.md +0 -0
  46. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/index.md +0 -0
  47. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/reference/dialog-size.md +0 -0
  48. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/reference/hiding_titlebar_and_navbar.md +0 -0
  49. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/reference/index.md +0 -0
  50. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/docs/settings.md +0 -0
  51. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/action.py +0 -0
  52. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/apps.py +0 -0
  53. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/fields.py +0 -0
  54. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/filters.py +0 -0
  55. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/locale/en/LC_MESSAGES/django.po +0 -0
  56. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/locale/en/LC_MESSAGES/djangojs.po +0 -0
  57. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/locale/sl/LC_MESSAGES/django.po +0 -0
  58. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/locale/sl/LC_MESSAGES/djangojs.po +0 -0
  59. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/management/__init__.py +0 -0
  60. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/management/commands/__init__.py +0 -0
  61. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/management/commands/clean_dfpreuploaded_files.py +0 -0
  62. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/migrations/__init__.py +0 -0
  63. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/__init__.py +0 -0
  64. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/action.py +0 -0
  65. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/choice/__init__.py +0 -0
  66. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/choice/allow_tags.py +0 -0
  67. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/choice/null_choice.py +0 -0
  68. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/choice/single_choice.py +0 -0
  69. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/color_field.py +0 -0
  70. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/conditional_visibility.py +0 -0
  71. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/enable_copy.py +0 -0
  72. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/field_render.py +0 -0
  73. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/file_field.py +0 -0
  74. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/help_text.py +0 -0
  75. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/implicit_hidden.py +0 -0
  76. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/implicit_natural_date.py +0 -0
  77. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/null_value.py +0 -0
  78. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/password_field.py +0 -0
  79. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/related_field_ajax.py +0 -0
  80. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/mixins/rtf_field.py +0 -0
  81. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/models.py +0 -0
  82. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/models_utils.py +0 -0
  83. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/pagination.py +0 -0
  84. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/preupload_files.py +0 -0
  85. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/progress.py +0 -0
  86. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/renderers.py +0 -0
  87. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/routers.py +0 -0
  88. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/struct.py +0 -0
  89. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/__init__.py +0 -0
  90. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/__init__.py +0 -0
  91. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/base.py +0 -0
  92. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/field.py +0 -0
  93. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/listserializer.py +0 -0
  94. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/render_mode_enum.py +0 -0
  95. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/serializer_filter.py +0 -0
  96. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/serializer_render_actions.py +0 -0
  97. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/serializer_render_fields.py +0 -0
  98. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/mixins/util.py +0 -0
  99. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/renderer.py +0 -0
  100. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/template_render/responsive_table_layout.py +0 -0
  101. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/urls.py +0 -0
  102. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/utils.py +0 -0
  103. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/views.py +0 -0
  104. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms/viewsets.py +0 -0
  105. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_dev/__init__.py +0 -0
  106. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_dev/management/__init__.py +0 -0
  107. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_dev/management/commands/__init__.py +0 -0
  108. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_dev/management/commands/generate_fields.py +0 -0
  109. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_dev/management/commands/npm_run.py +0 -0
  110. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/__init__.py +0 -0
  111. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/action.py +0 -0
  112. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/apps.py +0 -0
  113. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/context_processors.py +0 -0
  114. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/dynamicforms_migration_mixin.py +0 -0
  115. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/fields.py +0 -0
  116. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/filters.py +0 -0
  117. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/migrations/__init__.py +0 -0
  118. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/__init__.py +0 -0
  119. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/action.py +0 -0
  120. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/allow_tags.py +0 -0
  121. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/enable_copy.py +0 -0
  122. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/file_field.py +0 -0
  123. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/help_text.py +0 -0
  124. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/implicit_hidden.py +0 -0
  125. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/implicit_natural_date.py +0 -0
  126. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/null_choice.py +0 -0
  127. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/null_value.py +0 -0
  128. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/password_field.py +0 -0
  129. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/related_field_ajax.py +0 -0
  130. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/render.py +0 -0
  131. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/rtf_field.py +0 -0
  132. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/mixins/single_choice.py +0 -0
  133. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/models.py +0 -0
  134. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/pagination.py +0 -0
  135. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/progress.py +0 -0
  136. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/renderers.py +0 -0
  137. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/serializers.py +0 -0
  138. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/settings.py +0 -0
  139. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +0 -0
  140. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +0 -0
  141. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +0 -0
  142. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +0 -0
  143. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css +0 -0
  144. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css.map +0 -0
  145. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css +0 -0
  146. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +0 -0
  147. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.eot +0 -0
  148. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.svg +0 -0
  149. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  150. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff +0 -0
  151. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  152. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.js +0 -0
  153. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.min.js +0 -0
  154. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/npm.js +0 -0
  155. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css +0 -0
  156. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map +0 -0
  157. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css +0 -0
  158. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map +0 -0
  159. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css +0 -0
  160. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map +0 -0
  161. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css +0 -0
  162. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map +0 -0
  163. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css +0 -0
  164. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css.map +0 -0
  165. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css +0 -0
  166. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css.map +0 -0
  167. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js +0 -0
  168. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map +0 -0
  169. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js +0 -0
  170. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map +0 -0
  171. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js +0 -0
  172. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js.map +0 -0
  173. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js +0 -0
  174. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js.map +0 -0
  175. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/ckeditor-df/ckEditorCustomBuildReadMe.txt +0 -0
  176. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/ckeditor-df/ckeditor.js +0 -0
  177. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/dynamicforms/dynamicforms.js +0 -0
  178. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/dynamicforms/icons/copy.svg +0 -0
  179. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/dynamicforms/icons/eye-off-outline.svg +0 -0
  180. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/dynamicforms/icons/eye-outline.svg +0 -0
  181. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  182. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  183. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  184. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  185. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  186. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  187. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  188. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  189. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_222222_256x240.png +0 -0
  190. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_228ef1_256x240.png +0 -0
  191. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ef8c08_256x240.png +0 -0
  192. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffd27a_256x240.png +0 -0
  193. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffffff_256x240.png +0 -0
  194. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.min.css +0 -0
  195. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.structure.min.css +0 -0
  196. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/css/jquery-ui.theme.min.css +0 -0
  197. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/js/jquery-3.3.1.min.js +0 -0
  198. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/jquery_ui/js/jquery-ui.min.js +0 -0
  199. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/css/select2-bootstrap3.min.css +0 -0
  200. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/css/select2-bootstrap4.min.css +0 -0
  201. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/css/select2.min.css +0 -0
  202. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/af.js +0 -0
  203. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ar.js +0 -0
  204. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/az.js +0 -0
  205. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bg.js +0 -0
  206. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bs.js +0 -0
  207. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ca.js +0 -0
  208. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/cs.js +0 -0
  209. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/da.js +0 -0
  210. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/de.js +0 -0
  211. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/dsb.js +0 -0
  212. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/el.js +0 -0
  213. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/en.js +0 -0
  214. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/es.js +0 -0
  215. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/et.js +0 -0
  216. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/eu.js +0 -0
  217. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fa.js +0 -0
  218. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fi.js +0 -0
  219. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fr.js +0 -0
  220. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/gl.js +0 -0
  221. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/he.js +0 -0
  222. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hi.js +0 -0
  223. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hr.js +0 -0
  224. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hsb.js +0 -0
  225. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hu.js +0 -0
  226. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hy.js +0 -0
  227. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/id.js +0 -0
  228. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/is.js +0 -0
  229. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/it.js +0 -0
  230. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ja.js +0 -0
  231. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/km.js +0 -0
  232. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ko.js +0 -0
  233. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lt.js +0 -0
  234. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lv.js +0 -0
  235. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/mk.js +0 -0
  236. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ms.js +0 -0
  237. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nb.js +0 -0
  238. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nl.js +0 -0
  239. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pl.js +0 -0
  240. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ps.js +0 -0
  241. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt-BR.js +0 -0
  242. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt.js +0 -0
  243. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ro.js +0 -0
  244. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ru.js +0 -0
  245. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sk.js +0 -0
  246. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sl.js +0 -0
  247. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr-Cyrl.js +0 -0
  248. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr.js +0 -0
  249. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sv.js +0 -0
  250. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/th.js +0 -0
  251. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/tr.js +0 -0
  252. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/uk.js +0 -0
  253. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/vi.js +0 -0
  254. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-CN.js +0 -0
  255. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-TW.js +0 -0
  256. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.js +0 -0
  257. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.min.js +0 -0
  258. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.js +0 -0
  259. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.min.js +0 -0
  260. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/struct.py +0 -0
  261. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base.html +0 -0
  262. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_form.html +0 -0
  263. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_includes.html +0 -0
  264. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_includes_select2.html +0 -0
  265. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_list.html +0 -0
  266. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_table_body.html +0 -0
  267. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/base_table_filter.html +0 -0
  268. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_form.html +0 -0
  269. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes.html +0 -0
  270. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v3.html +0 -0
  271. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v4.html +0 -0
  272. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_list.html +0 -0
  273. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_body.html +0 -0
  274. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_filter.html +0 -0
  275. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field.html +0 -0
  276. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v3.html +0 -0
  277. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v4.html +0 -0
  278. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox.html +0 -0
  279. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox_multiple.html +0 -0
  280. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/fieldset.html +0 -0
  281. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/form.html +0 -0
  282. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/input.html +0 -0
  283. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/list_fieldset.html +0 -0
  284. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/radio.html +0 -0
  285. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/rtf_field.html +0 -0
  286. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select.html +0 -0
  287. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select_multiple.html +0 -0
  288. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/field/textarea.html +0 -0
  289. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog.html +0 -0
  290. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog_rest.html +0 -0
  291. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/bootstrap/page.html +0 -0
  292. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/base_field.html +0 -0
  293. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/checkbox.html +0 -0
  294. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/checkbox_multiple.html +0 -0
  295. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/dict_field.html +0 -0
  296. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/fieldset.html +0 -0
  297. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/form.html +0 -0
  298. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/input.html +0 -0
  299. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/list_field.html +0 -0
  300. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/list_fieldset.html +0 -0
  301. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/radio.html +0 -0
  302. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/rtf_field.html +0 -0
  303. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/select.html +0 -0
  304. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/select_multiple.html +0 -0
  305. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/field/textarea.html +0 -0
  306. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_form.html +0 -0
  307. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_includes.html +0 -0
  308. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_list.html +0 -0
  309. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_body.html +0 -0
  310. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_filter.html +0 -0
  311. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/base_field.html +0 -0
  312. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox.html +0 -0
  313. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox_multiple.html +0 -0
  314. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/fieldset.html +0 -0
  315. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/form.html +0 -0
  316. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/input.html +0 -0
  317. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/list_fieldset.html +0 -0
  318. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/radio.html +0 -0
  319. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/rtf_field.html +0 -0
  320. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select.html +0 -0
  321. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select_multiple.html +0 -0
  322. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/textarea.html +0 -0
  323. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog.html +0 -0
  324. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog_rest.html +0 -0
  325. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/jquery_ui/page.html +0 -0
  326. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/modal_dialog.html +0 -0
  327. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/modal_dialog_rest.html +0 -0
  328. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/page.html +0 -0
  329. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templates/dynamicforms/rtf_field_style.html +0 -0
  330. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templatetags/__init__.py +0 -0
  331. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/templatetags/dynamicforms.py +0 -0
  332. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/urls.py +0 -0
  333. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/views.py +0 -0
  334. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/dynamicforms_legacy/viewsets.py +0 -0
  335. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/__init__.py +0 -0
  336. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/admin.py +0 -0
  337. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/apps.py +0 -0
  338. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/enum_field.py +0 -0
  339. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0001_initial.py +0 -0
  340. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0002_auto_20190320_0823.py +0 -0
  341. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0003_filter_name.py +0 -0
  342. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0004_basicfields_password_field.py +0 -0
  343. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0005_advancedfields_file_field_two.py +0 -0
  344. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0005_refreshtype_rich_text_field.py +0 -0
  345. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0006_merge_20200921_1152.py +0 -0
  346. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0007_basicfields_nullint_field.py +0 -0
  347. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0008_auto_20210303_0904.py +0 -0
  348. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0008_auto_20210312_1146.py +0 -0
  349. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0009_auto_20210929_1136.py +0 -0
  350. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0010_filter_rtf_field.py +0 -0
  351. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/0011_auto_20211120_0523.py +0 -0
  352. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/migrations/__init__.py +0 -0
  353. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/models.py +0 -0
  354. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/recurrence_utils.py +0 -0
  355. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/__init__.py +0 -0
  356. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/actions_overview.py +0 -0
  357. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/advanced_fields.py +0 -0
  358. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/calculated_css_class_for_table_row.py +0 -0
  359. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/calendar_dependencies.py +0 -0
  360. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/calendar_recurrence.py +0 -0
  361. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/calendar_reminders.py +0 -0
  362. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/choice_allow_tags_fields.py +0 -0
  363. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/document.py +0 -0
  364. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/fields/__init__.py +0 -0
  365. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/fields/df_file_field.py +0 -0
  366. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/fields/name_field.py +0 -0
  367. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/filter.py +0 -0
  368. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/hidden_fields.py +0 -0
  369. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/page_load.py +0 -0
  370. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/relation.py +0 -0
  371. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/single_dialog.py +0 -0
  372. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/validated.py +0 -0
  373. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/rest/write_only_fields.py +0 -0
  374. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/tests.py +0 -0
  375. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/examples/urls.py +0 -0
  376. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/manage.py +0 -0
  377. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/package-lock.json +0 -0
  378. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/package.json +0 -0
  379. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/publish.py +0 -0
  380. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/readthedocs.yml +0 -0
  381. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/requirements.txt +0 -0
  382. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/requirements_test_functional.txt +0 -0
  383. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/setup/__init__.py +0 -0
  384. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/setup/settings.py +0 -0
  385. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/setup/urls.py +0 -0
  386. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/setup/wsgi.py +0 -0
  387. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/__init__.py +0 -0
  388. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/__init__.py +0 -0
  389. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_advanced_fields.py +0 -0
  390. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_basic_fields.py +0 -0
  391. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_filter.py +0 -0
  392. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_hidden_fields.py +0 -0
  393. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_page_load.py +0 -0
  394. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_single_dialog.py +0 -0
  395. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_test_validated.py +0 -0
  396. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/_tests.py +0 -0
  397. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/select.py +0 -0
  398. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/functional/selenium_test_case.py +0 -0
  399. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/request_sync.py +0 -0
  400. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/static_files/0_3142.prj +0 -0
  401. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/__init__.py +0 -0
  402. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_calendar.py +0 -0
  403. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_conditional_visibility.py +0 -0
  404. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_cursor_pagination.py +0 -0
  405. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_df_serializer.py +0 -0
  406. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_filter.py +0 -0
  407. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_page_load.py +0 -0
  408. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_struct.py +0 -0
  409. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/test_validate_allow_null_for_field_with_source_equal_to_star.py +0 -0
  410. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tests/unit/tests.py +0 -0
  411. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tox.ini +0 -0
  412. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tsconfig.build.json +0 -0
  413. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tsconfig.eslint.json +0 -0
  414. {dynamicforms-0.76.19 → dynamicforms-0.77.1}/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dynamicforms
3
- Version: 0.76.19
3
+ Version: 0.77.1
4
4
  Summary: DynamicForms performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own
5
5
  Project-URL: Homepage, https://github.com/velis74/DynamicForms
6
6
  Project-URL: Repository, https://github.com/velis74/DynamicForms
@@ -18,7 +18,7 @@ class MySerializer(serializers.ModelSerializer):
18
18
  fields = ['field1', 'field2', 'field3', 'field4']
19
19
  layout = Layout(
20
20
  Row('field1', 'field2'),
21
- Row(Column('field3'), Column(Field('field4'))),
21
+ Row(Column('field3'), Column(Field('field4', 'my_component_name'))),
22
22
  )
23
23
  ```
24
24
 
@@ -43,7 +43,7 @@ Layout(
43
43
  * rows: A list of Row objects defining the layout structure.
44
44
  * component_name: The name of the Vue component to use for rendering (default: "df-form-layout"). Used for overriding
45
45
  default rendering.
46
- * columns: Number of columns for automatically added fields (default: 1).
46
+ * columns: Number of columns for automatically added fields (default: 1). Also important for layout and colspan.
47
47
  * size: Size of the layout ("small", "large", "", etc.). Mostly effective when this layout is going to be rendered in a
48
48
  dialog. See [DialogSize](dialog-size) for reference on size classes.
49
49
  * header_classes: CSS classes for the header.
@@ -58,12 +58,12 @@ The Row class represents a horizontal group of columns.
58
58
  from typing import Union
59
59
  from dynamicforms.template_render.layout import Layout, Row, Column, Field
60
60
 
61
- Row(*columns: Union[Column, Field, str], component="FormRow")
61
+ Row(*columns: Union[Column, Field, str], component_name="FormRow")
62
62
  ```
63
63
 
64
64
  * columns: A list of Column objects or field names.
65
- * component: The name of the Vue component to use for rendering (default: "FormRow"). Change when overriding default
66
- rendering components.
65
+ * component_name: The name of the Vue component to use for rendering (default: "FormRow"). Change when overriding
66
+ default rendering components.
67
67
 
68
68
  ## Column
69
69
 
@@ -74,10 +74,10 @@ from typing import Union, Optional, Tuple
74
74
  from dynamicforms.template_render.layout import Layout, Row, Column, Field
75
75
  from dynamicforms.fields import DFField
76
76
 
77
- Column(field: Union[Tuple[str, DFField], Field, str, None], width_classes: Optional[str] = None)
77
+ Column(field: Union[Tuple[str, DFField], Field, str, None], colspan: int = 1)
78
78
  ```
79
79
  * field: A Field object or field name.
80
- * width_classes: CSS classes for controlling column width. Note: subject to change soon.
80
+ * colspan: how many columns does this field span. See Layout.columns property
81
81
 
82
82
 
83
83
  ## Group
@@ -92,7 +92,7 @@ Group(
92
92
  field: Union[str, Field, None],
93
93
  title: str = None,
94
94
  sub_layout: Layout = None,
95
- width_classes: Optional[str] = None,
95
+ colspan: int = 1,
96
96
  footer: Optional[str] = None,
97
97
  )
98
98
  ```
@@ -100,7 +100,7 @@ Group(
100
100
  * field: A Field object, field name, or None for flat field grouping.
101
101
  * title: The title of the group.
102
102
  * sub_layout: A Layout object for custom layout within the group.
103
- * width_classes: CSS classes for controlling group width.
103
+ * colspan: how many columns does this group span in the layout.
104
104
  * footer: Optional footer text for the group.
105
105
 
106
106
  Groups can be used in two main ways:
@@ -1,5 +1,5 @@
1
1
  __title__ = "DynamicForms"
2
- __version__ = '0.76.19'
2
+ __version__ = '0.77.1'
3
3
  __author__ = "Jure Erznožnik"
4
4
  __email__ = "jure.erznoznik@gmail.com"
5
5
  __license__ = "BSD 3-Clause"
@@ -491,7 +491,7 @@ class Serializer(DynamicFormsSerializer, serializers.Serializer):
491
491
  class DynamicModelMixin:
492
492
  MODEL_FUNC_SETTING_NAME = None
493
493
 
494
- def determine_model_at_runtime(self) -> Optional[models.Model]:
494
+ def determine_model_at_runtime(self, request) -> Optional[models.Model]:
495
495
  """
496
496
  Determines what model should be the basis for the serializer at runtime. Allows for dynamic model adjustments
497
497
  based on active code at the time of serialization
@@ -499,7 +499,7 @@ class DynamicModelMixin:
499
499
  """
500
500
  try:
501
501
  model_func = import_string(getattr(settings, self.MODEL_FUNC_SETTING_NAME, None))
502
- return model_func(self)
502
+ return model_func(self, request)
503
503
  except ImportError:
504
504
  pass
505
505
  return None
@@ -509,11 +509,11 @@ class DynamicModelSerializerMixin(DynamicModelMixin):
509
509
  LAYOUT_FUNC_SETTING_NAME = None
510
510
 
511
511
  def __init__(self, *args, **kwargs):
512
- if model := self.determine_model_at_runtime():
513
- self.meta.model = model
512
+ if model := self.determine_model_at_runtime(kwargs.get("context", {}).get("request")):
513
+ self.Meta.model = model
514
514
  super().__init__(*args, **kwargs)
515
515
 
516
- def determine_layout_at_runtime(self):
516
+ def determine_layout_at_runtime(self, request):
517
517
  """
518
518
  Determines what layout should be used for displaying the model at runtime. Allows for dynamic model adjustments
519
519
  based on active code at the time of serialization
@@ -524,7 +524,7 @@ class DynamicModelSerializerMixin(DynamicModelMixin):
524
524
  """
525
525
  try:
526
526
  layout_func = import_string(getattr(settings, self.LAYOUT_FUNC_SETTING_NAME, None))
527
- return layout_func(self)
527
+ return layout_func(self, request)
528
528
  except ImportError:
529
529
  pass
530
530
  return self.Meta.layout
@@ -11,12 +11,12 @@ if TYPE_CHECKING:
11
11
 
12
12
 
13
13
  class Field(object):
14
- def __init__(self, field_name: str, render_format: Optional[str] = None):
14
+ def __init__(self, field_name: str, component_name: Optional[str] = None):
15
15
  self.field_name = field_name
16
- self.render_format = render_format
16
+ self.component_name = component_name
17
17
 
18
18
  def clone(self):
19
- return Field(self.field_name, self.render_format)
19
+ return Field(self.field_name, self.component_name)
20
20
 
21
21
  def field_def(self, serializer: "Serializer") -> Union[DFField, DRFSerializer]:
22
22
  return serializer.fields[self.field_name]
@@ -25,14 +25,18 @@ class Field(object):
25
25
  field = self.field_def(serializer).as_component_def()
26
26
 
27
27
  field["name"] = self.field_name
28
- if self.render_format:
29
- field["render_format"] = self.render_format
28
+ field["component_name"] = self.component_name
30
29
  fields[self.field_name] = field
31
30
  return field["name"]
32
31
 
33
32
 
34
33
  class Column(object):
35
- def __init__(self, field: Union[Tuple[str, DFField], Field, str, None], width_classes: Optional[str] = None):
34
+ def __init__(
35
+ self,
36
+ field: Union[Tuple[str, DFField], Field, str, None],
37
+ colspan: int = 1,
38
+ component_name: Optional[str] = "form-field",
39
+ ):
36
40
  if isinstance(field, str):
37
41
  self.field = Field(field)
38
42
  elif isinstance(field, Field):
@@ -42,13 +46,13 @@ class Column(object):
42
46
  self.field = field
43
47
  else:
44
48
  raise NotImplementedError(f"Unknown field type {field.__class__.__name__}")
45
- self.width_classes = width_classes or ""
46
- # TODO: It was a lot more useful when bootstrap was the front-end framework and this basically allowed to
47
- # specify how big a column was to be used. Needs to change to support the Vue / Vuetify components and
48
- # their props now. task: https://app.clickup.com/t/86bzw1k8f
49
+ self.component_name = component_name
50
+ self.colspan = colspan or 1
49
51
 
50
52
  def clone(self):
51
- return Column(field=self.field.clone() if self.field else None, width_classes=self.width_classes)
53
+ return Column(
54
+ field=self.field.clone() if self.field else None, colspan=self.colspan, component_name=self.component_name
55
+ )
52
56
 
53
57
  def _get_laid_fields(self):
54
58
  return {self.field.field_name} if self.field is not None else set()
@@ -56,14 +60,15 @@ class Column(object):
56
60
  def as_component_def(self, serializer: "Serializer", fields: Dict) -> Dict:
57
61
  fld_def = self.field.as_component_def(serializer, fields) if self.field is not None else dict()
58
62
  res = dict(type="column", field=fld_def)
59
- if self.width_classes:
60
- res["width_classes"] = self.width_classes
63
+ if self.colspan != 1:
64
+ res["colspan"] = self.colspan
65
+ res["component_name"] = self.component_name
61
66
  return res
62
67
 
63
68
 
64
69
  class Row(object):
65
- def __init__(self, *columns: Union[Column, Field, str], component: str = None):
66
- self.component = component or "FormRow"
70
+ def __init__(self, *columns: Union[Column, Field, str], component_name: str = "form-row"):
71
+ self.component_name = component_name
67
72
  self.columns: List[Column] = []
68
73
  for column in columns:
69
74
  if isinstance(column, str):
@@ -76,14 +81,15 @@ class Row(object):
76
81
  raise NotImplementedError(f"Unknown column type {column.__class__.__name__}")
77
82
 
78
83
  def clone(self):
79
- return Row(*[col.clone() for col in self.columns], component=self.component)
84
+ return Row(*[col.clone() for col in self.columns], component_name=self.component_name)
80
85
 
81
86
  def _get_laid_fields(self):
82
87
  return set().union(*(col._get_laid_fields() for col in self.columns))
83
88
 
84
89
  def as_component_def(self, serializer: "Serializer", fields: Dict) -> dict:
85
90
  return dict(
86
- component=self.component, columns=[col.as_component_def(serializer, fields) for col in self.columns]
91
+ component_name=self.component_name,
92
+ columns=[col.as_component_def(serializer, fields) for col in self.columns],
87
93
  )
88
94
 
89
95
 
@@ -103,6 +109,8 @@ class Layout(object):
103
109
  :param columns: for all fields not added in layout manually, add them in n-column layout
104
110
  :param size: 'small', 'large' or ''
105
111
  :param header_classes: 'bg-info', ..., or ''
112
+ :param auto_add_fields: whether we should automatically add all unlisted fields
113
+ from the serializer (in as_component_def)
106
114
  """
107
115
  self.rows: List[Row] = list(rows) or []
108
116
  self.columns = columns
@@ -118,19 +126,24 @@ class Layout(object):
118
126
  columns=self.columns,
119
127
  size=self.size,
120
128
  header_classes=self.header_classes,
121
- auto_add_fields=self.auto_add_fields
129
+ auto_add_fields=self.auto_add_fields,
122
130
  )
123
131
 
124
132
  def append_after_row(self, field_name: Optional[str], *rows: Row):
125
- """Adds new rows after the row with specified field. if field_name is None, inserts new rows at beginning"""
133
+ """
134
+ Adds new rows after the row with specified field. if field_name is None, inserts new rows at beginning.
135
+ Note that if specified field is in a subgroup, the new rows will not be inserted in the subgroup,
136
+ but below it instead.
137
+ """
126
138
  if field_name is None:
127
139
  self.rows[0:0] = rows
128
140
  return
141
+
129
142
  for i, row in enumerate(self.rows):
130
- for column in row.columns:
131
- if column.field and column.field.field_name == field_name:
132
- self.rows[i + 1:i + 1] = rows
133
- return
143
+ if field_name in row._get_laid_fields():
144
+ self.rows[i + 1 : i + 1] = rows
145
+ return
146
+
134
147
  raise ValueError(f"Field {field_name} not found in the layout")
135
148
 
136
149
  def _get_laid_fields(self):
@@ -181,21 +194,25 @@ class Group(Column):
181
194
  field: Union[str, Field, None],
182
195
  title: str = None,
183
196
  sub_layout: Layout = None,
184
- width_classes: Optional[str] = None,
197
+ colspan: int = 1,
185
198
  footer: Optional[str] = None,
199
+ component_name: Optional[str] = "form-field-group",
186
200
  ):
187
- super().__init__(field, width_classes)
201
+ super().__init__(field=field, colspan=colspan, component_name=component_name)
188
202
  self.title = title
189
203
  self.layout = sub_layout
190
204
  self.footer = footer
205
+ self.component_name = component_name
206
+ assert self.field or self.layout
191
207
 
192
208
  def clone(self):
193
209
  return Group(
194
210
  field=self.field.clone() if self.field else None,
195
211
  title=self.title,
196
212
  sub_layout=self.layout.clone() if self.layout else None,
197
- width_classes=self.width_classes,
198
- footer=self.footer
213
+ colspan=self.colspan,
214
+ footer=self.footer,
215
+ component_name=self.component_name,
199
216
  )
200
217
 
201
218
  def _get_laid_fields(self):
@@ -205,7 +222,6 @@ class Group(Column):
205
222
 
206
223
  def as_component_def(self, serializer: "Serializer", fields: Dict) -> Dict:
207
224
  res = super().as_component_def(serializer, fields)
208
- assert self.field or self.layout
209
225
  sub_serializer = self.field.field_def(serializer) if self.field else None # type: Serializer
210
226
  layout = self.layout or sub_serializer.layout
211
227
  res.update(
@@ -214,5 +230,6 @@ class Group(Column):
214
230
  title=self.title or sub_serializer.label,
215
231
  uuid=sub_serializer.uuid if sub_serializer else uuid.uuid4(),
216
232
  layout=layout.as_component_def(sub_serializer if sub_serializer else serializer),
233
+ component_name=self.component_name,
217
234
  )
218
235
  return res
@@ -188,7 +188,7 @@ class ViewModeSerializer(ViewModeBase, SerializerFilter, metaclass=SerializerMet
188
188
  @property
189
189
  def layout(self):
190
190
  template_context = getattr(self, "template_context", {})
191
- if hasattr(self, 'determine_layout_at_runtime') and (layout := self.determine_layout_at_runtime()):
191
+ if hasattr(self, 'determine_layout_at_runtime') and (layout := self.determine_layout_at_runtime(self.request)):
192
192
  return layout
193
193
  elif hasattr(self, "Meta") and hasattr(self.Meta, "layout"):
194
194
  return self.Meta.layout
@@ -2,7 +2,7 @@ from django.utils.translation import gettext_lazy as _
2
2
 
3
3
  from dynamicforms import fields, serializers
4
4
  from dynamicforms.action import Actions, TableAction, TablePosition
5
- from dynamicforms.template_render.layout import Layout
5
+ from dynamicforms.template_render.layout import Group, Layout, Row
6
6
  from dynamicforms.template_render.responsive_table_layout import ResponsiveTableLayout, ResponsiveTableLayouts
7
7
  from dynamicforms.viewsets import ModelViewSet
8
8
 
@@ -55,7 +55,23 @@ class BasicFieldsSerializer(serializers.ModelSerializer):
55
55
  class Meta:
56
56
  model = BasicFields
57
57
  exclude = ()
58
- layout = Layout(columns=3, size="large")
58
+ layout = Layout(
59
+ Row(
60
+ Group(
61
+ None,
62
+ "Booleans",
63
+ Layout(Row("boolean_field"), Row("nullboolean_field"), auto_add_fields=False),
64
+ ),
65
+ Group(
66
+ None,
67
+ "Text fields",
68
+ Layout(Row("char_field"), Row("slug_field"), Row("password_field"), auto_add_fields=False),
69
+ colspan=2,
70
+ ),
71
+ ),
72
+ columns=3,
73
+ size="large",
74
+ )
59
75
  responsive_columns = ResponsiveTableLayouts(
60
76
  auto_generate_single_row_layout=True,
61
77
  layouts=[
@@ -81,7 +97,7 @@ class BasicFieldsSerializer(serializers.ModelSerializer):
81
97
  auto_add_non_listed_columns=True,
82
98
  ),
83
99
  ],
84
- auto_generate_single_column_layout=True,
100
+ auto_generate_single_column_layout=False,
85
101
  )
86
102
 
87
103
 
@@ -61,7 +61,7 @@ class CalendarEventSerializer(RecurrenceEventSerializer):
61
61
  Row("description"),
62
62
  Row("start_at", "end_at"),
63
63
  Row("reminders"),
64
- Row(Group("recurrence", width_classes="col-8"), Column("change_this_record_only", "col-4")),
64
+ Row(Group("recurrence", colspan=8), Column("change_this_record_only", colspan=4)),
65
65
  columns=2,
66
66
  size="large",
67
67
  )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dynamicforms"
7
- version = "0.76.19"
7
+ version = "0.77.1"
8
8
  description = "DynamicForms performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
File without changes
File without changes
File without changes
File without changes