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