django-viewflow 2.0.2__tar.gz → 2.1.0__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 → django-viewflow-2.1.0}/PKG-INFO +1 -1
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/README.md +3 -19
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/PKG-INFO +1 -1
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/setup.py +1 -1
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/base.py +4 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/profile.html +4 -2
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task.html +1 -1
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_detail.html +3 -3
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/filters.py +4 -1
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/activation.py +5 -2
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/base.py +2 -2
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/nodes.py +5 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/split.py +51 -14
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/LICENSE +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/LICENSE.django +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/LICENSE_EXCEPTION +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/MANIFEST.in +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/SOURCES.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/dependency_links.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/not-zip-safe +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/requires.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/top_level.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/setup.cfg +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_middleware.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_templates.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_templatetags__viewflow.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_this_object.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_urls__base.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/tests/test_utils__package.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/apps.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/conf.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/admin/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/admin/apps.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/auth.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/plotly/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/plotly/material.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/plotly/views.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/contrib/plotly/viewset.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fields.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/forms/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/forms/renderers.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/admin.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/chart.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/typing.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/views.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/fsm/viewset.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/jsonstore.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/management/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/management/commands/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/management/commands/flowexport.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/middleware.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/perfect-scrollbar.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/trix.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/viewflow.min.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/vis-network.min.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/img/favicon.png +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/img/user.png +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/smartcrop.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/trix.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/turbo.es2017-umd.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/viewflow.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/viewflow.min.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/vis-network.min.js +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/js/vis-network.min.js.map +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/400.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/403.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/404.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/500.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/admin/fsm_change_form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/admin/fsm_change_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/admin/fsm_transition_form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/logged_out.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/login.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_change_done.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_change_form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_reset_complete.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_reset_confirm.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_reset_done.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/password_reset_form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/provider_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/base.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/base_page.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/delete_action.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/detail.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/form.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/views/transition.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/assign.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/start.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templatetags/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templatetags/fsm.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templatetags/viewflow.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templatetags/workflow.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/this_object.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/urls/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/urls/base.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/urls/model.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/urls/sites.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/utils.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/actions.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/base.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/create.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/delete.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/detail.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/list.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/search.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/views/update.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/admin.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/apps.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/chart.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/context.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/exceptions.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/fields.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/mixins.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/utils.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/actions.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/chart.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/create.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/dashboard.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/detail.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/filters.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/list.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/mixins.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/views/update.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/flow/viewset.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/lock.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/managers.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0001_initial.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0005_merge.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0006_i18n.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0006_merge.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0008_merge.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0009_merge.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/migrations/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/models.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/__init__.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/end.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/func.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/handle.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/if_gate.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/job.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/join.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/mixins.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/obsolete.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/start.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/subprocess.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/switch.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/nodes/view.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/signals.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/status.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/token.py +0 -0
- {django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/workflow/utils.py +0 -0
|
@@ -183,26 +183,10 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
183
183
|
|
|
184
184
|
## Changelog
|
|
185
185
|
|
|
186
|
-
### 2.0
|
|
186
|
+
### 2.1.0 2024-06-16
|
|
187
187
|
|
|
188
|
-
-
|
|
189
|
-
-
|
|
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
|
|
188
|
+
- Allow to assign additional custom data to viewflow.fsm transitions
|
|
189
|
+
- Added `data_source` parameter to `Split.Next()` method, allowing dynamic creation of multiple node instances based on a list of data items.
|
|
206
190
|
|
|
207
191
|
|
|
208
192
|
[build]: https://img.shields.io/github/actions/workflow/status/viewflow/viewflow/django.yml?branch=main
|
|
@@ -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.1.0",
|
|
8
8
|
author_email="kmmbvnr@gmail.com",
|
|
9
9
|
author="Mikhail Podgurskiy",
|
|
10
10
|
description="Reusable library to build business applications fast",
|
|
@@ -40,6 +40,7 @@ class Transition:
|
|
|
40
40
|
label: Optional[str] = None,
|
|
41
41
|
conditions: Optional[List[Condition]] = None,
|
|
42
42
|
permission: Optional[Permission] = None,
|
|
43
|
+
custom: Optional[Dict] = None,
|
|
43
44
|
): # noqa D102
|
|
44
45
|
self.func = func
|
|
45
46
|
self.source = source
|
|
@@ -47,6 +48,7 @@ class Transition:
|
|
|
47
48
|
self._label = label
|
|
48
49
|
self.permission = permission
|
|
49
50
|
self.conditions = conditions if conditions else []
|
|
51
|
+
self.custom = custom if custom is not None else {}
|
|
50
52
|
|
|
51
53
|
def __repr__(self) -> str:
|
|
52
54
|
return f"<Transition({self.label} {self.source} -> {self.target}) object at {id(self)}>"
|
|
@@ -409,6 +411,7 @@ class State:
|
|
|
409
411
|
label: Optional[str] = None,
|
|
410
412
|
conditions: Optional[List[Condition]] = None,
|
|
411
413
|
permission: Optional[Permission] = None,
|
|
414
|
+
custom: Optional[Dict] = None,
|
|
412
415
|
) -> Any:
|
|
413
416
|
"""Decorator to mark a method as a state transition."""
|
|
414
417
|
|
|
@@ -430,6 +433,7 @@ class State:
|
|
|
430
433
|
label=label,
|
|
431
434
|
conditions=conditions,
|
|
432
435
|
permission=permission,
|
|
436
|
+
custom=custom,
|
|
433
437
|
)
|
|
434
438
|
descriptor.add_transition(transition)
|
|
435
439
|
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/registration/profile.html
RENAMED
|
@@ -34,8 +34,10 @@
|
|
|
34
34
|
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-10">
|
|
35
35
|
<div class="mdc-card vf-page-profile__detail">
|
|
36
36
|
<section class="vf-page-profile__detail-header">
|
|
37
|
-
|
|
38
|
-
<
|
|
37
|
+
{% block form-header-title %}
|
|
38
|
+
<h1 class="mdc-typography--headline6">{{view.request.user.get_username.title }}</h1>
|
|
39
|
+
{% endblock %}
|
|
40
|
+
{% block form-header-subtitle %}{% endblock %}
|
|
39
41
|
</section>
|
|
40
42
|
<section>
|
|
41
43
|
<table class="vf-list__table">
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/templates/viewflow/workflow/task.html
RENAMED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<section class="vf-card__header">
|
|
12
12
|
{% block form-header-title %}
|
|
13
13
|
<h1 class="vf-card__title">
|
|
14
|
-
{{ request.activation.task.flow_task }}
|
|
14
|
+
{{ request.activation.task.flow_task.task_title }}
|
|
15
15
|
</h1>
|
|
16
16
|
{% endblock %}
|
|
17
17
|
{% block form-header-subtitle %}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{% block breadcrumbs_items %}
|
|
5
5
|
<a href="{% reverse viewset 'index' %}">{{ process.flow_class.process_title }}</a>
|
|
6
6
|
<a href="{% reverse viewset 'process_detail' process.pk %}">#{{ process.pk }}</a>
|
|
7
|
-
<a>{{ task.flow_task }} #{{ task.pk}}</a>
|
|
7
|
+
<a>{{ task.flow_task.task_title }} #{{ task.pk}}</a>
|
|
8
8
|
{% endblock %}
|
|
9
9
|
|
|
10
10
|
{% block task_content %}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<h4 class="mdc-typography mdc-typography--headline5" style="margin-bottom:10px">{% trans "Previous tasks" %}</h4>
|
|
22
22
|
<div>
|
|
23
23
|
{% for prev_task in task.previous.all %}
|
|
24
|
-
<a class="mdc-typography mdc-typography--subtitle1" href="{% reverse prev_task.flow_task 'index' process.pk prev_task.pk %}">{{ prev_task.flow_task.task_description|default:prev_task.flow_task }}</a>{% if not forloop.last %}, {% endif %}
|
|
24
|
+
<a class="mdc-typography mdc-typography--subtitle1" href="{% reverse prev_task.flow_task 'index' process.pk prev_task.pk %}">{{ prev_task.flow_task.task_description|default:prev_task.flow_task.task_title }}</a>{% if not forloop.last %}, {% endif %}
|
|
25
25
|
{% empty %}
|
|
26
26
|
<span class="mdc-typography mdc-typography--subtitle1" style="color:grey">{% trans "No previous tasks" %}</span>
|
|
27
27
|
{% endfor %}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<h4 class="mdc-typography mdc-typography--headline5" style="margin-bottom:10px">{% trans "Next tasks" %}</h4>
|
|
32
32
|
<div>
|
|
33
33
|
{% for next_task in task.leading.all %}
|
|
34
|
-
<a class="mdc-typography mdc-typography--subtitle1" href="{% reverse next_task.flow_task 'index' process.pk next_task.pk %}">{{
|
|
34
|
+
<a class="mdc-typography mdc-typography--subtitle1" href="{% reverse next_task.flow_task 'index' process.pk next_task.pk %}">{{ next_task.task_description|default:next_task.flow_task.task_title }}</a>{% if not forloop.last %}, {% endif %}
|
|
35
35
|
{% empty %}
|
|
36
36
|
<span class="mdc-typography mdc-typography--subtitle1" style="color:grey">{% trans "No next tasks" %}</span>
|
|
37
37
|
{% endfor %}
|
|
@@ -38,7 +38,10 @@ class FilterableViewMixin(object):
|
|
|
38
38
|
data = data.copy()
|
|
39
39
|
for key, value in self.filterset_initial.items():
|
|
40
40
|
if key not in data:
|
|
41
|
-
|
|
41
|
+
if isinstance(value, (list, tuple, set)):
|
|
42
|
+
data.setlist(key, value)
|
|
43
|
+
else:
|
|
44
|
+
data[key] = value
|
|
42
45
|
|
|
43
46
|
return {
|
|
44
47
|
**kwargs,
|
|
@@ -100,11 +100,14 @@ class Activation(object):
|
|
|
100
100
|
return guard()
|
|
101
101
|
|
|
102
102
|
@classmethod
|
|
103
|
-
def create(cls, flow_task, prev_activation, token):
|
|
103
|
+
def create(cls, flow_task, prev_activation, token, data=None):
|
|
104
104
|
"""Instantiate and persist new flow task."""
|
|
105
105
|
flow_class = flow_task.flow_class
|
|
106
106
|
task = flow_class.task_class(
|
|
107
|
-
process=prev_activation.process,
|
|
107
|
+
process=prev_activation.process,
|
|
108
|
+
flow_task=flow_task,
|
|
109
|
+
token=token,
|
|
110
|
+
data=data if data is not None else {},
|
|
108
111
|
)
|
|
109
112
|
task.save()
|
|
110
113
|
task.previous.add(prev_activation.task)
|
|
@@ -130,7 +130,7 @@ class Node(Viewset):
|
|
|
130
130
|
Subclasses can perform additional initialization here.
|
|
131
131
|
"""
|
|
132
132
|
|
|
133
|
-
def _create(self, prev_activation, token):
|
|
133
|
+
def _create(self, prev_activation, token, data=None):
|
|
134
134
|
"""
|
|
135
135
|
Create a new task instance.
|
|
136
136
|
|
|
@@ -141,7 +141,7 @@ class Node(Viewset):
|
|
|
141
141
|
:returns: The new activation instance.
|
|
142
142
|
:rtype: Activation
|
|
143
143
|
"""
|
|
144
|
-
return self.activation_class.create(self, prev_activation, token)
|
|
144
|
+
return self.activation_class.create(self, prev_activation, token, data=data)
|
|
145
145
|
|
|
146
146
|
def Annotation(
|
|
147
147
|
self, title=None, description=None, summary_template=None, result_template=None
|
|
@@ -315,6 +315,11 @@ class Split(
|
|
|
315
315
|
mixins.NodeReviveMixin,
|
|
316
316
|
nodes.Split,
|
|
317
317
|
):
|
|
318
|
+
"""
|
|
319
|
+
Parallel split gateway.
|
|
320
|
+
|
|
321
|
+
"""
|
|
322
|
+
|
|
318
323
|
index_view_class = views.IndexTaskView
|
|
319
324
|
detail_view_class = views.DetailTaskView
|
|
320
325
|
undo_view_class = views.UndoTaskView
|
|
@@ -22,12 +22,14 @@ class SplitActivation(Activation):
|
|
|
22
22
|
@Activation.status.super()
|
|
23
23
|
def activate(self):
|
|
24
24
|
"""Calculate nodes list to activate."""
|
|
25
|
-
for node, cond in self.flow_task._branches:
|
|
26
|
-
if cond:
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
for node, cond, data_source in self.flow_task._branches:
|
|
26
|
+
if cond and not cond(self):
|
|
27
|
+
continue
|
|
28
|
+
if data_source:
|
|
29
|
+
for data in data_source(self):
|
|
30
|
+
self.next_tasks.append((node, data))
|
|
29
31
|
else:
|
|
30
|
-
self.next_tasks.append(node)
|
|
32
|
+
self.next_tasks.append((node, None))
|
|
31
33
|
|
|
32
34
|
if not self.next_tasks:
|
|
33
35
|
raise FlowRuntimeError(
|
|
@@ -44,17 +46,47 @@ class SplitActivation(Activation):
|
|
|
44
46
|
token_source = Token.split_token_source(self.task.token, self.task.pk)
|
|
45
47
|
|
|
46
48
|
next_tasks = [
|
|
47
|
-
task for task in self.next_tasks if not isinstance(task, Join)
|
|
48
|
-
] + [task for task in self.next_tasks if isinstance(task, Join)]
|
|
49
|
+
(task, data) for task, data in self.next_tasks if not isinstance(task, Join)
|
|
50
|
+
] + [(task, None) for task in self.next_tasks if isinstance(task, Join)]
|
|
49
51
|
|
|
50
|
-
for n, next_task in enumerate(next_tasks, 1):
|
|
51
|
-
yield next_task._create(
|
|
52
|
+
for n, (next_task, data) in enumerate(next_tasks, 1):
|
|
53
|
+
yield next_task._create(
|
|
54
|
+
prev_activation=self, token=next(token_source), data=data
|
|
55
|
+
)
|
|
52
56
|
|
|
53
57
|
|
|
54
58
|
class Split(
|
|
55
59
|
Node,
|
|
56
60
|
):
|
|
57
|
-
"""
|
|
61
|
+
"""
|
|
62
|
+
Represents a parallel split gateway in a workflow, allowing branching into multiple parallel paths.
|
|
63
|
+
|
|
64
|
+
Methods:
|
|
65
|
+
- `Next(node, case=None, data_source=None)`: Defines the subsequent node in the workflow.
|
|
66
|
+
- `node`: The next node to execute.
|
|
67
|
+
- `case` (optional): A callable that takes an activation and returns `True` if the node should be activated.
|
|
68
|
+
- `data_source` (optional): A callable that takes an activation and returns a list of data items, creating an instance of the node for each item, with `task.data` set to the item.
|
|
69
|
+
- `Always(node)`: A shortcut to define a subsequent node that is always executed.
|
|
70
|
+
|
|
71
|
+
Example:
|
|
72
|
+
```python
|
|
73
|
+
flow.Split()
|
|
74
|
+
.Next(
|
|
75
|
+
this.approve,
|
|
76
|
+
case=act.process.approved,
|
|
77
|
+
data_source=lambda activation: [{"sample": "test task 1"}, {"sample": "test task 2"}],
|
|
78
|
+
)
|
|
79
|
+
.Always(this.required)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
In this example:
|
|
83
|
+
- The `approve` node is executed multiple times based on the `data_source` list.
|
|
84
|
+
- The `required` node is always executed unconditionally in parallel.
|
|
85
|
+
|
|
86
|
+
Notes:
|
|
87
|
+
- If `case` is not provided, the node is always activated.
|
|
88
|
+
- If `data_source` is not provided, the node is created only once.
|
|
89
|
+
"""
|
|
58
90
|
|
|
59
91
|
activation_class = SplitActivation
|
|
60
92
|
|
|
@@ -76,7 +108,7 @@ class Split(
|
|
|
76
108
|
self._activate_next = []
|
|
77
109
|
|
|
78
110
|
def _outgoing(self):
|
|
79
|
-
for next_node, cond in self._activate_next:
|
|
111
|
+
for next_node, cond, _ in self._activate_next:
|
|
80
112
|
edge_class = "cond_true" if cond else "default"
|
|
81
113
|
yield Edge(src=self, dst=next_node, edge_class=edge_class)
|
|
82
114
|
|
|
@@ -84,20 +116,25 @@ class Split(
|
|
|
84
116
|
super()._resolve(instance)
|
|
85
117
|
|
|
86
118
|
self._activate_next = [
|
|
87
|
-
(
|
|
119
|
+
(
|
|
120
|
+
this.resolve(instance, node),
|
|
121
|
+
this.resolve(instance, cond),
|
|
122
|
+
this.resolve(instance, data_source),
|
|
123
|
+
)
|
|
124
|
+
for node, cond, data_source in self._activate_next
|
|
88
125
|
]
|
|
89
126
|
|
|
90
127
|
@property
|
|
91
128
|
def _branches(self):
|
|
92
129
|
return self._activate_next
|
|
93
130
|
|
|
94
|
-
def Next(self, node, case=None):
|
|
131
|
+
def Next(self, node, case=None, data_source=None):
|
|
95
132
|
"""Node to activate if condition is true.
|
|
96
133
|
|
|
97
134
|
:param cond: Callable[activation] -> bool
|
|
98
135
|
|
|
99
136
|
"""
|
|
100
|
-
self._activate_next.append((node, case))
|
|
137
|
+
self._activate_next.append((node, case, data_source))
|
|
101
138
|
return self
|
|
102
139
|
|
|
103
140
|
def Always(self, node):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/django_viewflow.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo
RENAMED
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/perfect-scrollbar.css
RENAMED
|
File without changes
|
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/viewflow.min.css
RENAMED
|
File without changes
|
{django-viewflow-2.0.2 → django-viewflow-2.1.0}/viewflow/static/viewflow/css/vis-network.min.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|