dynamicforms 0.76.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. dynamicforms/__init__.py +8 -0
  2. dynamicforms/action.py +521 -0
  3. dynamicforms/apps.py +5 -0
  4. dynamicforms/fields.py +1570 -0
  5. dynamicforms/filters.py +44 -0
  6. dynamicforms/locale/en/LC_MESSAGES/django.po +67 -0
  7. dynamicforms/locale/en/LC_MESSAGES/djangojs.po +31 -0
  8. dynamicforms/locale/sl/LC_MESSAGES/django.po +71 -0
  9. dynamicforms/locale/sl/LC_MESSAGES/djangojs.po +36 -0
  10. dynamicforms/management/__init__.py +0 -0
  11. dynamicforms/management/commands/__init__.py +0 -0
  12. dynamicforms/management/commands/clean_dfpreuploaded_files.py +26 -0
  13. dynamicforms/migrations/__init__.py +0 -0
  14. dynamicforms/mixins/__init__.py +27 -0
  15. dynamicforms/mixins/action.py +14 -0
  16. dynamicforms/mixins/choice/__init__.py +94 -0
  17. dynamicforms/mixins/choice/allow_tags.py +79 -0
  18. dynamicforms/mixins/choice/null_choice.py +26 -0
  19. dynamicforms/mixins/choice/single_choice.py +21 -0
  20. dynamicforms/mixins/color_field.py +4 -0
  21. dynamicforms/mixins/conditional_visibility.py +193 -0
  22. dynamicforms/mixins/enable_copy.py +4 -0
  23. dynamicforms/mixins/field_render.py +209 -0
  24. dynamicforms/mixins/file_field.py +5 -0
  25. dynamicforms/mixins/help_text.py +46 -0
  26. dynamicforms/mixins/implicit_hidden.py +7 -0
  27. dynamicforms/mixins/implicit_natural_date.py +88 -0
  28. dynamicforms/mixins/null_value.py +15 -0
  29. dynamicforms/mixins/password_field.py +23 -0
  30. dynamicforms/mixins/related_field_ajax.py +142 -0
  31. dynamicforms/mixins/rtf_field.py +58 -0
  32. dynamicforms/models.py +5 -0
  33. dynamicforms/models_utils.py +33 -0
  34. dynamicforms/pagination.py +175 -0
  35. dynamicforms/preupload_files.py +42 -0
  36. dynamicforms/progress.py +71 -0
  37. dynamicforms/renderers.py +1 -0
  38. dynamicforms/routers.py +36 -0
  39. dynamicforms/serializers.py +486 -0
  40. dynamicforms/struct.py +40 -0
  41. dynamicforms/template_render/__init__.py +10 -0
  42. dynamicforms/template_render/layout.py +178 -0
  43. dynamicforms/template_render/mixins/__init__.py +0 -0
  44. dynamicforms/template_render/mixins/base.py +39 -0
  45. dynamicforms/template_render/mixins/field.py +74 -0
  46. dynamicforms/template_render/mixins/listserializer.py +100 -0
  47. dynamicforms/template_render/mixins/render_mode_enum.py +8 -0
  48. dynamicforms/template_render/mixins/serializer.py +301 -0
  49. dynamicforms/template_render/mixins/serializer_filter.py +19 -0
  50. dynamicforms/template_render/mixins/serializer_render_actions.py +21 -0
  51. dynamicforms/template_render/mixins/serializer_render_fields.py +57 -0
  52. dynamicforms/template_render/mixins/util.py +9 -0
  53. dynamicforms/template_render/renderer.py +38 -0
  54. dynamicforms/template_render/responsive_table_layout.py +64 -0
  55. dynamicforms/urls.py +9 -0
  56. dynamicforms/utils.py +32 -0
  57. dynamicforms/views.py +1 -0
  58. dynamicforms/viewsets.py +421 -0
  59. dynamicforms-0.76.14.dist-info/METADATA +129 -0
  60. dynamicforms-0.76.14.dist-info/RECORD +287 -0
  61. dynamicforms-0.76.14.dist-info/WHEEL +4 -0
  62. dynamicforms-0.76.14.dist-info/licenses/LICENSE +21 -0
  63. dynamicforms_legacy/__init__.py +8 -0
  64. dynamicforms_legacy/action.py +561 -0
  65. dynamicforms_legacy/apps.py +5 -0
  66. dynamicforms_legacy/context_processors.py +27 -0
  67. dynamicforms_legacy/dynamicforms_migration_mixin.py +42 -0
  68. dynamicforms_legacy/fields.py +1108 -0
  69. dynamicforms_legacy/filters.py +44 -0
  70. dynamicforms_legacy/migrations/__init__.py +0 -0
  71. dynamicforms_legacy/mixins/__init__.py +16 -0
  72. dynamicforms_legacy/mixins/action.py +14 -0
  73. dynamicforms_legacy/mixins/allow_tags.py +85 -0
  74. dynamicforms_legacy/mixins/enable_copy.py +4 -0
  75. dynamicforms_legacy/mixins/file_field.py +5 -0
  76. dynamicforms_legacy/mixins/help_text.py +38 -0
  77. dynamicforms_legacy/mixins/implicit_hidden.py +7 -0
  78. dynamicforms_legacy/mixins/implicit_natural_date.py +86 -0
  79. dynamicforms_legacy/mixins/null_choice.py +26 -0
  80. dynamicforms_legacy/mixins/null_value.py +15 -0
  81. dynamicforms_legacy/mixins/password_field.py +19 -0
  82. dynamicforms_legacy/mixins/related_field_ajax.py +58 -0
  83. dynamicforms_legacy/mixins/render.py +203 -0
  84. dynamicforms_legacy/mixins/rtf_field.py +52 -0
  85. dynamicforms_legacy/mixins/single_choice.py +21 -0
  86. dynamicforms_legacy/models.py +5 -0
  87. dynamicforms_legacy/pagination.py +168 -0
  88. dynamicforms_legacy/progress.py +71 -0
  89. dynamicforms_legacy/renderers.py +183 -0
  90. dynamicforms_legacy/serializers.py +335 -0
  91. dynamicforms_legacy/settings.py +196 -0
  92. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +587 -0
  93. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -0
  94. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +6 -0
  95. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -0
  96. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css +6834 -0
  97. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -0
  98. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css +6 -0
  99. dynamicforms_legacy/static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -0
  100. dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.eot +0 -0
  101. dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.svg +288 -0
  102. dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  103. dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff +0 -0
  104. dynamicforms_legacy/static/bootstrap-3.4.1-dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  105. dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.js +2580 -0
  106. dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/bootstrap.min.js +6 -0
  107. dynamicforms_legacy/static/bootstrap-3.4.1-dist/js/npm.js +13 -0
  108. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css +3719 -0
  109. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.css.map +1 -0
  110. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css +7 -0
  111. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-grid.min.css.map +1 -0
  112. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css +331 -0
  113. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.css.map +1 -0
  114. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css +8 -0
  115. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap-reboot.min.css.map +1 -0
  116. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css +10038 -0
  117. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.css.map +1 -0
  118. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css +7 -0
  119. dynamicforms_legacy/static/bootstrap-4.3.1-dist/css/bootstrap.min.css.map +1 -0
  120. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js +7013 -0
  121. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map +1 -0
  122. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js +7 -0
  123. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js.map +1 -0
  124. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js +4435 -0
  125. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.js.map +1 -0
  126. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js +7 -0
  127. dynamicforms_legacy/static/bootstrap-4.3.1-dist/js/bootstrap.min.js.map +1 -0
  128. dynamicforms_legacy/static/ckeditor-df/ckEditorCustomBuildReadMe.txt +255 -0
  129. dynamicforms_legacy/static/ckeditor-df/ckeditor.js +6 -0
  130. dynamicforms_legacy/static/dynamicforms/dynamicforms.js +1883 -0
  131. dynamicforms_legacy/static/dynamicforms/icons/copy.svg +7 -0
  132. dynamicforms_legacy/static/dynamicforms/icons/eye-off-outline.svg +10 -0
  133. dynamicforms_legacy/static/dynamicforms/icons/eye-outline.svg +7 -0
  134. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  135. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  136. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  137. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  138. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  139. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  140. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  141. dynamicforms_legacy/static/jquery_ui/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  142. dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_222222_256x240.png +0 -0
  143. dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_228ef1_256x240.png +0 -0
  144. dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ef8c08_256x240.png +0 -0
  145. dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffd27a_256x240.png +0 -0
  146. dynamicforms_legacy/static/jquery_ui/css/images/ui-icons_ffffff_256x240.png +0 -0
  147. dynamicforms_legacy/static/jquery_ui/css/jquery-ui.min.css +7 -0
  148. dynamicforms_legacy/static/jquery_ui/css/jquery-ui.structure.min.css +5 -0
  149. dynamicforms_legacy/static/jquery_ui/css/jquery-ui.theme.min.css +5 -0
  150. dynamicforms_legacy/static/jquery_ui/js/jquery-3.3.1.min.js +2 -0
  151. dynamicforms_legacy/static/jquery_ui/js/jquery-ui.min.js +13 -0
  152. dynamicforms_legacy/static/select2/css/select2-bootstrap3.min.css +7 -0
  153. dynamicforms_legacy/static/select2/css/select2-bootstrap4.min.css +578 -0
  154. dynamicforms_legacy/static/select2/select2-4.0.5/css/select2.min.css +1 -0
  155. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/af.js +3 -0
  156. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ar.js +3 -0
  157. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/az.js +3 -0
  158. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bg.js +3 -0
  159. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/bs.js +3 -0
  160. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ca.js +3 -0
  161. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/cs.js +3 -0
  162. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/da.js +3 -0
  163. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/de.js +3 -0
  164. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/dsb.js +3 -0
  165. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/el.js +3 -0
  166. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/en.js +3 -0
  167. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/es.js +3 -0
  168. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/et.js +3 -0
  169. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/eu.js +3 -0
  170. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fa.js +3 -0
  171. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fi.js +3 -0
  172. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/fr.js +3 -0
  173. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/gl.js +3 -0
  174. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/he.js +3 -0
  175. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hi.js +3 -0
  176. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hr.js +3 -0
  177. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hsb.js +3 -0
  178. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hu.js +3 -0
  179. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/hy.js +3 -0
  180. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/id.js +3 -0
  181. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/is.js +3 -0
  182. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/it.js +3 -0
  183. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ja.js +3 -0
  184. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/km.js +3 -0
  185. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ko.js +3 -0
  186. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lt.js +3 -0
  187. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/lv.js +3 -0
  188. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/mk.js +3 -0
  189. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ms.js +3 -0
  190. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nb.js +3 -0
  191. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/nl.js +3 -0
  192. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pl.js +3 -0
  193. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ps.js +3 -0
  194. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt-BR.js +3 -0
  195. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/pt.js +3 -0
  196. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ro.js +3 -0
  197. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/ru.js +3 -0
  198. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sk.js +3 -0
  199. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sl.js +3 -0
  200. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr-Cyrl.js +3 -0
  201. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sr.js +3 -0
  202. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/sv.js +3 -0
  203. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/th.js +3 -0
  204. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/tr.js +3 -0
  205. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/uk.js +3 -0
  206. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/vi.js +3 -0
  207. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-CN.js +3 -0
  208. dynamicforms_legacy/static/select2/select2-4.0.5/js/i18n/zh-TW.js +3 -0
  209. dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.js +6457 -0
  210. dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.full.min.js +1 -0
  211. dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.js +5746 -0
  212. dynamicforms_legacy/static/select2/select2-4.0.5/js/select2.min.js +1 -0
  213. dynamicforms_legacy/struct.py +40 -0
  214. dynamicforms_legacy/templates/dynamicforms/base.html +12 -0
  215. dynamicforms_legacy/templates/dynamicforms/base_form.html +44 -0
  216. dynamicforms_legacy/templates/dynamicforms/base_includes.html +51 -0
  217. dynamicforms_legacy/templates/dynamicforms/base_includes_select2.html +6 -0
  218. dynamicforms_legacy/templates/dynamicforms/base_list.html +47 -0
  219. dynamicforms_legacy/templates/dynamicforms/base_table_body.html +46 -0
  220. dynamicforms_legacy/templates/dynamicforms/base_table_filter.html +44 -0
  221. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_form.html +10 -0
  222. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes.html +46 -0
  223. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v3.html +90 -0
  224. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_includes_v4.html +77 -0
  225. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_list.html +9 -0
  226. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_body.html +4 -0
  227. dynamicforms_legacy/templates/dynamicforms/bootstrap/base_table_filter.html +5 -0
  228. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field.html +41 -0
  229. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v3.html +11 -0
  230. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/base_field_v4.html +11 -0
  231. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox.html +7 -0
  232. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/checkbox_multiple.html +7 -0
  233. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/fieldset.html +21 -0
  234. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/form.html +4 -0
  235. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/input.html +31 -0
  236. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/list_fieldset.html +18 -0
  237. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/radio.html +8 -0
  238. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/rtf_field.html +4 -0
  239. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select.html +46 -0
  240. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/select_multiple.html +17 -0
  241. dynamicforms_legacy/templates/dynamicforms/bootstrap/field/textarea.html +4 -0
  242. dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog.html +13 -0
  243. dynamicforms_legacy/templates/dynamicforms/bootstrap/modal_dialog_rest.html +23 -0
  244. dynamicforms_legacy/templates/dynamicforms/bootstrap/page.html +11 -0
  245. dynamicforms_legacy/templates/dynamicforms/field/base_field.html +55 -0
  246. dynamicforms_legacy/templates/dynamicforms/field/checkbox.html +28 -0
  247. dynamicforms_legacy/templates/dynamicforms/field/checkbox_multiple.html +16 -0
  248. dynamicforms_legacy/templates/dynamicforms/field/dict_field.html +4 -0
  249. dynamicforms_legacy/templates/dynamicforms/field/fieldset.html +4 -0
  250. dynamicforms_legacy/templates/dynamicforms/field/form.html +18 -0
  251. dynamicforms_legacy/templates/dynamicforms/field/input.html +31 -0
  252. dynamicforms_legacy/templates/dynamicforms/field/list_field.html +4 -0
  253. dynamicforms_legacy/templates/dynamicforms/field/list_fieldset.html +4 -0
  254. dynamicforms_legacy/templates/dynamicforms/field/radio.html +24 -0
  255. dynamicforms_legacy/templates/dynamicforms/field/rtf_field.html +14 -0
  256. dynamicforms_legacy/templates/dynamicforms/field/select.html +97 -0
  257. dynamicforms_legacy/templates/dynamicforms/field/select_multiple.html +67 -0
  258. dynamicforms_legacy/templates/dynamicforms/field/textarea.html +13 -0
  259. dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_form.html +13 -0
  260. dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_includes.html +225 -0
  261. dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_list.html +9 -0
  262. dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_body.html +4 -0
  263. dynamicforms_legacy/templates/dynamicforms/jquery_ui/base_table_filter.html +5 -0
  264. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/base_field.html +16 -0
  265. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox.html +7 -0
  266. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/checkbox_multiple.html +9 -0
  267. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/fieldset.html +11 -0
  268. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/form.html +4 -0
  269. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/input.html +17 -0
  270. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/list_fieldset.html +6 -0
  271. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/radio.html +8 -0
  272. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/rtf_field.html +4 -0
  273. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select.html +37 -0
  274. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/select_multiple.html +18 -0
  275. dynamicforms_legacy/templates/dynamicforms/jquery_ui/field/textarea.html +4 -0
  276. dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog.html +2 -0
  277. dynamicforms_legacy/templates/dynamicforms/jquery_ui/modal_dialog_rest.html +27 -0
  278. dynamicforms_legacy/templates/dynamicforms/jquery_ui/page.html +20 -0
  279. dynamicforms_legacy/templates/dynamicforms/modal_dialog.html +4 -0
  280. dynamicforms_legacy/templates/dynamicforms/modal_dialog_rest.html +18 -0
  281. dynamicforms_legacy/templates/dynamicforms/page.html +25 -0
  282. dynamicforms_legacy/templates/dynamicforms/rtf_field_style.html +41 -0
  283. dynamicforms_legacy/templatetags/__init__.py +0 -0
  284. dynamicforms_legacy/templatetags/dynamicforms.py +475 -0
  285. dynamicforms_legacy/urls.py +8 -0
  286. dynamicforms_legacy/views.py +1 -0
  287. dynamicforms_legacy/viewsets.py +366 -0
