django-viewflow 2.2.14__tar.gz → 2.3.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.2.14/django_viewflow.egg-info → django_viewflow-2.3.0}/PKG-INFO +69 -44
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/README.md +68 -43
- {django_viewflow-2.2.14 → django_viewflow-2.3.0/django_viewflow.egg-info}/PKG-INFO +69 -44
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/django_viewflow.egg-info/SOURCES.txt +52 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/setup.py +1 -1
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/__init__.py +1 -1
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/base.py +7 -3
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/chart.py +9 -2
- django_viewflow-2.3.0/viewflow/fsm/typing.py +30 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/css → django_viewflow-2.3.0/viewflow/static/viewflow/css/node_modules/trix/dist}/trix.css +309 -251
- django_viewflow-2.3.0/viewflow/static/viewflow/css/perfect-scrollbar.css +116 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/css/trix.css +470 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/css/viewflow.min.css +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/css/vis-network.min.css +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-outlined.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-outlined.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-round.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-round.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-sharp.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-sharp.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-two-tone.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-two-tone.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.css +124 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Black.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Black.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Bold.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Bold.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Light.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Light.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-LightItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Medium.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Medium.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Regular.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Regular.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Thin.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Thin.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +143 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot → django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.eot +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.otf +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons → django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font}/SimpleIcons.ttf +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.woff +0 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.woff2 +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons → django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font}/simple-icons.css +3318 -3001
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/simple-icons.min.css +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +6308 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js +22 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js.map +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/vis-network/dist/vis-network.min.js +27 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/vis-network/dist/vis-network.min.js.map +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/perfect-scrollbar.min.js +22 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +1 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/smartcrop.js +594 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/turbo.es2017-umd.js +3998 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/viewflow.min.js +18 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/viewflow.min.js.map +1 -1
- django_viewflow-2.3.0/viewflow/static/viewflow/js/vis-network.min.js +27 -0
- django_viewflow-2.3.0/viewflow/static/viewflow/js/vis-network.min.js.map +1 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/base.py +10 -7
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/actions.py +10 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/detail.py +14 -1
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/models.py +2 -2
- django_viewflow-2.2.14/viewflow/fsm/typing.py +0 -19
- django_viewflow-2.2.14/viewflow/static/viewflow/css/viewflow.min.css +0 -22
- django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django_viewflow-2.2.14/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -1
- django_viewflow-2.2.14/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -20
- django_viewflow-2.2.14/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -1
- django_viewflow-2.2.14/viewflow/static/viewflow/js/viewflow.min.js +0 -2878
- django_viewflow-2.2.14/viewflow/static/viewflow/js/vis-network.min.js +0 -27
- django_viewflow-2.2.14/viewflow/static/viewflow/js/vis-network.min.js.map +0 -1
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/LICENSE +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/LICENSE_EXCEPTION +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/MANIFEST.in +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/django_viewflow.egg-info/dependency_links.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/django_viewflow.egg-info/not-zip-safe +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/django_viewflow.egg-info/requires.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/django_viewflow.egg-info/top_level.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/setup.cfg +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_middleware.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_templates.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_templatetags__viewflow.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_this_object.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_urls__base.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/tests/test_utils__package.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/apps.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/conf.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/admin/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/admin/apps.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/auth.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/plotly/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/plotly/material.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/plotly/views.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/contrib/plotly/viewset.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fields.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/forms/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/forms/renderers.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/admin.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/views.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/fsm/viewset.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/jsonstore.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/management/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/management/commands/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/management/commands/flowexport.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/middleware.py +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow → django_viewflow-2.3.0/viewflow/static/viewflow/css/node_modules/perfect-scrollbar}/css/perfect-scrollbar.css +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/css → django_viewflow-2.3.0/viewflow/static/viewflow/css/node_modules/vis-network/dist/dist}/vis-network.min.css +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/fonts → django_viewflow-2.3.0/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/css}/roboto/roboto-fontface.css +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/img/favicon.png +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/img/user.png +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/js → django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/@hotwired/turbo/dist}/turbo.es2017-umd.js +0 -0
- {django_viewflow-2.2.14/viewflow/static/viewflow/js → django_viewflow-2.3.0/viewflow/static/viewflow/js/node_modules/smartcrop}/smartcrop.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/static/viewflow/js/trix.js +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/400.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/403.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/404.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/500.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/admin/fsm_change_form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/admin/fsm_change_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/admin/fsm_transition_form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/logged_out.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/login.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_change_done.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_change_form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_reset_complete.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_reset_confirm.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_reset_done.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/password_reset_form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/profile.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/registration/provider_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/base.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/base_page.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/delete_action.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/detail.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/form.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/views/transition.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/assign.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/start.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_detail.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templatetags/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templatetags/fsm.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templatetags/viewflow.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/templatetags/workflow.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/this_object.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/urls/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/urls/base.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/urls/model.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/urls/sites.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/utils.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/actions.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/base.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/create.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/delete.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/detail.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/filters.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/list.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/search.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/views/update.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/activation.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/admin.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/apps.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/chart.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/context.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/exceptions.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/fields.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/mixins.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/nodes.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/utils.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/chart.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/create.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/dashboard.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/filters.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/list.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/mixins.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/views/update.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/flow/viewset.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/lock.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/managers.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0001_initial.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0005_merge.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0006_i18n.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0006_merge.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0008_merge.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0009_merge.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/0014_alter_process_parent_task.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/migrations/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/__init__.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/end.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/func.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/handle.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/if_gate.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/job.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/join.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/mixins.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/obsolete.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/split.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/start.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/switch.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/nodes/view.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/signals.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/status.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/token.py +0 -0
- {django_viewflow-2.2.14 → django_viewflow-2.3.0}/viewflow/workflow/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -47,62 +47,62 @@ Dynamic: summary
|
|
|
47
47
|
|
|
48
48
|
[![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
|
|
49
49
|
|
|
50
|
+
Viewflow is a low-code library for building business applications with Django.
|
|
51
|
+
It gives you ready-made components for user management, workflows, and
|
|
52
|
+
reporting. You write less code but keep full control. You can customize
|
|
53
|
+
everything and connect it to your existing systems.
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
Build full-featured business applications in a few lines of code. Viewflow ships
|
|
56
|
+
as one package with everything included. Each part works on its own, but they
|
|
57
|
+
all work well together.
|
|
54
58
|
|
|
55
59
|
GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
|
|
56
60
|
|
|
61
|
+
Viewflow comes in two versions:
|
|
57
62
|
|
|
58
|
-
Viewflow
|
|
59
|
-
- **Viewflow
|
|
60
|
-
- **Viewflow PRO:** A comprehensive package that includes reference functionality implementation and integrated with third-party Django packages. This package has a commercial-friendly license that allows private forks and modifications of Viewflow.
|
|
63
|
+
- **Viewflow Core:** Open-source library with base classes. Build your own solution on top.
|
|
64
|
+
- **Viewflow PRO:** Full package with ready-to-use features and third-party integrations. Commercial license allows private forks and modifications.
|
|
61
65
|
|
|
62
66
|
<img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
|
|
63
67
|
|
|
64
68
|
## Features
|
|
65
69
|
|
|
66
|
-
- Modern, responsive
|
|
67
|
-
- Reusable workflow library for
|
|
68
|
-
- Built-in
|
|
69
|
-
-
|
|
70
|
-
- Small
|
|
71
|
-
|
|
70
|
+
- Modern, responsive interface with SPA-style navigation
|
|
71
|
+
- Reusable workflow library for BPMN processes
|
|
72
|
+
- Built-in CRUD for complex forms and data
|
|
73
|
+
- Reporting dashboard included
|
|
74
|
+
- Small, easy-to-learn API
|
|
72
75
|
|
|
73
76
|
## Installation
|
|
74
77
|
|
|
75
|
-
Viewflow works with Python 3.8
|
|
78
|
+
Viewflow works with Python 3.8+ and Django 4.0+
|
|
76
79
|
|
|
77
80
|
Viewflow:
|
|
78
81
|
|
|
79
82
|
pip install django-viewflow
|
|
80
83
|
|
|
81
|
-
Viewflow
|
|
84
|
+
Viewflow PRO:
|
|
82
85
|
|
|
83
86
|
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
84
87
|
|
|
85
|
-
Add
|
|
88
|
+
Add to INSTALLED_APPS in settings.py:
|
|
86
89
|
|
|
87
90
|
```python
|
|
88
91
|
INSTALLED_APPS = [
|
|
89
92
|
....
|
|
90
93
|
'viewflow',
|
|
91
|
-
'viewflow.workflow',
|
|
94
|
+
'viewflow.workflow', # if you need workflows
|
|
92
95
|
]
|
|
93
96
|
```
|
|
94
97
|
|
|
95
|
-
|
|
96
98
|
## Quick start
|
|
97
99
|
|
|
98
|
-
Here
|
|
100
|
+
Here is a pizza ordering workflow example.
|
|
99
101
|
|
|
100
|
-
1. Create a model
|
|
102
|
+
### 1. Create a model for process data
|
|
101
103
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
instances. You can add your own fields to the model using jsonstore fields to
|
|
105
|
-
avoid model inheritance and additional joins:
|
|
104
|
+
Viewflow provides a Process base model. Use jsonstore fields to store data
|
|
105
|
+
without extra database joins:
|
|
106
106
|
|
|
107
107
|
```python
|
|
108
108
|
|
|
@@ -120,13 +120,10 @@ avoid model inheritance and additional joins:
|
|
|
120
120
|
proxy = True
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
2. Create
|
|
123
|
+
### 2. Create flows.py with your workflow
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
We'll define three steps in the workflow: start, bake, and deliver. We'll
|
|
128
|
-
use CreateProcessView and UpdateProcessView to create and update the process
|
|
129
|
-
data from PizzaOrder:
|
|
125
|
+
Define a flow class with steps. Use CreateProcessView and UpdateProcessView for
|
|
126
|
+
the forms:
|
|
130
127
|
|
|
131
128
|
```python
|
|
132
129
|
|
|
@@ -155,10 +152,9 @@ data from PizzaOrder:
|
|
|
155
152
|
end = flow.End()
|
|
156
153
|
```
|
|
157
154
|
|
|
158
|
-
3. Add
|
|
155
|
+
### 3. Add URLs
|
|
159
156
|
|
|
160
|
-
|
|
161
|
-
FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
157
|
+
Register the workflow with the frontend:
|
|
162
158
|
|
|
163
159
|
```python
|
|
164
160
|
|
|
@@ -182,21 +178,18 @@ FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
|
182
178
|
|
|
183
179
|
```
|
|
184
180
|
|
|
185
|
-
4.
|
|
181
|
+
### 4. Run migrations and start the server
|
|
186
182
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
able to create and track pizza orders with the workflow.
|
|
183
|
+
Run migrations, start Django, and open the browser. You can now create and track
|
|
184
|
+
pizza orders through the workflow.
|
|
190
185
|
|
|
191
|
-
|
|
186
|
+
Next steps: https://docs.viewflow.io/workflow/writing.html
|
|
192
187
|
|
|
193
188
|
## Documentation
|
|
194
189
|
|
|
195
|
-
|
|
196
|
-
http://docs.viewflow.io/
|
|
197
|
-
|
|
198
|
-
Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
|
|
190
|
+
Latest version: http://docs.viewflow.io/
|
|
199
191
|
|
|
192
|
+
Version 1.xx: http://v1-docs.viewflow.io
|
|
200
193
|
|
|
201
194
|
## Demo
|
|
202
195
|
|
|
@@ -204,10 +197,12 @@ http://demo.viewflow.io/
|
|
|
204
197
|
|
|
205
198
|
## Cookbook
|
|
206
199
|
|
|
207
|
-
|
|
200
|
+
Code samples and examples: https://github.com/viewflow/cookbook
|
|
208
201
|
|
|
209
|
-
|
|
202
|
+
## Stay updated
|
|
210
203
|
|
|
204
|
+
[Subscribe to our newsletter][newsletter] for release notes, Django low-code
|
|
205
|
+
tips, and notes on shipping business apps fast.
|
|
211
206
|
|
|
212
207
|
## License
|
|
213
208
|
|
|
@@ -230,6 +225,35 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
230
225
|
|
|
231
226
|
## Changelog
|
|
232
227
|
|
|
228
|
+
## 2.3.0 2026-06-30
|
|
229
|
+
|
|
230
|
+
- Fix `viewflow.fsm` chart generation crashing for `Enum` states and `State.ANY`
|
|
231
|
+
markers (#476)
|
|
232
|
+
- Use the localized status label (`get_status_display`) in the default Task and
|
|
233
|
+
Process briefs (#504)
|
|
234
|
+
- Add a `building-with-viewflow` skill for AI coding assistants (`skill/`, beta),
|
|
235
|
+
and ship `llms.txt`, `llms-full.txt` and `AGENTS.md` on docs.viewflow.io (#498)
|
|
236
|
+
- Fix the `vf-field-input` `readonly` attribute not being treated as a boolean;
|
|
237
|
+
it now defaults to `false` and is coerced like `disabled`/`required` (#499),
|
|
238
|
+
applied consistently across the field widgets, and added `readonly` support to
|
|
239
|
+
the password and textarea widgets
|
|
240
|
+
- Fix process cancel being allowed with only view permission; it now requires the
|
|
241
|
+
`manage` permission. `has_view_permission`/`has_manage_permission` also honor
|
|
242
|
+
object-level (e.g. django-guardian) permissions when an object is passed
|
|
243
|
+
- Make `Condition`/`Permission` generic over the flow type, so typed predicates
|
|
244
|
+
like `Callable[[Publication], bool]` are accepted in `state.transition(...)`
|
|
245
|
+
- Update frontend and tooling dependencies to their latest within-major versions
|
|
246
|
+
- Upgrade the build to vite 7 and vite-plugin-static-copy 4; migrate the
|
|
247
|
+
`@material` typography imports to the modern Sass `@use` API (generated CSS
|
|
248
|
+
unchanged) and drop the unused `babel-core@4` dev dependency
|
|
249
|
+
- Upgrade `vanilla-jsoneditor` 0.23 → 3 (bundles svelte 5); the JSON field
|
|
250
|
+
editor API is unchanged
|
|
251
|
+
|
|
252
|
+
## 2.2.15 2025-12-24
|
|
253
|
+
|
|
254
|
+
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
255
|
+
- Fix subprocess double execution when completing synchronously
|
|
256
|
+
|
|
233
257
|
## 2.2.14 2025-11-24
|
|
234
258
|
|
|
235
259
|
- Add Django 6.0 compatibility (requires Python 3.12+)
|
|
@@ -260,3 +284,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
260
284
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
261
285
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
262
286
|
[gpt]: https://chatgpt.com/g/g-8UHAnOpE3-viewflow-pair-programming
|
|
287
|
+
[newsletter]: https://robustarush.substack.com/?utm_source=github&utm_medium=readme&utm_campaign=viewflow_oss
|
|
@@ -4,62 +4,62 @@
|
|
|
4
4
|
|
|
5
5
|
[![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
|
|
6
6
|
|
|
7
|
+
Viewflow is a low-code library for building business applications with Django.
|
|
8
|
+
It gives you ready-made components for user management, workflows, and
|
|
9
|
+
reporting. You write less code but keep full control. You can customize
|
|
10
|
+
everything and connect it to your existing systems.
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
Build full-featured business applications in a few lines of code. Viewflow ships
|
|
13
|
+
as one package with everything included. Each part works on its own, but they
|
|
14
|
+
all work well together.
|
|
11
15
|
|
|
12
16
|
GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
|
|
13
17
|
|
|
18
|
+
Viewflow comes in two versions:
|
|
14
19
|
|
|
15
|
-
Viewflow
|
|
16
|
-
- **Viewflow
|
|
17
|
-
- **Viewflow PRO:** A comprehensive package that includes reference functionality implementation and integrated with third-party Django packages. This package has a commercial-friendly license that allows private forks and modifications of Viewflow.
|
|
20
|
+
- **Viewflow Core:** Open-source library with base classes. Build your own solution on top.
|
|
21
|
+
- **Viewflow PRO:** Full package with ready-to-use features and third-party integrations. Commercial license allows private forks and modifications.
|
|
18
22
|
|
|
19
23
|
<img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
|
|
20
24
|
|
|
21
25
|
## Features
|
|
22
26
|
|
|
23
|
-
- Modern, responsive
|
|
24
|
-
- Reusable workflow library for
|
|
25
|
-
- Built-in
|
|
26
|
-
-
|
|
27
|
-
- Small
|
|
28
|
-
|
|
27
|
+
- Modern, responsive interface with SPA-style navigation
|
|
28
|
+
- Reusable workflow library for BPMN processes
|
|
29
|
+
- Built-in CRUD for complex forms and data
|
|
30
|
+
- Reporting dashboard included
|
|
31
|
+
- Small, easy-to-learn API
|
|
29
32
|
|
|
30
33
|
## Installation
|
|
31
34
|
|
|
32
|
-
Viewflow works with Python 3.8
|
|
35
|
+
Viewflow works with Python 3.8+ and Django 4.0+
|
|
33
36
|
|
|
34
37
|
Viewflow:
|
|
35
38
|
|
|
36
39
|
pip install django-viewflow
|
|
37
40
|
|
|
38
|
-
Viewflow
|
|
41
|
+
Viewflow PRO:
|
|
39
42
|
|
|
40
43
|
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
41
44
|
|
|
42
|
-
Add
|
|
45
|
+
Add to INSTALLED_APPS in settings.py:
|
|
43
46
|
|
|
44
47
|
```python
|
|
45
48
|
INSTALLED_APPS = [
|
|
46
49
|
....
|
|
47
50
|
'viewflow',
|
|
48
|
-
'viewflow.workflow',
|
|
51
|
+
'viewflow.workflow', # if you need workflows
|
|
49
52
|
]
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
|
|
53
55
|
## Quick start
|
|
54
56
|
|
|
55
|
-
Here
|
|
57
|
+
Here is a pizza ordering workflow example.
|
|
56
58
|
|
|
57
|
-
1. Create a model
|
|
59
|
+
### 1. Create a model for process data
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
instances. You can add your own fields to the model using jsonstore fields to
|
|
62
|
-
avoid model inheritance and additional joins:
|
|
61
|
+
Viewflow provides a Process base model. Use jsonstore fields to store data
|
|
62
|
+
without extra database joins:
|
|
63
63
|
|
|
64
64
|
```python
|
|
65
65
|
|
|
@@ -77,13 +77,10 @@ avoid model inheritance and additional joins:
|
|
|
77
77
|
proxy = True
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
2. Create
|
|
80
|
+
### 2. Create flows.py with your workflow
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
We'll define three steps in the workflow: start, bake, and deliver. We'll
|
|
85
|
-
use CreateProcessView and UpdateProcessView to create and update the process
|
|
86
|
-
data from PizzaOrder:
|
|
82
|
+
Define a flow class with steps. Use CreateProcessView and UpdateProcessView for
|
|
83
|
+
the forms:
|
|
87
84
|
|
|
88
85
|
```python
|
|
89
86
|
|
|
@@ -112,10 +109,9 @@ data from PizzaOrder:
|
|
|
112
109
|
end = flow.End()
|
|
113
110
|
```
|
|
114
111
|
|
|
115
|
-
3. Add
|
|
112
|
+
### 3. Add URLs
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
114
|
+
Register the workflow with the frontend:
|
|
119
115
|
|
|
120
116
|
```python
|
|
121
117
|
|
|
@@ -139,21 +135,18 @@ FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
|
139
135
|
|
|
140
136
|
```
|
|
141
137
|
|
|
142
|
-
4.
|
|
138
|
+
### 4. Run migrations and start the server
|
|
143
139
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
able to create and track pizza orders with the workflow.
|
|
140
|
+
Run migrations, start Django, and open the browser. You can now create and track
|
|
141
|
+
pizza orders through the workflow.
|
|
147
142
|
|
|
148
|
-
|
|
143
|
+
Next steps: https://docs.viewflow.io/workflow/writing.html
|
|
149
144
|
|
|
150
145
|
## Documentation
|
|
151
146
|
|
|
152
|
-
|
|
153
|
-
http://docs.viewflow.io/
|
|
154
|
-
|
|
155
|
-
Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
|
|
147
|
+
Latest version: http://docs.viewflow.io/
|
|
156
148
|
|
|
149
|
+
Version 1.xx: http://v1-docs.viewflow.io
|
|
157
150
|
|
|
158
151
|
## Demo
|
|
159
152
|
|
|
@@ -161,10 +154,12 @@ http://demo.viewflow.io/
|
|
|
161
154
|
|
|
162
155
|
## Cookbook
|
|
163
156
|
|
|
164
|
-
|
|
157
|
+
Code samples and examples: https://github.com/viewflow/cookbook
|
|
165
158
|
|
|
166
|
-
|
|
159
|
+
## Stay updated
|
|
167
160
|
|
|
161
|
+
[Subscribe to our newsletter][newsletter] for release notes, Django low-code
|
|
162
|
+
tips, and notes on shipping business apps fast.
|
|
168
163
|
|
|
169
164
|
## License
|
|
170
165
|
|
|
@@ -187,6 +182,35 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
187
182
|
|
|
188
183
|
## Changelog
|
|
189
184
|
|
|
185
|
+
## 2.3.0 2026-06-30
|
|
186
|
+
|
|
187
|
+
- Fix `viewflow.fsm` chart generation crashing for `Enum` states and `State.ANY`
|
|
188
|
+
markers (#476)
|
|
189
|
+
- Use the localized status label (`get_status_display`) in the default Task and
|
|
190
|
+
Process briefs (#504)
|
|
191
|
+
- Add a `building-with-viewflow` skill for AI coding assistants (`skill/`, beta),
|
|
192
|
+
and ship `llms.txt`, `llms-full.txt` and `AGENTS.md` on docs.viewflow.io (#498)
|
|
193
|
+
- Fix the `vf-field-input` `readonly` attribute not being treated as a boolean;
|
|
194
|
+
it now defaults to `false` and is coerced like `disabled`/`required` (#499),
|
|
195
|
+
applied consistently across the field widgets, and added `readonly` support to
|
|
196
|
+
the password and textarea widgets
|
|
197
|
+
- Fix process cancel being allowed with only view permission; it now requires the
|
|
198
|
+
`manage` permission. `has_view_permission`/`has_manage_permission` also honor
|
|
199
|
+
object-level (e.g. django-guardian) permissions when an object is passed
|
|
200
|
+
- Make `Condition`/`Permission` generic over the flow type, so typed predicates
|
|
201
|
+
like `Callable[[Publication], bool]` are accepted in `state.transition(...)`
|
|
202
|
+
- Update frontend and tooling dependencies to their latest within-major versions
|
|
203
|
+
- Upgrade the build to vite 7 and vite-plugin-static-copy 4; migrate the
|
|
204
|
+
`@material` typography imports to the modern Sass `@use` API (generated CSS
|
|
205
|
+
unchanged) and drop the unused `babel-core@4` dev dependency
|
|
206
|
+
- Upgrade `vanilla-jsoneditor` 0.23 → 3 (bundles svelte 5); the JSON field
|
|
207
|
+
editor API is unchanged
|
|
208
|
+
|
|
209
|
+
## 2.2.15 2025-12-24
|
|
210
|
+
|
|
211
|
+
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
212
|
+
- Fix subprocess double execution when completing synchronously
|
|
213
|
+
|
|
190
214
|
## 2.2.14 2025-11-24
|
|
191
215
|
|
|
192
216
|
- Add Django 6.0 compatibility (requires Python 3.12+)
|
|
@@ -217,3 +241,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
217
241
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
218
242
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
219
243
|
[gpt]: https://chatgpt.com/g/g-8UHAnOpE3-viewflow-pair-programming
|
|
244
|
+
[newsletter]: https://robustarush.substack.com/?utm_source=github&utm_medium=readme&utm_campaign=viewflow_oss
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -47,62 +47,62 @@ Dynamic: summary
|
|
|
47
47
|
|
|
48
48
|
[![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
|
|
49
49
|
|
|
50
|
+
Viewflow is a low-code library for building business applications with Django.
|
|
51
|
+
It gives you ready-made components for user management, workflows, and
|
|
52
|
+
reporting. You write less code but keep full control. You can customize
|
|
53
|
+
everything and connect it to your existing systems.
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
Build full-featured business applications in a few lines of code. Viewflow ships
|
|
56
|
+
as one package with everything included. Each part works on its own, but they
|
|
57
|
+
all work well together.
|
|
54
58
|
|
|
55
59
|
GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
|
|
56
60
|
|
|
61
|
+
Viewflow comes in two versions:
|
|
57
62
|
|
|
58
|
-
Viewflow
|
|
59
|
-
- **Viewflow
|
|
60
|
-
- **Viewflow PRO:** A comprehensive package that includes reference functionality implementation and integrated with third-party Django packages. This package has a commercial-friendly license that allows private forks and modifications of Viewflow.
|
|
63
|
+
- **Viewflow Core:** Open-source library with base classes. Build your own solution on top.
|
|
64
|
+
- **Viewflow PRO:** Full package with ready-to-use features and third-party integrations. Commercial license allows private forks and modifications.
|
|
61
65
|
|
|
62
66
|
<img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
|
|
63
67
|
|
|
64
68
|
## Features
|
|
65
69
|
|
|
66
|
-
- Modern, responsive
|
|
67
|
-
- Reusable workflow library for
|
|
68
|
-
- Built-in
|
|
69
|
-
-
|
|
70
|
-
- Small
|
|
71
|
-
|
|
70
|
+
- Modern, responsive interface with SPA-style navigation
|
|
71
|
+
- Reusable workflow library for BPMN processes
|
|
72
|
+
- Built-in CRUD for complex forms and data
|
|
73
|
+
- Reporting dashboard included
|
|
74
|
+
- Small, easy-to-learn API
|
|
72
75
|
|
|
73
76
|
## Installation
|
|
74
77
|
|
|
75
|
-
Viewflow works with Python 3.8
|
|
78
|
+
Viewflow works with Python 3.8+ and Django 4.0+
|
|
76
79
|
|
|
77
80
|
Viewflow:
|
|
78
81
|
|
|
79
82
|
pip install django-viewflow
|
|
80
83
|
|
|
81
|
-
Viewflow
|
|
84
|
+
Viewflow PRO:
|
|
82
85
|
|
|
83
86
|
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
84
87
|
|
|
85
|
-
Add
|
|
88
|
+
Add to INSTALLED_APPS in settings.py:
|
|
86
89
|
|
|
87
90
|
```python
|
|
88
91
|
INSTALLED_APPS = [
|
|
89
92
|
....
|
|
90
93
|
'viewflow',
|
|
91
|
-
'viewflow.workflow',
|
|
94
|
+
'viewflow.workflow', # if you need workflows
|
|
92
95
|
]
|
|
93
96
|
```
|
|
94
97
|
|
|
95
|
-
|
|
96
98
|
## Quick start
|
|
97
99
|
|
|
98
|
-
Here
|
|
100
|
+
Here is a pizza ordering workflow example.
|
|
99
101
|
|
|
100
|
-
1. Create a model
|
|
102
|
+
### 1. Create a model for process data
|
|
101
103
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
instances. You can add your own fields to the model using jsonstore fields to
|
|
105
|
-
avoid model inheritance and additional joins:
|
|
104
|
+
Viewflow provides a Process base model. Use jsonstore fields to store data
|
|
105
|
+
without extra database joins:
|
|
106
106
|
|
|
107
107
|
```python
|
|
108
108
|
|
|
@@ -120,13 +120,10 @@ avoid model inheritance and additional joins:
|
|
|
120
120
|
proxy = True
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
2. Create
|
|
123
|
+
### 2. Create flows.py with your workflow
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
We'll define three steps in the workflow: start, bake, and deliver. We'll
|
|
128
|
-
use CreateProcessView and UpdateProcessView to create and update the process
|
|
129
|
-
data from PizzaOrder:
|
|
125
|
+
Define a flow class with steps. Use CreateProcessView and UpdateProcessView for
|
|
126
|
+
the forms:
|
|
130
127
|
|
|
131
128
|
```python
|
|
132
129
|
|
|
@@ -155,10 +152,9 @@ data from PizzaOrder:
|
|
|
155
152
|
end = flow.End()
|
|
156
153
|
```
|
|
157
154
|
|
|
158
|
-
3. Add
|
|
155
|
+
### 3. Add URLs
|
|
159
156
|
|
|
160
|
-
|
|
161
|
-
FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
157
|
+
Register the workflow with the frontend:
|
|
162
158
|
|
|
163
159
|
```python
|
|
164
160
|
|
|
@@ -182,21 +178,18 @@ FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
|
182
178
|
|
|
183
179
|
```
|
|
184
180
|
|
|
185
|
-
4.
|
|
181
|
+
### 4. Run migrations and start the server
|
|
186
182
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
able to create and track pizza orders with the workflow.
|
|
183
|
+
Run migrations, start Django, and open the browser. You can now create and track
|
|
184
|
+
pizza orders through the workflow.
|
|
190
185
|
|
|
191
|
-
|
|
186
|
+
Next steps: https://docs.viewflow.io/workflow/writing.html
|
|
192
187
|
|
|
193
188
|
## Documentation
|
|
194
189
|
|
|
195
|
-
|
|
196
|
-
http://docs.viewflow.io/
|
|
197
|
-
|
|
198
|
-
Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
|
|
190
|
+
Latest version: http://docs.viewflow.io/
|
|
199
191
|
|
|
192
|
+
Version 1.xx: http://v1-docs.viewflow.io
|
|
200
193
|
|
|
201
194
|
## Demo
|
|
202
195
|
|
|
@@ -204,10 +197,12 @@ http://demo.viewflow.io/
|
|
|
204
197
|
|
|
205
198
|
## Cookbook
|
|
206
199
|
|
|
207
|
-
|
|
200
|
+
Code samples and examples: https://github.com/viewflow/cookbook
|
|
208
201
|
|
|
209
|
-
|
|
202
|
+
## Stay updated
|
|
210
203
|
|
|
204
|
+
[Subscribe to our newsletter][newsletter] for release notes, Django low-code
|
|
205
|
+
tips, and notes on shipping business apps fast.
|
|
211
206
|
|
|
212
207
|
## License
|
|
213
208
|
|
|
@@ -230,6 +225,35 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
230
225
|
|
|
231
226
|
## Changelog
|
|
232
227
|
|
|
228
|
+
## 2.3.0 2026-06-30
|
|
229
|
+
|
|
230
|
+
- Fix `viewflow.fsm` chart generation crashing for `Enum` states and `State.ANY`
|
|
231
|
+
markers (#476)
|
|
232
|
+
- Use the localized status label (`get_status_display`) in the default Task and
|
|
233
|
+
Process briefs (#504)
|
|
234
|
+
- Add a `building-with-viewflow` skill for AI coding assistants (`skill/`, beta),
|
|
235
|
+
and ship `llms.txt`, `llms-full.txt` and `AGENTS.md` on docs.viewflow.io (#498)
|
|
236
|
+
- Fix the `vf-field-input` `readonly` attribute not being treated as a boolean;
|
|
237
|
+
it now defaults to `false` and is coerced like `disabled`/`required` (#499),
|
|
238
|
+
applied consistently across the field widgets, and added `readonly` support to
|
|
239
|
+
the password and textarea widgets
|
|
240
|
+
- Fix process cancel being allowed with only view permission; it now requires the
|
|
241
|
+
`manage` permission. `has_view_permission`/`has_manage_permission` also honor
|
|
242
|
+
object-level (e.g. django-guardian) permissions when an object is passed
|
|
243
|
+
- Make `Condition`/`Permission` generic over the flow type, so typed predicates
|
|
244
|
+
like `Callable[[Publication], bool]` are accepted in `state.transition(...)`
|
|
245
|
+
- Update frontend and tooling dependencies to their latest within-major versions
|
|
246
|
+
- Upgrade the build to vite 7 and vite-plugin-static-copy 4; migrate the
|
|
247
|
+
`@material` typography imports to the modern Sass `@use` API (generated CSS
|
|
248
|
+
unchanged) and drop the unused `babel-core@4` dev dependency
|
|
249
|
+
- Upgrade `vanilla-jsoneditor` 0.23 → 3 (bundles svelte 5); the JSON field
|
|
250
|
+
editor API is unchanged
|
|
251
|
+
|
|
252
|
+
## 2.2.15 2025-12-24
|
|
253
|
+
|
|
254
|
+
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
255
|
+
- Fix subprocess double execution when completing synchronously
|
|
256
|
+
|
|
233
257
|
## 2.2.14 2025-11-24
|
|
234
258
|
|
|
235
259
|
- Add Django 6.0 compatibility (requires Python 3.12+)
|
|
@@ -260,3 +284,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
260
284
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
261
285
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
262
286
|
[gpt]: https://chatgpt.com/g/g-8UHAnOpE3-viewflow-pair-programming
|
|
287
|
+
[newsletter]: https://robustarush.substack.com/?utm_source=github&utm_medium=readme&utm_campaign=viewflow_oss
|