django-viewflow 2.0.0b7__tar.gz → 2.0.2__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.
- django-viewflow-2.0.2/LICENSE.django +37 -0
- {django-viewflow-2.0.0b7/django_viewflow.egg-info → django-viewflow-2.0.2}/PKG-INFO +12 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/README.md +22 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2/django_viewflow.egg-info}/PKG-INFO +12 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/django_viewflow.egg-info/SOURCES.txt +55 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/django_viewflow.egg-info/requires.txt +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/setup.cfg +5 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/setup.py +9 -6
- django-viewflow-2.0.2/tests/test_middleware.py +60 -0
- django-viewflow-2.0.2/tests/test_templates.py +58 -0
- django-viewflow-2.0.2/tests/test_templatetags__viewflow.py +82 -0
- django-viewflow-2.0.2/tests/test_this_object.py +47 -0
- django-viewflow-2.0.2/tests/test_urls__base.py +60 -0
- django-viewflow-2.0.2/tests/test_utils__package.py +33 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/__init__.py +11 -13
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/apps.py +2 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/conf.py +9 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/admin/__init__.py +4 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/auth.py +90 -58
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/plotly/__init__.py +4 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/plotly/material.py +24 -14
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/plotly/views.py +16 -11
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fields.py +20 -25
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/base.py +20 -18
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/typing.py +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/views.py +3 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/jsonstore.py +15 -3
- django-viewflow-2.0.2/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/de/LC_MESSAGES/django.po +86 -70
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/es/LC_MESSAGES/django.po +83 -67
- django-viewflow-2.0.2/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/fr/LC_MESSAGES/django.po +100 -84
- django-viewflow-2.0.2/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/it/LC_MESSAGES/django.po +93 -77
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ja/LC_MESSAGES/django.po +84 -70
- django-viewflow-2.0.2/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- django-viewflow-2.0.2/viewflow/locale/kk/LC_MESSAGES/django.po +764 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ko/LC_MESSAGES/django.po +79 -65
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/pt/LC_MESSAGES/django.po +79 -63
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ru/LC_MESSAGES/django.po +85 -65
- django-viewflow-2.0.2/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7/viewflow/locale/kk → django-viewflow-2.0.2/viewflow/locale/sr}/LC_MESSAGES/django.po +199 -177
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +79 -65
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/management/__init__.py +21 -15
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/middleware.py +16 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/css/trix.css +3 -1
- django-viewflow-2.0.2/viewflow/static/viewflow/css/viewflow.min.css +22 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +5991 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +18 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +5 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +13 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +51 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +11 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +14 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +3 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +25 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +58 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +239 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +32 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +2 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +1 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/viewflow.min.js +138 -141
- django-viewflow-2.0.2/viewflow/static/viewflow/js/viewflow.min.js.map +1 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/vis-network.min.js +27 -0
- django-viewflow-2.0.2/viewflow/static/viewflow/js/vis-network.min.js.map +1 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/login.html +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/base_page.html +7 -4
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/start.html +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task.html +3 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_base.html +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_cancel.html +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_undo.html +1 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templatetags/fsm.py +4 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templatetags/workflow.py +9 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/this_object.py +4 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/urls/model.py +6 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/actions.py +27 -20
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/base.py +9 -9
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/create.py +4 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/delete.py +13 -10
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/filters.py +13 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/list.py +7 -7
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/search.py +5 -5
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/update.py +4 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/__init__.py +11 -4
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/activation.py +6 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/admin.py +2 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/base.py +2 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/chart.py +121 -107
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/context.py +2 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/fields.py +13 -1
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/mixins.py +6 -4
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/nodes.py +30 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/actions.py +10 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/create.py +8 -5
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/filters.py +24 -19
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/list.py +19 -10
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/update.py +9 -7
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/lock.py +11 -6
- django-viewflow-2.0.2/viewflow/workflow/migrations/0001_initial.py +103 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0002_fsmchange.py +9 -11
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +3 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0004_extend_fields_length.py +6 -6
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0004_subprocess.py +2 -3
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0005_merge.py +3 -4
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0005_rename_flowcls.py +4 -4
- django-viewflow-2.0.2/viewflow/workflow/migrations/0006_i18n.py +146 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0006_merge.py +3 -4
- django-viewflow-2.0.2/viewflow/workflow/migrations/0007_owner_permission_obj.py +30 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0007_task_assigned.py +4 -4
- django-viewflow-2.0.2/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +57 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0008_merge.py +3 -4
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0009_merge.py +3 -4
- django-viewflow-2.0.2/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +22 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/models.py +9 -2
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/job.py +29 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/join.py +4 -4
- django-viewflow-2.0.2/viewflow/workflow/nodes/obsolete.py +49 -0
- django-viewflow-2.0.2/viewflow/workflow/status.py +22 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/token.py +4 -4
- django-viewflow-2.0.0b7/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- django-viewflow-2.0.0b7/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- django-viewflow-2.0.0b7/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- django-viewflow-2.0.0b7/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/css/viewflow.min.css +0 -22
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +0 -4524
- django-viewflow-2.0.0b7/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -1
- django-viewflow-2.0.0b7/viewflow/static/viewflow/js/viewflow.min.js.map +0 -1
- django-viewflow-2.0.0b7/viewflow/static/viewflow/js/vis-network.min.js +0 -27
- django-viewflow-2.0.0b7/viewflow/static/viewflow/js/vis-network.min.js.map +0 -1
- django-viewflow-2.0.0b7/viewflow/workflow/migrations/0001_initial.py +0 -48
- django-viewflow-2.0.0b7/viewflow/workflow/migrations/0006_i18n.py +0 -110
- django-viewflow-2.0.0b7/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -25
- django-viewflow-2.0.0b7/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -45
- django-viewflow-2.0.0b7/viewflow/workflow/nodes/obsolete.py +0 -45
- django-viewflow-2.0.0b7/viewflow/workflow/status.py +0 -22
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/LICENSE +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/LICENSE_EXCEPTION +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/MANIFEST.in +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/django_viewflow.egg-info/dependency_links.txt +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/django_viewflow.egg-info/not-zip-safe +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/django_viewflow.egg-info/top_level.txt +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/admin/apps.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/contrib/plotly/viewset.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/forms/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/forms/renderers.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/admin.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/chart.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/fsm/viewset.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/management/commands/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/management/commands/flowexport.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/css/perfect-scrollbar.css +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/css/vis-network.min.css +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/img/favicon.png +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/img/user.png +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/smartcrop.js +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/trix.js +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/static/viewflow/js/turbo.es2017-umd.js +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/400.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/403.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/404.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/500.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/admin/fsm_change_form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/admin/fsm_change_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/admin/fsm_transition_form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/logged_out.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_change_done.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_change_form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_reset_complete.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_reset_confirm.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_reset_done.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/password_reset_form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/profile.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/registration/provider_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/base.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/delete_action.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/detail.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/form.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/views/transition.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/assign.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_detail.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templatetags/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/templatetags/viewflow.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/urls/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/urls/base.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/urls/sites.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/utils.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/views/detail.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/apps.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/exceptions.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/utils.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/chart.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/dashboard.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/detail.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/views/mixins.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/flow/viewset.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/managers.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/migrations/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/__init__.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/end.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/func.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/handle.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/if_gate.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/mixins.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/split.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/start.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/subprocess.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/switch.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/nodes/view.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/signals.py +0 -0
- {django-viewflow-2.0.0b7 → django-viewflow-2.0.2}/viewflow/workflow/utils.py +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Viewflow is dual-licensed under AGPL defined in file 'LICENSE' with
|
|
2
|
+
LICENSE_EXCEPTION and the Commercial license defined in file 'COMM_LICENSE',
|
|
3
|
+
which is part of this source code package.
|
|
4
|
+
|
|
5
|
+
Viewflow includes code from the Django web framework, which is licensed under
|
|
6
|
+
the three-clause BSD license, a permissive open source license. The copyright
|
|
7
|
+
and licenseis included below for compliance with Django's terms.
|
|
8
|
+
|
|
9
|
+
----------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
Copyright (c) Django Software Foundation and individual contributors.
|
|
12
|
+
All rights reserved.
|
|
13
|
+
|
|
14
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
15
|
+
are permitted provided that the following conditions are met:
|
|
16
|
+
|
|
17
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
18
|
+
this list of conditions and the following disclaimer.
|
|
19
|
+
|
|
20
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
21
|
+
notice, this list of conditions and the following disclaimer in the
|
|
22
|
+
documentation and/or other materials provided with the distribution.
|
|
23
|
+
|
|
24
|
+
3. Neither the name of Django nor the names of its contributors may be used
|
|
25
|
+
to endorse or promote products derived from this software without
|
|
26
|
+
specific prior written permission.
|
|
27
|
+
|
|
28
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
29
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
30
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
31
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
32
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
33
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
34
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
35
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
36
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
37
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
Metadata-Version: 1
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
5
|
Author: Mikhail Podgurskiy
|
|
7
6
|
Author-email: kmmbvnr@gmail.com
|
|
8
7
|
License: AGPL
|
|
9
|
-
Description: UNKNOWN
|
|
10
8
|
Keywords: django,admin,workflow,fsm,bpm,bpmn
|
|
11
|
-
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
10
|
Classifier: Intended Audience :: Developers
|
|
14
11
|
Classifier: Natural Language :: English
|
|
15
12
|
Classifier: Operating System :: OS Independent
|
|
16
13
|
Classifier: Framework :: Django
|
|
17
|
-
Classifier: Framework :: Django :: 4.
|
|
18
|
-
Classifier: Framework :: Django ::
|
|
14
|
+
Classifier: Framework :: Django :: 4.2
|
|
15
|
+
Classifier: Framework :: Django :: 5.0
|
|
19
16
|
Classifier: Programming Language :: Python :: 3
|
|
20
17
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
18
|
Classifier: Programming Language :: Python :: 3.8
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.9
|
|
23
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
25
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
26
|
-
Requires-Python: >=3.
|
|
26
|
+
Requires-Python: >=3.8
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: Django>=4.2
|
|
29
|
+
Requires-Dist: django-filter>=2.3.0
|
|
@@ -31,11 +31,11 @@ Viewflow works with Python 3.8 or greater and Django 4.0+
|
|
|
31
31
|
|
|
32
32
|
Viewflow:
|
|
33
33
|
|
|
34
|
-
pip install django-viewflow
|
|
34
|
+
pip install django-viewflow
|
|
35
35
|
|
|
36
|
-
Viewflow-PRO
|
|
36
|
+
Viewflow-PRO:
|
|
37
37
|
|
|
38
|
-
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
38
|
+
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
39
39
|
|
|
40
40
|
Add 'viewflow' and, in case you need workflow capabilities 'viewflow.workflow' to the INSTALLED_APPS settings.py
|
|
41
41
|
|
|
@@ -183,13 +183,26 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
183
183
|
|
|
184
184
|
## Changelog
|
|
185
185
|
|
|
186
|
-
### 2.0.
|
|
186
|
+
### 2.0.2 2024-04-19
|
|
187
187
|
|
|
188
|
-
- Fix
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
188
|
+
- Fix logout link
|
|
189
|
+
- Change admin user autocomplete field to readonly
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
### 2.0.1 2024-04-17
|
|
193
|
+
|
|
194
|
+
- Fix for AjaxModelSelect in m2m relations
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
### 2.0.0 2024-04-09
|
|
198
|
+
|
|
199
|
+
- Added support for Django 5.0+
|
|
200
|
+
- Updated to Material Components Web 1.4.0
|
|
201
|
+
- Improved help text styles
|
|
202
|
+
- Fixed default app_name configuration for Viewsets
|
|
203
|
+
- List View initial filter values support
|
|
204
|
+
- Enhanced localization support
|
|
205
|
+
- Corrected object permission checks for delete actions
|
|
193
206
|
|
|
194
207
|
|
|
195
208
|
[build]: https://img.shields.io/github/actions/workflow/status/viewflow/viewflow/django.yml?branch=main
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
Metadata-Version: 1
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
5
|
Author: Mikhail Podgurskiy
|
|
7
6
|
Author-email: kmmbvnr@gmail.com
|
|
8
7
|
License: AGPL
|
|
9
|
-
Description: UNKNOWN
|
|
10
8
|
Keywords: django,admin,workflow,fsm,bpm,bpmn
|
|
11
|
-
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
10
|
Classifier: Intended Audience :: Developers
|
|
14
11
|
Classifier: Natural Language :: English
|
|
15
12
|
Classifier: Operating System :: OS Independent
|
|
16
13
|
Classifier: Framework :: Django
|
|
17
|
-
Classifier: Framework :: Django :: 4.
|
|
18
|
-
Classifier: Framework :: Django ::
|
|
14
|
+
Classifier: Framework :: Django :: 4.2
|
|
15
|
+
Classifier: Framework :: Django :: 5.0
|
|
19
16
|
Classifier: Programming Language :: Python :: 3
|
|
20
17
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
18
|
Classifier: Programming Language :: Python :: 3.8
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.9
|
|
23
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
25
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
26
|
-
Requires-Python: >=3.
|
|
26
|
+
Requires-Python: >=3.8
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: Django>=4.2
|
|
29
|
+
Requires-Dist: django-filter>=2.3.0
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
LICENSE
|
|
2
|
+
LICENSE.django
|
|
2
3
|
LICENSE_EXCEPTION
|
|
3
4
|
MANIFEST.in
|
|
4
5
|
README.md
|
|
@@ -10,6 +11,12 @@ django_viewflow.egg-info/dependency_links.txt
|
|
|
10
11
|
django_viewflow.egg-info/not-zip-safe
|
|
11
12
|
django_viewflow.egg-info/requires.txt
|
|
12
13
|
django_viewflow.egg-info/top_level.txt
|
|
14
|
+
tests/test_middleware.py
|
|
15
|
+
tests/test_templates.py
|
|
16
|
+
tests/test_templatetags__viewflow.py
|
|
17
|
+
tests/test_this_object.py
|
|
18
|
+
tests/test_urls__base.py
|
|
19
|
+
tests/test_utils__package.py
|
|
13
20
|
viewflow/__init__.py
|
|
14
21
|
viewflow/apps.py
|
|
15
22
|
viewflow/conf.py
|
|
@@ -53,6 +60,8 @@ viewflow/locale/pt/LC_MESSAGES/django.mo
|
|
|
53
60
|
viewflow/locale/pt/LC_MESSAGES/django.po
|
|
54
61
|
viewflow/locale/ru/LC_MESSAGES/django.mo
|
|
55
62
|
viewflow/locale/ru/LC_MESSAGES/django.po
|
|
63
|
+
viewflow/locale/sr/LC_MESSAGES/django.mo
|
|
64
|
+
viewflow/locale/sr/LC_MESSAGES/django.po
|
|
56
65
|
viewflow/locale/zh_Hans/LC_MESSAGES/django.mo
|
|
57
66
|
viewflow/locale/zh_Hans/LC_MESSAGES/django.po
|
|
58
67
|
viewflow/management/__init__.py
|
|
@@ -116,6 +125,51 @@ viewflow/static/viewflow/js/viewflow.min.js
|
|
|
116
125
|
viewflow/static/viewflow/js/viewflow.min.js.map
|
|
117
126
|
viewflow/static/viewflow/js/vis-network.min.js
|
|
118
127
|
viewflow/static/viewflow/js/vis-network.min.js.map
|
|
128
|
+
viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js
|
|
129
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js
|
|
130
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt
|
|
131
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map
|
|
132
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js
|
|
133
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map
|
|
134
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js
|
|
135
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt
|
|
136
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map
|
|
137
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js
|
|
138
|
+
viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map
|
|
139
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js
|
|
140
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map
|
|
141
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js
|
|
142
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt
|
|
143
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map
|
|
144
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js
|
|
145
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt
|
|
146
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map
|
|
147
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js
|
|
148
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map
|
|
149
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js
|
|
150
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt
|
|
151
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map
|
|
152
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js
|
|
153
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt
|
|
154
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js
|
|
155
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt
|
|
156
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map
|
|
157
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js
|
|
158
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map
|
|
159
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js
|
|
160
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt
|
|
161
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map
|
|
162
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js
|
|
163
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt
|
|
164
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map
|
|
165
|
+
viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js
|
|
166
|
+
viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js
|
|
167
|
+
viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js
|
|
168
|
+
viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js
|
|
169
|
+
viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js
|
|
170
|
+
viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js
|
|
171
|
+
viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js
|
|
172
|
+
viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map
|
|
119
173
|
viewflow/templates/400.html
|
|
120
174
|
viewflow/templates/403.html
|
|
121
175
|
viewflow/templates/404.html
|
|
@@ -251,6 +305,7 @@ viewflow/workflow/migrations/0008_merge.py
|
|
|
251
305
|
viewflow/workflow/migrations/0009_merge.py
|
|
252
306
|
viewflow/workflow/migrations/0010_viewflow20.py
|
|
253
307
|
viewflow/workflow/migrations/0011_alter_task_created_and_more.py
|
|
308
|
+
viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py
|
|
254
309
|
viewflow/workflow/migrations/__init__.py
|
|
255
310
|
viewflow/workflow/nodes/__init__.py
|
|
256
311
|
viewflow/workflow/nodes/end.py
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Django>=
|
|
1
|
+
Django>=4.2
|
|
2
2
|
django-filter>=2.3.0
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
license_files = LICENSE
|
|
3
|
+
|
|
1
4
|
[mypy]
|
|
2
5
|
python_version = 3.8
|
|
3
6
|
ignore_missing_imports = True
|
|
@@ -5,7 +8,8 @@ files = viewflow/**/*.py
|
|
|
5
8
|
|
|
6
9
|
[flake8]
|
|
7
10
|
max-line-length = 130
|
|
8
|
-
ignore = D100, D105, D107, W503
|
|
11
|
+
ignore = D100, D105, D107, W503, E203
|
|
12
|
+
extend-ignore = W503
|
|
9
13
|
|
|
10
14
|
[coverage:report]
|
|
11
15
|
omit = ../*migrations*
|
|
@@ -4,7 +4,7 @@ README = open("README.md", "r", encoding="utf-8").read()
|
|
|
4
4
|
|
|
5
5
|
setuptools.setup(
|
|
6
6
|
name="django-viewflow",
|
|
7
|
-
version="2.0.
|
|
7
|
+
version="2.0.2",
|
|
8
8
|
author_email="kmmbvnr@gmail.com",
|
|
9
9
|
author="Mikhail Podgurskiy",
|
|
10
10
|
description="Reusable library to build business applications fast",
|
|
@@ -14,26 +14,29 @@ setuptools.setup(
|
|
|
14
14
|
# long_description_content_type="text/markdown",
|
|
15
15
|
# long_description=README,
|
|
16
16
|
packages=setuptools.find_packages(exclude=["tests*"]),
|
|
17
|
-
python_requires=">=3.
|
|
17
|
+
python_requires=">=3.8",
|
|
18
18
|
zip_safe=False,
|
|
19
19
|
classifiers=[
|
|
20
|
-
"Development Status ::
|
|
20
|
+
"Development Status :: 5 - Production/Stable",
|
|
21
21
|
"Intended Audience :: Developers",
|
|
22
22
|
"Natural Language :: English",
|
|
23
23
|
"Operating System :: OS Independent",
|
|
24
24
|
"Framework :: Django",
|
|
25
|
-
"Framework :: Django :: 4.
|
|
26
|
-
"Framework :: Django ::
|
|
25
|
+
"Framework :: Django :: 4.2",
|
|
26
|
+
"Framework :: Django :: 5.0",
|
|
27
27
|
"Programming Language :: Python :: 3",
|
|
28
28
|
"Programming Language :: Python :: 3 :: Only",
|
|
29
29
|
"Programming Language :: Python :: 3.8",
|
|
30
30
|
"Programming Language :: Python :: 3.9",
|
|
31
31
|
"Programming Language :: Python :: 3.10",
|
|
32
|
+
"Programming Language :: Python :: 3.11",
|
|
33
|
+
"Programming Language :: Python :: 3.12",
|
|
34
|
+
"Programming Language :: Python :: 3.13",
|
|
32
35
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
33
36
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
|
34
37
|
],
|
|
35
38
|
install_requires=[
|
|
36
|
-
"Django>=
|
|
39
|
+
"Django>=4.2",
|
|
37
40
|
"django-filter>=2.3.0",
|
|
38
41
|
],
|
|
39
42
|
)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from django.test import TestCase, override_settings
|
|
2
|
+
from django.urls import path
|
|
3
|
+
from django.views.generic import TemplateView
|
|
4
|
+
from viewflow.urls import AppMenuMixin, Application, Site, Viewset, route
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class NestedViewset(Viewset):
|
|
8
|
+
app_name = "nested"
|
|
9
|
+
page_path = path(
|
|
10
|
+
"page/", TemplateView.as_view(template_name="viewflow/base.html"), name="page"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CityViewset(AppMenuMixin, Viewset):
|
|
15
|
+
index_path = path(
|
|
16
|
+
"", TemplateView.as_view(template_name="viewflow/base.html"), name="index"
|
|
17
|
+
)
|
|
18
|
+
nested_path = route("nested/", NestedViewset())
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
site = Site(
|
|
22
|
+
title="Test site",
|
|
23
|
+
viewsets=[
|
|
24
|
+
Application(
|
|
25
|
+
app_name="test",
|
|
26
|
+
viewsets=[
|
|
27
|
+
CityViewset(),
|
|
28
|
+
],
|
|
29
|
+
)
|
|
30
|
+
],
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
urlpatterns = [path("", site.urls)]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
37
|
+
class Test(TestCase):
|
|
38
|
+
def test_context_injected(self):
|
|
39
|
+
response = self.client.get("/test/city/")
|
|
40
|
+
match = response.wsgi_request.resolver_match
|
|
41
|
+
|
|
42
|
+
self.assertTrue(hasattr(match, "site"))
|
|
43
|
+
self.assertEqual(match.site, site)
|
|
44
|
+
|
|
45
|
+
self.assertTrue(hasattr(match, "app"))
|
|
46
|
+
self.assertEqual(match.app, site._children[0])
|
|
47
|
+
|
|
48
|
+
# App -> Site -> CityViewset
|
|
49
|
+
self.assertTrue(hasattr(match, "viewset"))
|
|
50
|
+
self.assertEqual(match.viewset, site._children[0]._children[0])
|
|
51
|
+
|
|
52
|
+
def test_nested_viewset_injected(self):
|
|
53
|
+
response = self.client.get("/test/city/nested/page/")
|
|
54
|
+
match = response.wsgi_request.resolver_match
|
|
55
|
+
|
|
56
|
+
# App -> Site -> CityViewset -> Nested
|
|
57
|
+
self.assertTrue(hasattr(match, "viewset"))
|
|
58
|
+
self.assertEqual(
|
|
59
|
+
match.viewset, site._children[0]._children[0].nested_path.viewset
|
|
60
|
+
)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import html5lib
|
|
2
|
+
from django.contrib.auth.models import AnonymousUser
|
|
3
|
+
from django.shortcuts import render
|
|
4
|
+
from django.test import RequestFactory, TestCase, override_settings
|
|
5
|
+
from django.urls import path
|
|
6
|
+
from django.views.generic import TemplateView
|
|
7
|
+
from viewflow.urls import Application, AppMenuMixin, IndexViewMixin, Site, Viewset
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
11
|
+
class Test(TestCase):
|
|
12
|
+
fixtures = ['users.json']
|
|
13
|
+
|
|
14
|
+
def setUp(self):
|
|
15
|
+
self.request = RequestFactory().get('/')
|
|
16
|
+
self.request.user = AnonymousUser()
|
|
17
|
+
self.validator = html5lib.HTMLParser(strict=True)
|
|
18
|
+
|
|
19
|
+
def test_base(self):
|
|
20
|
+
response = render(self.request, 'viewflow/base.html', {})
|
|
21
|
+
self.validator.parse(response.content)
|
|
22
|
+
|
|
23
|
+
def test_base__snackbar(self):
|
|
24
|
+
response = render(self.request, 'viewflow/base.html', {
|
|
25
|
+
'messages': ['Test message 1', 'Rest message 2']
|
|
26
|
+
})
|
|
27
|
+
self.assertTrue('vf-snackbar' in response.content.decode())
|
|
28
|
+
self.validator.parse(response.content)
|
|
29
|
+
|
|
30
|
+
def test_base_page(self):
|
|
31
|
+
response = render(self.request, 'viewflow/base_page.html', {})
|
|
32
|
+
self.validator.parse(response.content)
|
|
33
|
+
|
|
34
|
+
def test_base_page__with_site_menu(self):
|
|
35
|
+
self.assertTrue(self.client.login(username="admin", password="admin"))
|
|
36
|
+
response = self.client.get('/application/test/test/')
|
|
37
|
+
self.assertTrue('Test Application' in response.content.decode())
|
|
38
|
+
self.assertTrue('Test Viewset' in response.content.decode())
|
|
39
|
+
self.validator.parse(response.content)
|
|
40
|
+
|
|
41
|
+
def test_lockscreen__404(self):
|
|
42
|
+
response = render(self.request, '404.html', {})
|
|
43
|
+
self.validator.parse(response.content)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class TestViewset(IndexViewMixin, AppMenuMixin, Viewset):
|
|
47
|
+
title = 'Test Viewset'
|
|
48
|
+
page_path = path('test/', TemplateView.as_view(template_name='viewflow/base_page.html'), name="page")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
urlpatterns = [
|
|
52
|
+
path('', Site(viewsets=[
|
|
53
|
+
Application(
|
|
54
|
+
title='Test Application',
|
|
55
|
+
viewsets=[TestViewset()]
|
|
56
|
+
)
|
|
57
|
+
]).urls)
|
|
58
|
+
]
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from django.contrib.auth.models import User
|
|
2
|
+
from django.template import Template, Context
|
|
3
|
+
from django.test import TestCase, RequestFactory, override_settings
|
|
4
|
+
from django.urls import path
|
|
5
|
+
from viewflow.urls import Site, ModelViewset
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
9
|
+
class Test(TestCase):
|
|
10
|
+
fixtures = ["users.json"]
|
|
11
|
+
|
|
12
|
+
def setUp(self):
|
|
13
|
+
self.request = RequestFactory().get("/test/")
|
|
14
|
+
self.user = User.objects.get(username="admin")
|
|
15
|
+
self.request.user = self.user
|
|
16
|
+
|
|
17
|
+
def test_get_absolute_url(self):
|
|
18
|
+
context = Context({"request": self.request, "site": site, "user": self.user})
|
|
19
|
+
context.request = self.request
|
|
20
|
+
|
|
21
|
+
content = Template(
|
|
22
|
+
"{% load viewflow %}{% get_absolute_url site user %}"
|
|
23
|
+
).render(context)
|
|
24
|
+
self.assertEqual(f"/user/{self.user.pk}/change/", content)
|
|
25
|
+
|
|
26
|
+
content = Template(
|
|
27
|
+
"{% load viewflow %}{% get_absolute_url site user as var%}{{ var }}"
|
|
28
|
+
).render(context)
|
|
29
|
+
self.assertEqual(f"/user/{self.user.pk}/change/", content)
|
|
30
|
+
|
|
31
|
+
def test_reverse(self):
|
|
32
|
+
context = Context(
|
|
33
|
+
{"request": self.request, "viewset": site.viewsets[0], "user": self.user}
|
|
34
|
+
)
|
|
35
|
+
context.request = self.request
|
|
36
|
+
|
|
37
|
+
content = Template(
|
|
38
|
+
"{% load viewflow %}{% reverse viewset 'change' user.pk %}"
|
|
39
|
+
).render(context)
|
|
40
|
+
self.assertEqual(f"/user/{self.user.pk}/change/", content)
|
|
41
|
+
|
|
42
|
+
content = Template(
|
|
43
|
+
"{% load viewflow %}{% reverse viewset 'change' user.pk as var %}{{ var }}"
|
|
44
|
+
).render(context)
|
|
45
|
+
self.assertEqual(f"/user/{self.user.pk}/change/", content)
|
|
46
|
+
|
|
47
|
+
content = Template(
|
|
48
|
+
"{% load viewflow %}{% reverse viewset 'change' pk=user.pk %}"
|
|
49
|
+
).render(context)
|
|
50
|
+
self.assertEqual(f"/user/{self.user.pk}/change/", content)
|
|
51
|
+
|
|
52
|
+
def test_get_verbose_name(self):
|
|
53
|
+
context = Context({"model": User})
|
|
54
|
+
content = Template("{% load viewflow %}{{ model|verbose_name }}").render(
|
|
55
|
+
context
|
|
56
|
+
)
|
|
57
|
+
self.assertEqual("user", content)
|
|
58
|
+
|
|
59
|
+
context = Context({"user": self.user})
|
|
60
|
+
content = Template("{% load viewflow %}{{ user|verbose_name }}").render(context)
|
|
61
|
+
self.assertEqual("user", content)
|
|
62
|
+
|
|
63
|
+
def test_get_verbose_name_plural(self):
|
|
64
|
+
context = Context({"model": User})
|
|
65
|
+
content = Template("{% load viewflow %}{{ model|verbose_name_plural }}").render(
|
|
66
|
+
context
|
|
67
|
+
)
|
|
68
|
+
self.assertEqual("users", content)
|
|
69
|
+
|
|
70
|
+
context = Context({"user": self.user})
|
|
71
|
+
content = Template("{% load viewflow %}{{ user|verbose_name_plural }}").render(
|
|
72
|
+
context
|
|
73
|
+
)
|
|
74
|
+
self.assertEqual("users", content)
|
|
75
|
+
|
|
76
|
+
def _test_list_column_order(self):
|
|
77
|
+
pass
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
site = Site(viewsets=[ModelViewset(model=User)])
|
|
81
|
+
|
|
82
|
+
urlpatterns = [path("", site.urls)]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import functools
|
|
2
|
+
from django.test import TestCase
|
|
3
|
+
from viewflow import this
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Review(object):
|
|
7
|
+
approver = 'Will Smith'
|
|
8
|
+
publisher = 'John Doe'
|
|
9
|
+
|
|
10
|
+
def approve(self):
|
|
11
|
+
return 'approve'
|
|
12
|
+
|
|
13
|
+
def publish(self):
|
|
14
|
+
return 'publish'
|
|
15
|
+
|
|
16
|
+
def _this_owner(self, transition):
|
|
17
|
+
if transition == self.approve:
|
|
18
|
+
return self.approver
|
|
19
|
+
elif transition == self.publish:
|
|
20
|
+
return self.publisher
|
|
21
|
+
else:
|
|
22
|
+
raise ValueError(f"Can't find owner for {transition}")
|
|
23
|
+
|
|
24
|
+
def _this_call(self, transition):
|
|
25
|
+
def call_transition(self, transition):
|
|
26
|
+
return transition()
|
|
27
|
+
return functools.partial(call_transition, self, transition)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class Test(TestCase):
|
|
32
|
+
def test_this_refs_data(self):
|
|
33
|
+
self.assertEqual(this.some_name.name, 'some_name')
|
|
34
|
+
self.assertEqual(this.another_some_name.name, 'another_some_name')
|
|
35
|
+
|
|
36
|
+
def test_this_ref_resolve(self):
|
|
37
|
+
review = Review()
|
|
38
|
+
|
|
39
|
+
approve = this.approve.resolve(review)
|
|
40
|
+
self.assertEqual(approve, review.approve)
|
|
41
|
+
self.assertEqual(Review.approver, this.approve.owner.resolve(review))
|
|
42
|
+
self.assertEqual(this.approve.call.resolve(review)(), 'approve')
|
|
43
|
+
|
|
44
|
+
publish = this.publish.resolve(review)
|
|
45
|
+
self.assertEqual(publish, review.publish)
|
|
46
|
+
self.assertEqual(Review.publisher, this.publish.owner.resolve(review))
|
|
47
|
+
self.assertEqual(this.publish.call.resolve(review)(), 'publish')
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from django.views.generic import TemplateView
|
|
2
|
+
from django.urls import path, reverse
|
|
3
|
+
from django.test import TestCase, override_settings
|
|
4
|
+
from viewflow.urls import route, IndexViewMixin, Viewset
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class NestedViewset(IndexViewMixin, Viewset):
|
|
8
|
+
app_name = "nested"
|
|
9
|
+
|
|
10
|
+
page_path = path(
|
|
11
|
+
"page/", TemplateView.as_view(template_name="viewflow/base.html"), name="page"
|
|
12
|
+
)
|
|
13
|
+
route_path = route("test/", Viewset())
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class InheritedViewset(NestedViewset):
|
|
17
|
+
app_name = "nested"
|
|
18
|
+
|
|
19
|
+
page_path = path(
|
|
20
|
+
"page2/", TemplateView.as_view(template_name="viewflow/base.html"), name="page"
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class RootViewset(Viewset):
|
|
25
|
+
app_name = "root"
|
|
26
|
+
|
|
27
|
+
index_path = path(
|
|
28
|
+
"", TemplateView.as_view(template_name="viewflow/base.html"), name="index"
|
|
29
|
+
)
|
|
30
|
+
nested_path = route("test/", NestedViewset())
|
|
31
|
+
nested2_path = route("nested2/", NestedViewset(app_name="nested2"))
|
|
32
|
+
|
|
33
|
+
# check here that route_url mounted second time successfully
|
|
34
|
+
nested3_path = route("inherited/", InheritedViewset(app_name="nested2"))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
urlconfig = RootViewset()
|
|
38
|
+
|
|
39
|
+
urlpatterns = [path("", urlconfig.urls)]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
43
|
+
class Test(TestCase): # noqa: D101
|
|
44
|
+
def test_created_urls(self):
|
|
45
|
+
self.assertEqual("/", reverse("root:index"))
|
|
46
|
+
|
|
47
|
+
self.assertEqual("/test/", reverse("root:nested:index"))
|
|
48
|
+
self.assertEqual("/test/page/", reverse("root:nested:page"))
|
|
49
|
+
|
|
50
|
+
self.assertEqual("/nested2/", reverse("root:nested2:index"))
|
|
51
|
+
self.assertEqual("/nested2/page/", reverse("root:nested2:page"))
|
|
52
|
+
|
|
53
|
+
def test_urlconf_resolve(self):
|
|
54
|
+
self.assertEqual("/", urlconfig.reverse("index"))
|
|
55
|
+
self.assertEqual("/test/", urlconfig.nested_path.viewset.reverse("index"))
|
|
56
|
+
self.assertEqual("/test/page/", urlconfig.nested_path.viewset.reverse("page"))
|
|
57
|
+
|
|
58
|
+
def test_auto_redirect(self):
|
|
59
|
+
response = self.client.get(reverse("root:nested:index"))
|
|
60
|
+
self.assertRedirects(response, "/test/page/")
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from django.test import TestCase
|
|
2
|
+
from viewflow import utils
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Test(TestCase): # noqa: D101
|
|
6
|
+
def test_get_app_package_succeed(self):
|
|
7
|
+
self.assertEqual(utils.get_app_package('admin'), 'django.contrib.admin')
|
|
8
|
+
self.assertEqual(utils.get_app_package('auth'), 'django.contrib.auth')
|
|
9
|
+
self.assertEqual(utils.get_app_package('viewflow'), 'viewflow.workflow')
|
|
10
|
+
|
|
11
|
+
def test_get_app_package_bug112(self):
|
|
12
|
+
""" Application models are located in a module that consists of multiple files """
|
|
13
|
+
self.assertEqual(utils.get_app_package('tests'), 'tests')
|
|
14
|
+
|
|
15
|
+
def test_get_app_package_missing_app_raise(self):
|
|
16
|
+
self.assertRaises(Exception, utils.get_app_package, 'missing_app')
|
|
17
|
+
|
|
18
|
+
def test_get_containing_app_data_succeed(self):
|
|
19
|
+
self.assertEqual(utils.get_containing_app_data('django.contrib.admin.views'),
|
|
20
|
+
('admin', 'django.contrib.admin'))
|
|
21
|
+
self.assertEqual(utils.get_containing_app_data('django.contrib.auth.urls'),
|
|
22
|
+
('auth', 'django.contrib.auth'))
|
|
23
|
+
self.assertEqual(utils.get_containing_app_data('viewflow.workflow.flow'),
|
|
24
|
+
('viewflow', 'viewflow.workflow'))
|
|
25
|
+
|
|
26
|
+
def test_get_containing_app_data_bug112(self):
|
|
27
|
+
""" Application models are located in a module that consists of multiple files """
|
|
28
|
+
self.assertEqual(utils.get_containing_app_data('tests.models'),
|
|
29
|
+
('tests', 'tests'))
|
|
30
|
+
|
|
31
|
+
def test_get_containing_app_data_none_on_missing(self):
|
|
32
|
+
self.assertEqual(utils.get_containing_app_data('unknown.module'),
|
|
33
|
+
(None, None))
|