dynamicforms/fields.py ADDED
@@ -0,0 +1,1570 @@
1
+ import warnings
2
+
3
+ from typing import Dict, Optional
4
+ from uuid import UUID
5
+
6
+ from rest_framework import __version__ as drf_version, fields, relations
7
+ from versio.version import Version
8
+ from versio.version_scheme import Pep440VersionScheme
9
+
10
+ from .action import Actions
11
+ from .mixins import (
12
+ ActionMixin,
13
+ ChoiceMixin,
14
+ ColorFieldMixin,
15
+ ConditionalVisibilityMixin,
16
+ DateFieldMixin,
17
+ DateTimeFieldMixin,
18
+ DFField,
19
+ DisplayMode,
20
+ EnableCopyMixin,
21
+ FieldAlignment,
22
+ FieldHelpTextMixin,
23
+ FieldRenderMixin,
24
+ FileFieldMixin,
25
+ HiddenFieldMixin,
26
+ NullValueMixin,
27
+ PasswordFieldMixin,
28
+ RelatedFieldAJAXMixin,
29
+ RTFFieldMixin,
30
+ Statement,
31
+ TimeFieldMixin,
32
+ )
33
+
34
+ assert DFField # So that the linter does not complain
35
+
36
+
37
+ class AutoGeneratedField(dict):
38
+ pass
39
+
40
+
41
+ class BooleanField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.BooleanField):
42
+ def __init__(
43
+ self,
44
+ read_only=False,
45
+ write_only=False,
46
+ required=None,
47
+ default=fields.empty,
48
+ initial=fields.empty,
49
+ source=None,
50
+ label=None,
51
+ help_text=None,
52
+ style=None,
53
+ error_messages=None,
54
+ validators=None,
55
+ allow_null=False,
56
+ actions: Actions = None,
57
+ conditional_visibility: "Statement" = None,
58
+ uuid: UUID = None,
59
+ display: DisplayMode = None,
60
+ display_table: DisplayMode = None,
61
+ display_form: DisplayMode = None,
62
+ table_classes: str = "",
63
+ alignment: FieldAlignment = FieldAlignment.LEFT,
64
+ render_params: Optional[Dict] = None,
65
+ **kw,
66
+ ):
67
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
68
+ kwargs.update(kw)
69
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
70
+ kwargs["render_params"].setdefault("form_component_name", "DCheckbox")
71
+ kwargs["render_params"].setdefault("input_type", "checkbox")
72
+ kwargs["render_params"].setdefault("table", "df-tablecell-bool")
73
+ kwargs["render_params"].setdefault("field_class", "form-check-input position-checkbox-static")
74
+ kwargs["render_params"].setdefault("label_class", "form-check-label")
75
+ kwargs["render_params"].setdefault("container_class", "form-check form-group")
76
+ super().__init__(**kwargs)
77
+
78
+
79
+ class CharField(
80
+ PasswordFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.CharField
81
+ ):
82
+ def __init__(
83
+ self,
84
+ allow_blank: bool = False,
85
+ trim_whitespace: bool = True,
86
+ min_length: Optional[int] = None,
87
+ max_length: Optional[int] = None,
88
+ read_only=False,
89
+ write_only=False,
90
+ required=None,
91
+ default=fields.empty,
92
+ initial=fields.empty,
93
+ source=None,
94
+ label=None,
95
+ help_text=None,
96
+ style=None,
97
+ error_messages=None,
98
+ validators=None,
99
+ allow_null=False,
100
+ password_field=False,
101
+ actions: Actions = None,
102
+ conditional_visibility: "Statement" = None,
103
+ uuid: UUID = None,
104
+ display: DisplayMode = None,
105
+ display_table: DisplayMode = None,
106
+ display_form: DisplayMode = None,
107
+ table_classes: str = "",
108
+ alignment: FieldAlignment = FieldAlignment.LEFT,
109
+ render_params: Optional[Dict] = None,
110
+ **kw,
111
+ ):
112
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
113
+ kwargs.update(kw)
114
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
115
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
116
+ kwargs["render_params"].setdefault("input_type", "text")
117
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
118
+ super().__init__(**kwargs)
119
+
120
+
121
+ class EmailField(
122
+ PasswordFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.EmailField
123
+ ):
124
+ def __init__(
125
+ self,
126
+ allow_blank: bool = False,
127
+ trim_whitespace: bool = True,
128
+ min_length: Optional[int] = None,
129
+ max_length: Optional[int] = None,
130
+ read_only=False,
131
+ write_only=False,
132
+ required=None,
133
+ default=fields.empty,
134
+ initial=fields.empty,
135
+ source=None,
136
+ label=None,
137
+ help_text=None,
138
+ style=None,
139
+ error_messages=None,
140
+ validators=None,
141
+ allow_null=False,
142
+ password_field=False,
143
+ actions: Actions = None,
144
+ conditional_visibility: "Statement" = None,
145
+ uuid: UUID = None,
146
+ display: DisplayMode = None,
147
+ display_table: DisplayMode = None,
148
+ display_form: DisplayMode = None,
149
+ table_classes: str = "",
150
+ alignment: FieldAlignment = FieldAlignment.LEFT,
151
+ render_params: Optional[Dict] = None,
152
+ **kw,
153
+ ):
154
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
155
+ kwargs.update(kw)
156
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
157
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
158
+ kwargs["render_params"].setdefault("input_type", "email")
159
+ kwargs["render_params"].setdefault("table", "df-tablecell-email")
160
+ super().__init__(**kwargs)
161
+
162
+
163
+ class RegexField(
164
+ PasswordFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.RegexField
165
+ ):
166
+ def __init__(
167
+ self,
168
+ regex,
169
+ allow_blank: bool = False,
170
+ trim_whitespace: bool = True,
171
+ min_length: Optional[int] = None,
172
+ max_length: Optional[int] = None,
173
+ read_only=False,
174
+ write_only=False,
175
+ required=None,
176
+ default=fields.empty,
177
+ initial=fields.empty,
178
+ source=None,
179
+ label=None,
180
+ help_text=None,
181
+ style=None,
182
+ error_messages=None,
183
+ validators=None,
184
+ allow_null=False,
185
+ password_field=False,
186
+ actions: Actions = None,
187
+ conditional_visibility: "Statement" = None,
188
+ uuid: UUID = None,
189
+ display: DisplayMode = None,
190
+ display_table: DisplayMode = None,
191
+ display_form: DisplayMode = None,
192
+ table_classes: str = "",
193
+ alignment: FieldAlignment = FieldAlignment.LEFT,
194
+ render_params: Optional[Dict] = None,
195
+ **kw,
196
+ ):
197
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
198
+ kwargs.update(kw)
199
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
200
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
201
+ kwargs["render_params"].setdefault("input_type", "text")
202
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
203
+ super().__init__(**kwargs)
204
+
205
+
206
+ class SlugField(
207
+ PasswordFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.SlugField
208
+ ):
209
+ def __init__(
210
+ self,
211
+ allow_unicode=False,
212
+ allow_blank: bool = False,
213
+ trim_whitespace: bool = True,
214
+ min_length: Optional[int] = None,
215
+ max_length: Optional[int] = None,
216
+ read_only=False,
217
+ write_only=False,
218
+ required=None,
219
+ default=fields.empty,
220
+ initial=fields.empty,
221
+ source=None,
222
+ label=None,
223
+ help_text=None,
224
+ style=None,
225
+ error_messages=None,
226
+ validators=None,
227
+ allow_null=False,
228
+ password_field=False,
229
+ actions: Actions = None,
230
+ conditional_visibility: "Statement" = None,
231
+ uuid: UUID = None,
232
+ display: DisplayMode = None,
233
+ display_table: DisplayMode = None,
234
+ display_form: DisplayMode = None,
235
+ table_classes: str = "",
236
+ alignment: FieldAlignment = FieldAlignment.LEFT,
237
+ render_params: Optional[Dict] = None,
238
+ **kw,
239
+ ):
240
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
241
+ kwargs.update(kw)
242
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
243
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
244
+ kwargs["render_params"].setdefault("input_type", "text")
245
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
246
+ super().__init__(**kwargs)
247
+
248
+
249
+ class URLField(
250
+ PasswordFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.URLField
251
+ ):
252
+ def __init__(
253
+ self,
254
+ allow_blank: bool = False,
255
+ trim_whitespace: bool = True,
256
+ min_length: Optional[int] = None,
257
+ max_length: Optional[int] = None,
258
+ read_only=False,
259
+ write_only=False,
260
+ required=None,
261
+ default=fields.empty,
262
+ initial=fields.empty,
263
+ source=None,
264
+ label=None,
265
+ help_text=None,
266
+ style=None,
267
+ error_messages=None,
268
+ validators=None,
269
+ allow_null=False,
270
+ password_field=False,
271
+ actions: Actions = None,
272
+ conditional_visibility: "Statement" = None,
273
+ uuid: UUID = None,
274
+ display: DisplayMode = None,
275
+ display_table: DisplayMode = None,
276
+ display_form: DisplayMode = None,
277
+ table_classes: str = "",
278
+ alignment: FieldAlignment = FieldAlignment.LEFT,
279
+ render_params: Optional[Dict] = None,
280
+ **kw,
281
+ ):
282
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
283
+ kwargs.update(kw)
284
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
285
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
286
+ kwargs["render_params"].setdefault("input_type", "url")
287
+ kwargs["render_params"].setdefault("table", "df-tablecell-link")
288
+ kwargs["render_params"].setdefault("pattern", "https?://.*")
289
+ super().__init__(**kwargs)
290
+
291
+
292
+ class UUIDField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.UUIDField):
293
+ def __init__(
294
+ self,
295
+ format: str = "hex_verbose",
296
+ read_only=False,
297
+ write_only=False,
298
+ required=None,
299
+ default=fields.empty,
300
+ initial=fields.empty,
301
+ source=None,
302
+ label=None,
303
+ help_text=None,
304
+ style=None,
305
+ error_messages=None,
306
+ validators=None,
307
+ allow_null=False,
308
+ actions: Actions = None,
309
+ conditional_visibility: "Statement" = None,
310
+ uuid: UUID = None,
311
+ display: DisplayMode = None,
312
+ display_table: DisplayMode = None,
313
+ display_form: DisplayMode = None,
314
+ table_classes: str = "",
315
+ alignment: FieldAlignment = FieldAlignment.LEFT,
316
+ render_params: Optional[Dict] = None,
317
+ **kw,
318
+ ):
319
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
320
+ kwargs.update(kw)
321
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
322
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
323
+ kwargs["render_params"].setdefault("input_type", "text")
324
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
325
+ super().__init__(**kwargs)
326
+
327
+
328
+ class IPAddressField(
329
+ PasswordFieldMixin,
330
+ FieldRenderMixin,
331
+ ActionMixin,
332
+ FieldHelpTextMixin,
333
+ ConditionalVisibilityMixin,
334
+ fields.IPAddressField,
335
+ ):
336
+ def __init__(
337
+ self,
338
+ protocol="both",
339
+ allow_blank: bool = False,
340
+ trim_whitespace: bool = True,
341
+ min_length: Optional[int] = None,
342
+ max_length: Optional[int] = None,
343
+ read_only=False,
344
+ write_only=False,
345
+ required=None,
346
+ default=fields.empty,
347
+ initial=fields.empty,
348
+ source=None,
349
+ label=None,
350
+ help_text=None,
351
+ style=None,
352
+ error_messages=None,
353
+ validators=None,
354
+ allow_null=False,
355
+ password_field=False,
356
+ actions: Actions = None,
357
+ conditional_visibility: "Statement" = None,
358
+ uuid: UUID = None,
359
+ display: DisplayMode = None,
360
+ display_table: DisplayMode = None,
361
+ display_form: DisplayMode = None,
362
+ table_classes: str = "",
363
+ alignment: FieldAlignment = FieldAlignment.LEFT,
364
+ render_params: Optional[Dict] = None,
365
+ **kw,
366
+ ):
367
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
368
+ kwargs.update(kw)
369
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
370
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
371
+ kwargs["render_params"].setdefault("input_type", "text")
372
+ kwargs["render_params"].setdefault("table", "df-tablecell-ipaddr")
373
+ kwargs["render_params"].setdefault("minlength", 7)
374
+ kwargs["render_params"].setdefault("maxlength", 15)
375
+ kwargs["render_params"].setdefault("size", 15)
376
+ super().__init__(**kwargs)
377
+
378
+
379
+ class IntegerField(
380
+ NullValueMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.IntegerField
381
+ ):
382
+ def __init__(
383
+ self,
384
+ max_value: int = None,
385
+ min_value: int = None,
386
+ read_only=False,
387
+ write_only=False,
388
+ required=None,
389
+ default=fields.empty,
390
+ initial=fields.empty,
391
+ source=None,
392
+ label=None,
393
+ help_text=None,
394
+ style=None,
395
+ error_messages=None,
396
+ validators=None,
397
+ allow_null=False,
398
+ actions: Actions = None,
399
+ conditional_visibility: "Statement" = None,
400
+ uuid: UUID = None,
401
+ display: DisplayMode = None,
402
+ display_table: DisplayMode = None,
403
+ display_form: DisplayMode = None,
404
+ table_classes: str = "",
405
+ alignment: FieldAlignment = FieldAlignment.RIGHT,
406
+ render_params: Optional[Dict] = None,
407
+ **kw,
408
+ ):
409
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
410
+ kwargs.update(kw)
411
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
412
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
413
+ kwargs["render_params"].setdefault("input_type", "number")
414
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
415
+ super().__init__(**kwargs)
416
+
417
+
418
+ class FloatField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.FloatField):
419
+ def __init__(
420
+ self,
421
+ max_value: int = None,
422
+ min_value: int = None,
423
+ read_only=False,
424
+ write_only=False,
425
+ required=None,
426
+ default=fields.empty,
427
+ initial=fields.empty,
428
+ source=None,
429
+ label=None,
430
+ help_text=None,
431
+ style=None,
432
+ error_messages=None,
433
+ validators=None,
434
+ allow_null=False,
435
+ actions: Actions = None,
436
+ conditional_visibility: "Statement" = None,
437
+ uuid: UUID = None,
438
+ display: DisplayMode = None,
439
+ display_table: DisplayMode = None,
440
+ display_form: DisplayMode = None,
441
+ table_classes: str = "",
442
+ alignment: FieldAlignment = FieldAlignment.DECIMAL,
443
+ render_params: Optional[Dict] = None,
444
+ **kw,
445
+ ):
446
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
447
+ kwargs.update(kw)
448
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
449
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
450
+ kwargs["render_params"].setdefault("input_type", "number")
451
+ kwargs["render_params"].setdefault("table", "#TableCellFloat")
452
+ kwargs["render_params"].setdefault("table_show_zeroes", True)
453
+ kwargs["render_params"].setdefault("step", "0.1")
454
+ super().__init__(**kwargs)
455
+
456
+
457
+ class DecimalField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.DecimalField):
458
+ def __init__(
459
+ self,
460
+ max_digits,
461
+ decimal_places,
462
+ coerce_to_string=None,
463
+ max_value=None,
464
+ min_value=None,
465
+ localize=False,
466
+ rounding=None,
467
+ read_only=False,
468
+ write_only=False,
469
+ required=None,
470
+ default=fields.empty,
471
+ initial=fields.empty,
472
+ source=None,
473
+ label=None,
474
+ help_text=None,
475
+ style=None,
476
+ error_messages=None,
477
+ validators=None,
478
+ allow_null=False,
479
+ actions: Actions = None,
480
+ conditional_visibility: "Statement" = None,
481
+ uuid: UUID = None,
482
+ display: DisplayMode = None,
483
+ display_table: DisplayMode = None,
484
+ display_form: DisplayMode = None,
485
+ table_classes: str = "",
486
+ alignment: FieldAlignment = FieldAlignment.RIGHT,
487
+ render_params: Optional[Dict] = None,
488
+ **kw,
489
+ ):
490
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
491
+ kwargs.update(kw)
492
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
493
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
494
+ kwargs["render_params"].setdefault("input_type", "number")
495
+ kwargs["render_params"].setdefault("table", "#TableCellFloat")
496
+ kwargs["render_params"].setdefault("table_show_zeroes", True)
497
+ kwargs["render_params"].setdefault("step", "0.1")
498
+ super().__init__(**kwargs)
499
+
500
+
501
+ # noinspection PyShadowingBuiltins
502
+ class DateTimeField(
503
+ DateTimeFieldMixin,
504
+ NullValueMixin,
505
+ FieldRenderMixin,
506
+ ActionMixin,
507
+ FieldHelpTextMixin,
508
+ ConditionalVisibilityMixin,
509
+ fields.DateTimeField,
510
+ ):
511
+ def __init__(
512
+ self,
513
+ format=fields.empty,
514
+ input_formats=None,
515
+ default_timezone=None,
516
+ read_only=False,
517
+ write_only=False,
518
+ required=None,
519
+ default=fields.empty,
520
+ initial=fields.empty,
521
+ source=None,
522
+ label=None,
523
+ help_text=None,
524
+ style=None,
525
+ error_messages=None,
526
+ validators=None,
527
+ allow_null=False,
528
+ actions: Actions = None,
529
+ conditional_visibility: "Statement" = None,
530
+ uuid: UUID = None,
531
+ display: DisplayMode = None,
532
+ display_table: DisplayMode = None,
533
+ display_form: DisplayMode = None,
534
+ table_classes: str = "",
535
+ alignment: FieldAlignment = FieldAlignment.LEFT,
536
+ render_params: Optional[Dict] = None,
537
+ **kw,
538
+ ):
539
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
540
+ kwargs.update(kw)
541
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
542
+ kwargs["render_params"].setdefault("form_component_name", "DDateTime")
543
+ kwargs["render_params"].setdefault("input_type", "datetime")
544
+ kwargs["render_params"].setdefault("table", "#TableCellDateTime")
545
+ kwargs["render_params"].setdefault("table_format", "dd.MM.yyyy HH:mm")
546
+ kwargs["render_params"].setdefault("form_format", "dd.MM.yyyy HH:mm")
547
+ super().__init__(**kwargs)
548
+
549
+
550
+ # noinspection PyShadowingBuiltins
551
+ class DateField(
552
+ DateFieldMixin,
553
+ NullValueMixin,
554
+ FieldRenderMixin,
555
+ ActionMixin,
556
+ FieldHelpTextMixin,
557
+ ConditionalVisibilityMixin,
558
+ fields.DateField,
559
+ ):
560
+ def __init__(
561
+ self,
562
+ format=fields.empty,
563
+ input_formats=None,
564
+ read_only=False,
565
+ write_only=False,
566
+ required=None,
567
+ default=fields.empty,
568
+ initial=fields.empty,
569
+ source=None,
570
+ label=None,
571
+ help_text=None,
572
+ style=None,
573
+ error_messages=None,
574
+ validators=None,
575
+ allow_null=False,
576
+ actions: Actions = None,
577
+ conditional_visibility: "Statement" = None,
578
+ uuid: UUID = None,
579
+ display: DisplayMode = None,
580
+ display_table: DisplayMode = None,
581
+ display_form: DisplayMode = None,
582
+ table_classes: str = "",
583
+ alignment: FieldAlignment = FieldAlignment.LEFT,
584
+ render_params: Optional[Dict] = None,
585
+ **kw,
586
+ ):
587
+ self.time_step = kw.pop("time_step", None)
588
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
589
+ kwargs.update(kw)
590
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
591
+ kwargs["render_params"].setdefault("form_component_name", "DDateTime")
592
+ kwargs["render_params"].setdefault("input_type", "date")
593
+ kwargs["render_params"].setdefault("table", "#TableCellDateTime")
594
+ kwargs["render_params"].setdefault("table_format", "dd.MM.yyyy")
595
+ kwargs["render_params"].setdefault("form_format", "dd.MM.yyyy")
596
+ super().__init__(**kwargs)
597
+
598
+
599
+ # noinspection PyShadowingBuiltins
600
+ class TimeField(
601
+ TimeFieldMixin,
602
+ NullValueMixin,
603
+ FieldRenderMixin,
604
+ ActionMixin,
605
+ FieldHelpTextMixin,
606
+ ConditionalVisibilityMixin,
607
+ fields.TimeField,
608
+ ):
609
+ def __init__(
610
+ self,
611
+ format=fields.empty,
612
+ input_formats=None,
613
+ read_only=False,
614
+ write_only=False,
615
+ required=None,
616
+ default=fields.empty,
617
+ initial=fields.empty,
618
+ source=None,
619
+ label=None,
620
+ help_text=None,
621
+ style=None,
622
+ error_messages=None,
623
+ validators=None,
624
+ allow_null=False,
625
+ actions: Actions = None,
626
+ conditional_visibility: "Statement" = None,
627
+ uuid: UUID = None,
628
+ display: DisplayMode = None,
629
+ display_table: DisplayMode = None,
630
+ display_form: DisplayMode = None,
631
+ table_classes: str = "",
632
+ alignment: FieldAlignment = FieldAlignment.LEFT,
633
+ render_params: Optional[Dict] = None,
634
+ **kw,
635
+ ):
636
+ self.time_step = kw.pop("time_step", None)
637
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
638
+ kwargs.update(kw)
639
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
640
+ kwargs["render_params"].setdefault("form_component_name", "DDateTime")
641
+ kwargs["render_params"].setdefault("input_type", "time")
642
+ kwargs["render_params"].setdefault("table", "#TableCellDateTime")
643
+ kwargs["render_params"].setdefault("table_format", "HH:mm")
644
+ kwargs["render_params"].setdefault("form_format", "HH:mm")
645
+ super().__init__(**kwargs)
646
+
647
+
648
+ class DurationField(
649
+ FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.DurationField
650
+ ):
651
+ def __init__(
652
+ self,
653
+ max_value: int = None,
654
+ min_value: int = None,
655
+ read_only=False,
656
+ write_only=False,
657
+ required=None,
658
+ default=fields.empty,
659
+ initial=fields.empty,
660
+ source=None,
661
+ label=None,
662
+ help_text=None,
663
+ style=None,
664
+ error_messages=None,
665
+ validators=None,
666
+ allow_null=False,
667
+ actions: Actions = None,
668
+ conditional_visibility: "Statement" = None,
669
+ uuid: UUID = None,
670
+ display: DisplayMode = None,
671
+ display_table: DisplayMode = None,
672
+ display_form: DisplayMode = None,
673
+ table_classes: str = "",
674
+ alignment: FieldAlignment = FieldAlignment.RIGHT,
675
+ render_params: Optional[Dict] = None,
676
+ **kw,
677
+ ):
678
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
679
+ kwargs.update(kw)
680
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
681
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
682
+ kwargs["render_params"].setdefault("input_type", "text")
683
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
684
+ super().__init__(**kwargs)
685
+
686
+
687
+ class ChoiceField(
688
+ ChoiceMixin,
689
+ EnableCopyMixin,
690
+ FieldRenderMixin,
691
+ ActionMixin,
692
+ FieldHelpTextMixin,
693
+ ConditionalVisibilityMixin,
694
+ fields.ChoiceField,
695
+ ):
696
+ def __init__(
697
+ self,
698
+ choices,
699
+ html_cutoff: int = fields.ChoiceField.html_cutoff,
700
+ html_cutoff_text: str = fields.ChoiceField.html_cutoff_text,
701
+ allow_blank: bool = False,
702
+ read_only=False,
703
+ write_only=False,
704
+ required=None,
705
+ default=fields.empty,
706
+ initial=fields.empty,
707
+ source=None,
708
+ label=None,
709
+ help_text=None,
710
+ style=None,
711
+ error_messages=None,
712
+ validators=None,
713
+ allow_null=False,
714
+ allow_tags=False,
715
+ actions: Actions = None,
716
+ conditional_visibility: "Statement" = None,
717
+ uuid: UUID = None,
718
+ display: DisplayMode = None,
719
+ display_table: DisplayMode = None,
720
+ display_form: DisplayMode = None,
721
+ table_classes: str = "",
722
+ alignment: FieldAlignment = FieldAlignment.LEFT,
723
+ render_params: Optional[Dict] = None,
724
+ **kw,
725
+ ):
726
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
727
+ kwargs.update(kw)
728
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
729
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
730
+ kwargs["render_params"].setdefault("input_type", "text")
731
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
732
+ kwargs["render_params"].setdefault("multiple", False)
733
+ kwargs["render_params"].setdefault("allow_tags", allow_tags)
734
+ super().__init__(**kwargs)
735
+
736
+
737
+ class MultipleChoiceField(
738
+ ChoiceMixin,
739
+ EnableCopyMixin,
740
+ FieldRenderMixin,
741
+ ActionMixin,
742
+ FieldHelpTextMixin,
743
+ ConditionalVisibilityMixin,
744
+ fields.MultipleChoiceField,
745
+ ):
746
+ def __init__(
747
+ self,
748
+ allow_empty: bool = True,
749
+ html_cutoff: int = fields.ChoiceField.html_cutoff,
750
+ html_cutoff_text: str = fields.ChoiceField.html_cutoff_text,
751
+ allow_blank: bool = False,
752
+ read_only=False,
753
+ write_only=False,
754
+ required=None,
755
+ default=fields.empty,
756
+ initial=fields.empty,
757
+ source=None,
758
+ label=None,
759
+ help_text=None,
760
+ style=None,
761
+ error_messages=None,
762
+ validators=None,
763
+ allow_null=False,
764
+ allow_tags=False,
765
+ actions: Actions = None,
766
+ conditional_visibility: "Statement" = None,
767
+ uuid: UUID = None,
768
+ display: DisplayMode = None,
769
+ display_table: DisplayMode = None,
770
+ display_form: DisplayMode = None,
771
+ table_classes: str = "",
772
+ alignment: FieldAlignment = FieldAlignment.LEFT,
773
+ render_params: Optional[Dict] = None,
774
+ **kw,
775
+ ):
776
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
777
+ kwargs.update(kw)
778
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
779
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
780
+ kwargs["render_params"].setdefault("input_type", "text")
781
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
782
+ kwargs["render_params"].setdefault("multiple", True)
783
+ kwargs["render_params"].setdefault("allow_tags", allow_tags)
784
+ super().__init__(**kwargs)
785
+
786
+
787
+ class FilePathField(
788
+ ChoiceMixin,
789
+ EnableCopyMixin,
790
+ FieldRenderMixin,
791
+ ActionMixin,
792
+ FieldHelpTextMixin,
793
+ ConditionalVisibilityMixin,
794
+ fields.FilePathField,
795
+ ):
796
+ def __init__(
797
+ self,
798
+ path,
799
+ match=None,
800
+ recursive=False,
801
+ allow_files=True,
802
+ allow_folders=False,
803
+ required=None,
804
+ html_cutoff: int = fields.ChoiceField.html_cutoff,
805
+ html_cutoff_text: str = fields.ChoiceField.html_cutoff_text,
806
+ allow_blank: bool = False,
807
+ read_only=False,
808
+ write_only=False,
809
+ default=fields.empty,
810
+ initial=fields.empty,
811
+ source=None,
812
+ label=None,
813
+ help_text=None,
814
+ style=None,
815
+ error_messages=None,
816
+ validators=None,
817
+ allow_null=False,
818
+ allow_tags=False,
819
+ actions: Actions = None,
820
+ conditional_visibility: "Statement" = None,
821
+ uuid: UUID = None,
822
+ display: DisplayMode = None,
823
+ display_table: DisplayMode = None,
824
+ display_form: DisplayMode = None,
825
+ table_classes: str = "",
826
+ alignment: FieldAlignment = FieldAlignment.LEFT,
827
+ render_params: Optional[Dict] = None,
828
+ **kw,
829
+ ):
830
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
831
+ kwargs.update(kw)
832
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
833
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
834
+ kwargs["render_params"].setdefault("input_type", "text")
835
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
836
+ kwargs["render_params"].setdefault("multiple", False)
837
+ kwargs["render_params"].setdefault("allow_tags", allow_tags)
838
+ super().__init__(**kwargs)
839
+
840
+
841
+ class FileField(
842
+ FileFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.FileField
843
+ ):
844
+ def __init__(
845
+ self,
846
+ max_length: Optional[int] = None,
847
+ allow_empty_file: bool = False,
848
+ read_only=False,
849
+ write_only=False,
850
+ required=None,
851
+ default=fields.empty,
852
+ initial=fields.empty,
853
+ source=None,
854
+ label=None,
855
+ help_text=None,
856
+ style=None,
857
+ error_messages=None,
858
+ validators=None,
859
+ allow_null=False,
860
+ actions: Actions = None,
861
+ conditional_visibility: "Statement" = None,
862
+ uuid: UUID = None,
863
+ display: DisplayMode = None,
864
+ display_table: DisplayMode = None,
865
+ display_form: DisplayMode = None,
866
+ table_classes: str = "",
867
+ alignment: FieldAlignment = FieldAlignment.LEFT,
868
+ render_params: Optional[Dict] = None,
869
+ **kw,
870
+ ):
871
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
872
+ kwargs.update(kw)
873
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
874
+ kwargs["render_params"].setdefault("form_component_name", "DFile")
875
+ kwargs["render_params"].setdefault("input_type", "file")
876
+ kwargs["render_params"].setdefault("table", "df-tablecell-file")
877
+ super().__init__(**kwargs)
878
+
879
+
880
+ class ImageField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.ImageField):
881
+ def __init__(
882
+ self,
883
+ max_length: Optional[int] = None,
884
+ allow_empty_file: bool = False,
885
+ read_only=False,
886
+ write_only=False,
887
+ required=None,
888
+ default=fields.empty,
889
+ initial=fields.empty,
890
+ source=None,
891
+ label=None,
892
+ help_text=None,
893
+ style=None,
894
+ error_messages=None,
895
+ validators=None,
896
+ allow_null=False,
897
+ actions: Actions = None,
898
+ conditional_visibility: "Statement" = None,
899
+ uuid: UUID = None,
900
+ display: DisplayMode = None,
901
+ display_table: DisplayMode = None,
902
+ display_form: DisplayMode = None,
903
+ table_classes: str = "",
904
+ alignment: FieldAlignment = FieldAlignment.LEFT,
905
+ render_params: Optional[Dict] = None,
906
+ **kw,
907
+ ):
908
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
909
+ kwargs.update(kw)
910
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
911
+ kwargs["render_params"].setdefault("form_component_name", "DFile")
912
+ kwargs["render_params"].setdefault("input_type", "file")
913
+ kwargs["render_params"].setdefault("table", "df-tablecell-file")
914
+ super().__init__(**kwargs)
915
+
916
+
917
+ class ListField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.ListField):
918
+ def __init__(
919
+ self,
920
+ child=fields.ListField.child,
921
+ allow_empty: bool = True,
922
+ max_length: Optional[int] = None,
923
+ min_length: Optional[int] = None,
924
+ read_only=False,
925
+ write_only=False,
926
+ required=None,
927
+ default=fields.empty,
928
+ initial=fields.empty,
929
+ source=None,
930
+ label=None,
931
+ help_text=None,
932
+ style=None,
933
+ error_messages=None,
934
+ validators=None,
935
+ allow_null=False,
936
+ actions: Actions = None,
937
+ conditional_visibility: "Statement" = None,
938
+ uuid: UUID = None,
939
+ display: DisplayMode = None,
940
+ display_table: DisplayMode = None,
941
+ display_form: DisplayMode = None,
942
+ table_classes: str = "",
943
+ alignment: FieldAlignment = FieldAlignment.LEFT,
944
+ render_params: Optional[Dict] = None,
945
+ **kw,
946
+ ):
947
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
948
+ kwargs.update(kw)
949
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
950
+ kwargs["render_params"].setdefault("form_component_name", "DFWidgetListField")
951
+ kwargs["render_params"].setdefault("input_type", "text")
952
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
953
+ super().__init__(**kwargs)
954
+
955
+
956
+ class DictField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.DictField):
957
+ def __init__(
958
+ self,
959
+ child=fields.DictField.child,
960
+ allow_empty: bool = True,
961
+ read_only=False,
962
+ write_only=False,
963
+ required=None,
964
+ default=fields.empty,
965
+ initial=fields.empty,
966
+ source=None,
967
+ label=None,
968
+ help_text=None,
969
+ style=None,
970
+ error_messages=None,
971
+ validators=None,
972
+ allow_null=False,
973
+ actions: Actions = None,
974
+ conditional_visibility: "Statement" = None,
975
+ uuid: UUID = None,
976
+ display: DisplayMode = None,
977
+ display_table: DisplayMode = None,
978
+ display_form: DisplayMode = None,
979
+ table_classes: str = "",
980
+ alignment: FieldAlignment = FieldAlignment.LEFT,
981
+ render_params: Optional[Dict] = None,
982
+ **kw,
983
+ ):
984
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
985
+ kwargs.update(kw)
986
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
987
+ kwargs["render_params"].setdefault("form_component_name", "DFWidgetDictField")
988
+ kwargs["render_params"].setdefault("input_type", "text")
989
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
990
+ super().__init__(**kwargs)
991
+
992
+
993
+ if hasattr(fields, "HStoreField"):
994
+
995
+ class HStoreField(
996
+ FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.HStoreField
997
+ ):
998
+ def __init__(
999
+ self,
1000
+ child=fields.DictField.child,
1001
+ allow_empty: bool = True,
1002
+ read_only=False,
1003
+ write_only=False,
1004
+ required=None,
1005
+ default=fields.empty,
1006
+ initial=fields.empty,
1007
+ source=None,
1008
+ label=None,
1009
+ help_text=None,
1010
+ style=None,
1011
+ error_messages=None,
1012
+ validators=None,
1013
+ allow_null=False,
1014
+ actions: Actions = None,
1015
+ conditional_visibility: "Statement" = None,
1016
+ uuid: UUID = None,
1017
+ display: DisplayMode = None,
1018
+ display_table: DisplayMode = None,
1019
+ display_form: DisplayMode = None,
1020
+ table_classes: str = "",
1021
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1022
+ render_params: Optional[Dict] = None,
1023
+ **kw,
1024
+ ):
1025
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1026
+ kwargs.update(kw)
1027
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1028
+ kwargs["render_params"].setdefault("form_component_name", "DFWidgetDictField")
1029
+ kwargs["render_params"].setdefault("input_type", "text")
1030
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1031
+ super().__init__(**kwargs)
1032
+
1033
+
1034
+ class JSONField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.JSONField):
1035
+ def __init__(
1036
+ self,
1037
+ binary: bool = False,
1038
+ encoder=None,
1039
+ decoder=None,
1040
+ read_only=False,
1041
+ write_only=False,
1042
+ required=None,
1043
+ default=fields.empty,
1044
+ initial=fields.empty,
1045
+ source=None,
1046
+ label=None,
1047
+ help_text=None,
1048
+ style=None,
1049
+ error_messages=None,
1050
+ validators=None,
1051
+ allow_null=False,
1052
+ actions: Actions = None,
1053
+ conditional_visibility: "Statement" = None,
1054
+ uuid: UUID = None,
1055
+ display: DisplayMode = None,
1056
+ display_table: DisplayMode = None,
1057
+ display_form: DisplayMode = None,
1058
+ table_classes: str = "",
1059
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1060
+ render_params: Optional[Dict] = None,
1061
+ **kw,
1062
+ ):
1063
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1064
+ kwargs.update(kw)
1065
+ if Version(drf_version, scheme=Pep440VersionScheme) < Version("3.12", scheme=Pep440VersionScheme):
1066
+ kwargs.pop("decoder", None)
1067
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1068
+ kwargs["render_params"].setdefault("form_component_name", "DTextArea")
1069
+ kwargs["render_params"].setdefault("input_type", "text")
1070
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1071
+ super().__init__(**kwargs)
1072
+
1073
+
1074
+ # noinspection PyAbstractClass
1075
+ class ReadOnlyField(
1076
+ FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.ReadOnlyField
1077
+ ):
1078
+ def __init__(
1079
+ self,
1080
+ read_only=False,
1081
+ write_only=False,
1082
+ required=None,
1083
+ default=fields.empty,
1084
+ initial=fields.empty,
1085
+ source=None,
1086
+ label=None,
1087
+ help_text=None,
1088
+ style=None,
1089
+ error_messages=None,
1090
+ validators=None,
1091
+ allow_null=False,
1092
+ actions: Actions = None,
1093
+ conditional_visibility: "Statement" = None,
1094
+ uuid: UUID = None,
1095
+ display: DisplayMode = None,
1096
+ display_table: DisplayMode = None,
1097
+ display_form: DisplayMode = None,
1098
+ table_classes: str = "",
1099
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1100
+ render_params: Optional[Dict] = None,
1101
+ **kw,
1102
+ ):
1103
+ warnings.warn("deprecated - wrong approach! Use read_only attribute instead.", DeprecationWarning, stacklevel=2)
1104
+ read_only = True # NOQA
1105
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1106
+ kwargs.update(kw)
1107
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1108
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
1109
+ kwargs["render_params"].setdefault("input_type", "text")
1110
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1111
+ super().__init__(**kwargs)
1112
+
1113
+
1114
+ # noinspection PyAbstractClass
1115
+ class HiddenField(
1116
+ HiddenFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.HiddenField
1117
+ ):
1118
+ def __init__(
1119
+ self,
1120
+ read_only=False,
1121
+ write_only=False,
1122
+ required=None,
1123
+ default=fields.empty,
1124
+ initial=fields.empty,
1125
+ source=None,
1126
+ label=None,
1127
+ help_text=None,
1128
+ style=None,
1129
+ error_messages=None,
1130
+ validators=None,
1131
+ allow_null=False,
1132
+ actions: Actions = None,
1133
+ conditional_visibility: "Statement" = None,
1134
+ uuid: UUID = None,
1135
+ display: DisplayMode = None,
1136
+ display_table: DisplayMode = None,
1137
+ display_form: DisplayMode = None,
1138
+ table_classes: str = "",
1139
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1140
+ render_params: Optional[Dict] = None,
1141
+ **kw,
1142
+ ):
1143
+ warnings.warn(
1144
+ "deprecated - wrong approach! Use display(|_table|_form) attributes instead.",
1145
+ DeprecationWarning,
1146
+ stacklevel=2,
1147
+ )
1148
+ display = DisplayMode.HIDDEN # NOQA
1149
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1150
+ kwargs.update(kw)
1151
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1152
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
1153
+ kwargs["render_params"].setdefault("input_type", "text")
1154
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1155
+ super().__init__(**kwargs)
1156
+
1157
+
1158
+ # noinspection PyAbstractClass
1159
+ class SerializerMethodField(
1160
+ FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.SerializerMethodField
1161
+ ):
1162
+ def __init__(
1163
+ self,
1164
+ method_name=None,
1165
+ read_only=False,
1166
+ write_only=False,
1167
+ required=None,
1168
+ default=fields.empty,
1169
+ initial=fields.empty,
1170
+ source=None,
1171
+ label=None,
1172
+ help_text=None,
1173
+ style=None,
1174
+ error_messages=None,
1175
+ validators=None,
1176
+ allow_null=False,
1177
+ actions: Actions = None,
1178
+ conditional_visibility: "Statement" = None,
1179
+ uuid: UUID = None,
1180
+ display: DisplayMode = None,
1181
+ display_table: DisplayMode = None,
1182
+ display_form: DisplayMode = None,
1183
+ table_classes: str = "",
1184
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1185
+ render_params: Optional[Dict] = None,
1186
+ **kw,
1187
+ ):
1188
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1189
+ kwargs.update(kw)
1190
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1191
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
1192
+ kwargs["render_params"].setdefault("input_type", "text")
1193
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1194
+ super().__init__(**kwargs)
1195
+
1196
+
1197
+ class ModelField(FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.ModelField):
1198
+ def __init__(
1199
+ self,
1200
+ model_field,
1201
+ max_length: Optional[int] = None,
1202
+ read_only=False,
1203
+ write_only=False,
1204
+ required=None,
1205
+ default=fields.empty,
1206
+ initial=fields.empty,
1207
+ source=None,
1208
+ label=None,
1209
+ help_text=None,
1210
+ style=None,
1211
+ error_messages=None,
1212
+ validators=None,
1213
+ allow_null=False,
1214
+ actions: Actions = None,
1215
+ conditional_visibility: "Statement" = None,
1216
+ uuid: UUID = None,
1217
+ display: DisplayMode = None,
1218
+ display_table: DisplayMode = None,
1219
+ display_form: DisplayMode = None,
1220
+ table_classes: str = "",
1221
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1222
+ render_params: Optional[Dict] = None,
1223
+ **kw,
1224
+ ):
1225
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1226
+ kwargs.update(kw)
1227
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1228
+ kwargs["render_params"].setdefault("form_component_name", "DInput")
1229
+ kwargs["render_params"].setdefault("input_type", "text")
1230
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1231
+ super().__init__(**kwargs)
1232
+
1233
+
1234
+ class StringRelatedField(
1235
+ RelatedFieldAJAXMixin,
1236
+ FieldRenderMixin,
1237
+ ActionMixin,
1238
+ FieldHelpTextMixin,
1239
+ ConditionalVisibilityMixin,
1240
+ relations.StringRelatedField,
1241
+ ):
1242
+ def __init__(
1243
+ self,
1244
+ read_only=False,
1245
+ write_only=False,
1246
+ required=None,
1247
+ default=fields.empty,
1248
+ initial=fields.empty,
1249
+ source=None,
1250
+ label=None,
1251
+ help_text=None,
1252
+ style=None,
1253
+ error_messages=None,
1254
+ validators=None,
1255
+ allow_null=False,
1256
+ url_reverse: Optional[str] = None,
1257
+ placeholder: Optional[str] = None,
1258
+ additional_parameters: Optional[Dict] = None,
1259
+ query_field: str = "query",
1260
+ value_field: str = "choice_id",
1261
+ text_field: str = "choice_text",
1262
+ actions: Actions = None,
1263
+ conditional_visibility: "Statement" = None,
1264
+ uuid: UUID = None,
1265
+ display: DisplayMode = None,
1266
+ display_table: DisplayMode = None,
1267
+ display_form: DisplayMode = None,
1268
+ table_classes: str = "",
1269
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1270
+ render_params: Optional[Dict] = None,
1271
+ **kw,
1272
+ ):
1273
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1274
+ kwargs.update(kw)
1275
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1276
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1277
+ kwargs["render_params"].setdefault("input_type", "text")
1278
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1279
+ kwargs["render_params"].setdefault("multiple", False)
1280
+ super().__init__(**kwargs)
1281
+
1282
+
1283
+ class PrimaryKeyRelatedField(
1284
+ RelatedFieldAJAXMixin,
1285
+ FieldRenderMixin,
1286
+ ActionMixin,
1287
+ FieldHelpTextMixin,
1288
+ ConditionalVisibilityMixin,
1289
+ relations.PrimaryKeyRelatedField,
1290
+ ):
1291
+ def __init__(
1292
+ self,
1293
+ read_only=False,
1294
+ write_only=False,
1295
+ required=None,
1296
+ default=fields.empty,
1297
+ initial=fields.empty,
1298
+ source=None,
1299
+ label=None,
1300
+ help_text=None,
1301
+ style=None,
1302
+ error_messages=None,
1303
+ validators=None,
1304
+ allow_null=False,
1305
+ url_reverse: Optional[str] = None,
1306
+ placeholder: Optional[str] = None,
1307
+ additional_parameters: Optional[Dict] = None,
1308
+ query_field: str = "query",
1309
+ value_field: str = "choice_id",
1310
+ text_field: str = "choice_text",
1311
+ actions: Actions = None,
1312
+ conditional_visibility: "Statement" = None,
1313
+ uuid: UUID = None,
1314
+ display: DisplayMode = None,
1315
+ display_table: DisplayMode = None,
1316
+ display_form: DisplayMode = None,
1317
+ table_classes: str = "",
1318
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1319
+ render_params: Optional[Dict] = None,
1320
+ **kw,
1321
+ ):
1322
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1323
+ kwargs.update(kw)
1324
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1325
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1326
+ kwargs["render_params"].setdefault("input_type", "text")
1327
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1328
+ kwargs["render_params"].setdefault("multiple", False)
1329
+ super().__init__(**kwargs)
1330
+
1331
+
1332
+ class HyperlinkedRelatedField(
1333
+ RelatedFieldAJAXMixin,
1334
+ FieldRenderMixin,
1335
+ ActionMixin,
1336
+ FieldHelpTextMixin,
1337
+ ConditionalVisibilityMixin,
1338
+ relations.HyperlinkedRelatedField,
1339
+ ):
1340
+ def __init__(
1341
+ self,
1342
+ view_name=None,
1343
+ read_only=False,
1344
+ write_only=False,
1345
+ required=None,
1346
+ default=fields.empty,
1347
+ initial=fields.empty,
1348
+ source=None,
1349
+ label=None,
1350
+ help_text=None,
1351
+ style=None,
1352
+ error_messages=None,
1353
+ validators=None,
1354
+ allow_null=False,
1355
+ url_reverse: Optional[str] = None,
1356
+ placeholder: Optional[str] = None,
1357
+ additional_parameters: Optional[Dict] = None,
1358
+ query_field: str = "query",
1359
+ value_field: str = "choice_id",
1360
+ text_field: str = "choice_text",
1361
+ actions: Actions = None,
1362
+ conditional_visibility: "Statement" = None,
1363
+ uuid: UUID = None,
1364
+ display: DisplayMode = None,
1365
+ display_table: DisplayMode = None,
1366
+ display_form: DisplayMode = None,
1367
+ table_classes: str = "",
1368
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1369
+ render_params: Optional[Dict] = None,
1370
+ **kw,
1371
+ ):
1372
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1373
+ kwargs.update(kw)
1374
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1375
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1376
+ kwargs["render_params"].setdefault("input_type", "text")
1377
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1378
+ kwargs["render_params"].setdefault("multiple", False)
1379
+ super().__init__(**kwargs)
1380
+
1381
+
1382
+ class HyperlinkedIdentityField(
1383
+ RelatedFieldAJAXMixin,
1384
+ FieldRenderMixin,
1385
+ ActionMixin,
1386
+ FieldHelpTextMixin,
1387
+ ConditionalVisibilityMixin,
1388
+ relations.HyperlinkedIdentityField,
1389
+ ):
1390
+ def __init__(
1391
+ self,
1392
+ view_name=None,
1393
+ read_only=False,
1394
+ write_only=False,
1395
+ required=None,
1396
+ default=fields.empty,
1397
+ initial=fields.empty,
1398
+ source=None,
1399
+ label=None,
1400
+ help_text=None,
1401
+ style=None,
1402
+ error_messages=None,
1403
+ validators=None,
1404
+ allow_null=False,
1405
+ url_reverse: Optional[str] = None,
1406
+ placeholder: Optional[str] = None,
1407
+ additional_parameters: Optional[Dict] = None,
1408
+ query_field: str = "query",
1409
+ value_field: str = "choice_id",
1410
+ text_field: str = "choice_text",
1411
+ actions: Actions = None,
1412
+ conditional_visibility: "Statement" = None,
1413
+ uuid: UUID = None,
1414
+ display: DisplayMode = None,
1415
+ display_table: DisplayMode = None,
1416
+ display_form: DisplayMode = None,
1417
+ table_classes: str = "",
1418
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1419
+ render_params: Optional[Dict] = None,
1420
+ **kw,
1421
+ ):
1422
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1423
+ kwargs.update(kw)
1424
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1425
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1426
+ kwargs["render_params"].setdefault("input_type", "text")
1427
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1428
+ kwargs["render_params"].setdefault("multiple", False)
1429
+ super().__init__(**kwargs)
1430
+
1431
+
1432
+ class SlugRelatedField(
1433
+ RelatedFieldAJAXMixin,
1434
+ FieldRenderMixin,
1435
+ ActionMixin,
1436
+ FieldHelpTextMixin,
1437
+ ConditionalVisibilityMixin,
1438
+ relations.SlugRelatedField,
1439
+ ):
1440
+ def __init__(
1441
+ self,
1442
+ slug_field=None,
1443
+ read_only=False,
1444
+ write_only=False,
1445
+ required=None,
1446
+ default=fields.empty,
1447
+ initial=fields.empty,
1448
+ source=None,
1449
+ label=None,
1450
+ help_text=None,
1451
+ style=None,
1452
+ error_messages=None,
1453
+ validators=None,
1454
+ allow_null=False,
1455
+ url_reverse: Optional[str] = None,
1456
+ placeholder: Optional[str] = None,
1457
+ additional_parameters: Optional[Dict] = None,
1458
+ query_field: str = "query",
1459
+ value_field: str = "choice_id",
1460
+ text_field: str = "choice_text",
1461
+ actions: Actions = None,
1462
+ conditional_visibility: "Statement" = None,
1463
+ uuid: UUID = None,
1464
+ display: DisplayMode = None,
1465
+ display_table: DisplayMode = None,
1466
+ display_form: DisplayMode = None,
1467
+ table_classes: str = "",
1468
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1469
+ render_params: Optional[Dict] = None,
1470
+ **kw,
1471
+ ):
1472
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1473
+ kwargs.update(kw)
1474
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1475
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1476
+ kwargs["render_params"].setdefault("input_type", "text")
1477
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1478
+ kwargs["render_params"].setdefault("multiple", False)
1479
+ super().__init__(**kwargs)
1480
+
1481
+
1482
+ class ManyRelatedField(
1483
+ RelatedFieldAJAXMixin,
1484
+ FieldRenderMixin,
1485
+ ActionMixin,
1486
+ FieldHelpTextMixin,
1487
+ ConditionalVisibilityMixin,
1488
+ relations.ManyRelatedField,
1489
+ ):
1490
+ def __init__(
1491
+ self,
1492
+ child_relation=None,
1493
+ read_only=False,
1494
+ write_only=False,
1495
+ required=None,
1496
+ default=fields.empty,
1497
+ initial=fields.empty,
1498
+ source=None,
1499
+ label=None,
1500
+ help_text=None,
1501
+ style=None,
1502
+ error_messages=None,
1503
+ validators=None,
1504
+ allow_null=True,
1505
+ actions: Actions = None,
1506
+ conditional_visibility: "Statement" = None,
1507
+ uuid: UUID = None,
1508
+ display: DisplayMode = None,
1509
+ display_table: DisplayMode = None,
1510
+ display_form: DisplayMode = None,
1511
+ table_classes: str = "",
1512
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1513
+ render_params: Optional[Dict] = None,
1514
+ **kw,
1515
+ ):
1516
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1517
+ kwargs.update(kw)
1518
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1519
+ kwargs["render_params"].setdefault("form_component_name", "DSelect")
1520
+ kwargs["render_params"].setdefault("input_type", "text")
1521
+ kwargs["render_params"].setdefault("table", "df-tablecell-plaintext")
1522
+ kwargs["render_params"].setdefault("multiple", True)
1523
+ super().__init__(**kwargs)
1524
+
1525
+
1526
+ class RTFField(
1527
+ RTFFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.CharField
1528
+ ):
1529
+ def __init__(
1530
+ self,
1531
+ actions: Actions = None,
1532
+ conditional_visibility: "Statement" = None,
1533
+ uuid: UUID = None,
1534
+ display: DisplayMode = None,
1535
+ display_table: DisplayMode = None,
1536
+ display_form: DisplayMode = None,
1537
+ table_classes: str = "",
1538
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1539
+ render_params: Optional[Dict] = None,
1540
+ **kw,
1541
+ ):
1542
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1543
+ kwargs.update(kw)
1544
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1545
+ super().__init__(**kwargs)
1546
+
1547
+
1548
+ class ColorField(
1549
+ ColorFieldMixin, FieldRenderMixin, ActionMixin, FieldHelpTextMixin, ConditionalVisibilityMixin, fields.CharField
1550
+ ):
1551
+ def __init__(
1552
+ self,
1553
+ actions: Actions = None,
1554
+ conditional_visibility: "Statement" = None,
1555
+ uuid: UUID = None,
1556
+ display: DisplayMode = None,
1557
+ display_table: DisplayMode = None,
1558
+ display_form: DisplayMode = None,
1559
+ table_classes: str = "",
1560
+ alignment: FieldAlignment = FieldAlignment.LEFT,
1561
+ render_params: Optional[Dict] = None,
1562
+ **kw,
1563
+ ):
1564
+ kwargs = {k: v for k, v in locals().items() if not k.startswith(("__", "self", "kw"))}
1565
+ kwargs.update(kw)
1566
+ kwargs["render_params"] = kwargs.get("render_params", None) or {}
1567
+ kwargs["render_params"].setdefault("form_component_name", "DColor")
1568
+ kwargs["render_params"].setdefault("input_type", "text")
1569
+ kwargs["render_params"].setdefault("table", "df-tablecell-color")
1570
+ super().__init__(**kwargs)