django-viewflow 2.2.15__tar.gz → 2.3.1__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.15/django_viewflow.egg-info → django_viewflow-2.3.1}/PKG-INFO +78 -45
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/README.md +63 -43
- {django-viewflow-2.2.15 → django_viewflow-2.3.1/django_viewflow.egg-info}/PKG-INFO +78 -45
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/django_viewflow.egg-info/SOURCES.txt +52 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/setup.py +1 -1
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/__init__.py +1 -1
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/base.py +7 -3
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/chart.py +9 -2
- django_viewflow-2.3.1/viewflow/fsm/typing.py +30 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/css → django_viewflow-2.3.1/viewflow/static/viewflow/css/node_modules/trix/dist}/trix.css +309 -251
- django_viewflow-2.3.1/viewflow/static/viewflow/css/perfect-scrollbar.css +116 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/css/trix.css +470 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/css/viewflow.min.css +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/css/vis-network.min.css +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-outlined.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-outlined.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-round.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-round.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-sharp.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-sharp.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-two-tone.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons-two-tone.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.css +124 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/material-icons/node_modules/material-icons/iconfont/material-icons.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Black.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Black.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Bold.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Bold.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Light.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Light.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-LightItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Medium.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Medium.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Regular.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Regular.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Thin.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-Thin.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +143 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot → django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.eot +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.otf +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons → django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font}/SimpleIcons.ttf +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.woff +0 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/SimpleIcons.woff2 +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons → django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font}/simple-icons.css +3318 -3001
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/node_modules/simple-icons-font/font/simple-icons.min.css +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +6308 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js +22 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js.map +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/vis-network/dist/vis-network.min.js +27 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/vis-network/dist/vis-network.min.js.map +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/perfect-scrollbar.min.js +22 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +1 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/smartcrop.js +594 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/turbo.es2017-umd.js +3998 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/viewflow.min.js +18 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/viewflow.min.js.map +1 -1
- django_viewflow-2.3.1/viewflow/static/viewflow/js/vis-network.min.js +27 -0
- django_viewflow-2.3.1/viewflow/static/viewflow/js/vis-network.min.js.map +1 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/base.py +10 -7
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/utils.py +9 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/actions.py +31 -1
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/detail.py +14 -1
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/models.py +2 -2
- django-viewflow-2.2.15/viewflow/fsm/typing.py +0 -19
- django-viewflow-2.2.15/viewflow/static/viewflow/css/viewflow.min.css +0 -22
- django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- django-viewflow-2.2.15/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -1
- django-viewflow-2.2.15/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -20
- django-viewflow-2.2.15/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -1
- django-viewflow-2.2.15/viewflow/static/viewflow/js/viewflow.min.js +0 -2878
- django-viewflow-2.2.15/viewflow/static/viewflow/js/vis-network.min.js +0 -27
- django-viewflow-2.2.15/viewflow/static/viewflow/js/vis-network.min.js.map +0 -1
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/LICENSE +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/LICENSE_EXCEPTION +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/MANIFEST.in +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/django_viewflow.egg-info/dependency_links.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/django_viewflow.egg-info/not-zip-safe +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/django_viewflow.egg-info/requires.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/django_viewflow.egg-info/top_level.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/setup.cfg +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_middleware.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_templates.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_templatetags__viewflow.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_this_object.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_urls__base.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/tests/test_utils__package.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/apps.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/conf.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/admin/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/admin/apps.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/auth.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/plotly/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/plotly/material.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/plotly/views.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/contrib/plotly/viewset.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fields.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/forms/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/forms/renderers.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/admin.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/views.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/fsm/viewset.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/jsonstore.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/management/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/management/commands/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/management/commands/flowexport.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/middleware.py +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow → django_viewflow-2.3.1/viewflow/static/viewflow/css/node_modules/perfect-scrollbar}/css/perfect-scrollbar.css +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/css → django_viewflow-2.3.1/viewflow/static/viewflow/css/node_modules/vis-network/dist/dist}/vis-network.min.css +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/fonts → django_viewflow-2.3.1/viewflow/static/viewflow/fonts/roboto/node_modules/roboto-fontface/css}/roboto/roboto-fontface.css +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/img/favicon.png +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/img/user.png +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/js → django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/@hotwired/turbo/dist}/turbo.es2017-umd.js +0 -0
- {django-viewflow-2.2.15/viewflow/static/viewflow/js → django_viewflow-2.3.1/viewflow/static/viewflow/js/node_modules/smartcrop}/smartcrop.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/static/viewflow/js/trix.js +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/400.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/403.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/404.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/500.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/admin/fsm_change_form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/admin/fsm_change_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/admin/fsm_transition_form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/logged_out.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/login.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_change_done.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_change_form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_reset_complete.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_reset_confirm.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_reset_done.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/password_reset_form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/profile.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/registration/provider_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/base.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/base_page.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/delete_action.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/detail.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/form.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/views/transition.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/assign.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/start.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_detail.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templatetags/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templatetags/fsm.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templatetags/viewflow.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/templatetags/workflow.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/this_object.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/urls/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/urls/base.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/urls/model.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/urls/sites.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/utils.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/actions.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/base.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/create.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/delete.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/detail.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/filters.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/list.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/search.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/views/update.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/activation.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/admin.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/apps.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/chart.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/context.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/exceptions.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/fields.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/mixins.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/nodes.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/chart.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/create.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/dashboard.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/filters.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/list.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/mixins.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/views/update.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/flow/viewset.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/lock.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/managers.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0001_initial.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0005_merge.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0006_i18n.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0006_merge.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0008_merge.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0009_merge.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/0014_alter_process_parent_task.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/migrations/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/__init__.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/end.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/func.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/handle.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/if_gate.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/job.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/join.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/mixins.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/obsolete.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/split.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/start.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/switch.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/nodes/view.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/signals.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/status.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/token.py +0 -0
- {django-viewflow-2.2.15 → django_viewflow-2.3.1}/viewflow/workflow/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -27,6 +27,19 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or l
|
|
|
27
27
|
Requires-Python: >=3.10
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE
|
|
30
|
+
Requires-Dist: Django>=4.2
|
|
31
|
+
Requires-Dist: django-filter>=2.3.0
|
|
32
|
+
Dynamic: author
|
|
33
|
+
Dynamic: author-email
|
|
34
|
+
Dynamic: classifier
|
|
35
|
+
Dynamic: description
|
|
36
|
+
Dynamic: description-content-type
|
|
37
|
+
Dynamic: keywords
|
|
38
|
+
Dynamic: license
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
Dynamic: requires-dist
|
|
41
|
+
Dynamic: requires-python
|
|
42
|
+
Dynamic: summary
|
|
30
43
|
|
|
31
44
|
# Viewflow
|
|
32
45
|
|
|
@@ -34,62 +47,62 @@ License-File: LICENSE
|
|
|
34
47
|
|
|
35
48
|
[![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
|
|
36
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.
|
|
37
54
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
41
58
|
|
|
42
59
|
GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
|
|
43
60
|
|
|
61
|
+
Viewflow comes in two versions:
|
|
44
62
|
|
|
45
|
-
Viewflow
|
|
46
|
-
- **Viewflow
|
|
47
|
-
- **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.
|
|
48
65
|
|
|
49
66
|
<img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
|
|
50
67
|
|
|
51
68
|
## Features
|
|
52
69
|
|
|
53
|
-
- Modern, responsive
|
|
54
|
-
- Reusable workflow library for
|
|
55
|
-
- Built-in
|
|
56
|
-
-
|
|
57
|
-
- Small
|
|
58
|
-
|
|
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
|
|
59
75
|
|
|
60
76
|
## Installation
|
|
61
77
|
|
|
62
|
-
Viewflow works with Python 3.8
|
|
78
|
+
Viewflow works with Python 3.8+ and Django 4.0+
|
|
63
79
|
|
|
64
80
|
Viewflow:
|
|
65
81
|
|
|
66
82
|
pip install django-viewflow
|
|
67
83
|
|
|
68
|
-
Viewflow
|
|
84
|
+
Viewflow PRO:
|
|
69
85
|
|
|
70
86
|
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
71
87
|
|
|
72
|
-
Add
|
|
88
|
+
Add to INSTALLED_APPS in settings.py:
|
|
73
89
|
|
|
74
90
|
```python
|
|
75
91
|
INSTALLED_APPS = [
|
|
76
92
|
....
|
|
77
93
|
'viewflow',
|
|
78
|
-
'viewflow.workflow',
|
|
94
|
+
'viewflow.workflow', # if you need workflows
|
|
79
95
|
]
|
|
80
96
|
```
|
|
81
97
|
|
|
82
|
-
|
|
83
98
|
## Quick start
|
|
84
99
|
|
|
85
|
-
Here
|
|
100
|
+
Here is a pizza ordering workflow example.
|
|
86
101
|
|
|
87
|
-
1. Create a model
|
|
102
|
+
### 1. Create a model for process data
|
|
88
103
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
instances. You can add your own fields to the model using jsonstore fields to
|
|
92
|
-
avoid model inheritance and additional joins:
|
|
104
|
+
Viewflow provides a Process base model. Use jsonstore fields to store data
|
|
105
|
+
without extra database joins:
|
|
93
106
|
|
|
94
107
|
```python
|
|
95
108
|
|
|
@@ -107,13 +120,10 @@ avoid model inheritance and additional joins:
|
|
|
107
120
|
proxy = True
|
|
108
121
|
```
|
|
109
122
|
|
|
110
|
-
2. Create
|
|
123
|
+
### 2. Create flows.py with your workflow
|
|
111
124
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
We'll define three steps in the workflow: start, bake, and deliver. We'll
|
|
115
|
-
use CreateProcessView and UpdateProcessView to create and update the process
|
|
116
|
-
data from PizzaOrder:
|
|
125
|
+
Define a flow class with steps. Use CreateProcessView and UpdateProcessView for
|
|
126
|
+
the forms:
|
|
117
127
|
|
|
118
128
|
```python
|
|
119
129
|
|
|
@@ -142,10 +152,9 @@ data from PizzaOrder:
|
|
|
142
152
|
end = flow.End()
|
|
143
153
|
```
|
|
144
154
|
|
|
145
|
-
3. Add
|
|
155
|
+
### 3. Add URLs
|
|
146
156
|
|
|
147
|
-
|
|
148
|
-
FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
157
|
+
Register the workflow with the frontend:
|
|
149
158
|
|
|
150
159
|
```python
|
|
151
160
|
|
|
@@ -169,21 +178,18 @@ FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
|
169
178
|
|
|
170
179
|
```
|
|
171
180
|
|
|
172
|
-
4.
|
|
181
|
+
### 4. Run migrations and start the server
|
|
173
182
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
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.
|
|
177
185
|
|
|
178
|
-
|
|
186
|
+
Next steps: https://docs.viewflow.io/workflow/writing.html
|
|
179
187
|
|
|
180
188
|
## Documentation
|
|
181
189
|
|
|
182
|
-
|
|
183
|
-
http://docs.viewflow.io/
|
|
184
|
-
|
|
185
|
-
Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
|
|
190
|
+
Latest version: http://docs.viewflow.io/
|
|
186
191
|
|
|
192
|
+
Version 1.xx: http://v1-docs.viewflow.io
|
|
187
193
|
|
|
188
194
|
## Demo
|
|
189
195
|
|
|
@@ -191,10 +197,12 @@ http://demo.viewflow.io/
|
|
|
191
197
|
|
|
192
198
|
## Cookbook
|
|
193
199
|
|
|
194
|
-
|
|
200
|
+
Code samples and examples: https://github.com/viewflow/cookbook
|
|
195
201
|
|
|
196
|
-
|
|
202
|
+
## Stay updated
|
|
197
203
|
|
|
204
|
+
[Subscribe to our newsletter][newsletter] for release notes, Django low-code
|
|
205
|
+
tips, and notes on shipping business apps fast.
|
|
198
206
|
|
|
199
207
|
## License
|
|
200
208
|
|
|
@@ -217,6 +225,30 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
217
225
|
|
|
218
226
|
## Changelog
|
|
219
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
|
+
|
|
220
252
|
## 2.2.15 2025-12-24
|
|
221
253
|
|
|
222
254
|
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
@@ -252,3 +284,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
252
284
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
253
285
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
254
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,30 @@ 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
|
+
|
|
190
209
|
## 2.2.15 2025-12-24
|
|
191
210
|
|
|
192
211
|
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
@@ -222,3 +241,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
222
241
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
223
242
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
224
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
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -27,6 +27,19 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or l
|
|
|
27
27
|
Requires-Python: >=3.10
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE
|
|
30
|
+
Requires-Dist: Django>=4.2
|
|
31
|
+
Requires-Dist: django-filter>=2.3.0
|
|
32
|
+
Dynamic: author
|
|
33
|
+
Dynamic: author-email
|
|
34
|
+
Dynamic: classifier
|
|
35
|
+
Dynamic: description
|
|
36
|
+
Dynamic: description-content-type
|
|
37
|
+
Dynamic: keywords
|
|
38
|
+
Dynamic: license
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
Dynamic: requires-dist
|
|
41
|
+
Dynamic: requires-python
|
|
42
|
+
Dynamic: summary
|
|
30
43
|
|
|
31
44
|
# Viewflow
|
|
32
45
|
|
|
@@ -34,62 +47,62 @@ License-File: LICENSE
|
|
|
34
47
|
|
|
35
48
|
[![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
|
|
36
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.
|
|
37
54
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
41
58
|
|
|
42
59
|
GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
|
|
43
60
|
|
|
61
|
+
Viewflow comes in two versions:
|
|
44
62
|
|
|
45
|
-
Viewflow
|
|
46
|
-
- **Viewflow
|
|
47
|
-
- **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.
|
|
48
65
|
|
|
49
66
|
<img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
|
|
50
67
|
|
|
51
68
|
## Features
|
|
52
69
|
|
|
53
|
-
- Modern, responsive
|
|
54
|
-
- Reusable workflow library for
|
|
55
|
-
- Built-in
|
|
56
|
-
-
|
|
57
|
-
- Small
|
|
58
|
-
|
|
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
|
|
59
75
|
|
|
60
76
|
## Installation
|
|
61
77
|
|
|
62
|
-
Viewflow works with Python 3.8
|
|
78
|
+
Viewflow works with Python 3.8+ and Django 4.0+
|
|
63
79
|
|
|
64
80
|
Viewflow:
|
|
65
81
|
|
|
66
82
|
pip install django-viewflow
|
|
67
83
|
|
|
68
|
-
Viewflow
|
|
84
|
+
Viewflow PRO:
|
|
69
85
|
|
|
70
86
|
pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
|
|
71
87
|
|
|
72
|
-
Add
|
|
88
|
+
Add to INSTALLED_APPS in settings.py:
|
|
73
89
|
|
|
74
90
|
```python
|
|
75
91
|
INSTALLED_APPS = [
|
|
76
92
|
....
|
|
77
93
|
'viewflow',
|
|
78
|
-
'viewflow.workflow',
|
|
94
|
+
'viewflow.workflow', # if you need workflows
|
|
79
95
|
]
|
|
80
96
|
```
|
|
81
97
|
|
|
82
|
-
|
|
83
98
|
## Quick start
|
|
84
99
|
|
|
85
|
-
Here
|
|
100
|
+
Here is a pizza ordering workflow example.
|
|
86
101
|
|
|
87
|
-
1. Create a model
|
|
102
|
+
### 1. Create a model for process data
|
|
88
103
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
instances. You can add your own fields to the model using jsonstore fields to
|
|
92
|
-
avoid model inheritance and additional joins:
|
|
104
|
+
Viewflow provides a Process base model. Use jsonstore fields to store data
|
|
105
|
+
without extra database joins:
|
|
93
106
|
|
|
94
107
|
```python
|
|
95
108
|
|
|
@@ -107,13 +120,10 @@ avoid model inheritance and additional joins:
|
|
|
107
120
|
proxy = True
|
|
108
121
|
```
|
|
109
122
|
|
|
110
|
-
2. Create
|
|
123
|
+
### 2. Create flows.py with your workflow
|
|
111
124
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
We'll define three steps in the workflow: start, bake, and deliver. We'll
|
|
115
|
-
use CreateProcessView and UpdateProcessView to create and update the process
|
|
116
|
-
data from PizzaOrder:
|
|
125
|
+
Define a flow class with steps. Use CreateProcessView and UpdateProcessView for
|
|
126
|
+
the forms:
|
|
117
127
|
|
|
118
128
|
```python
|
|
119
129
|
|
|
@@ -142,10 +152,9 @@ data from PizzaOrder:
|
|
|
142
152
|
end = flow.End()
|
|
143
153
|
```
|
|
144
154
|
|
|
145
|
-
3. Add
|
|
155
|
+
### 3. Add URLs
|
|
146
156
|
|
|
147
|
-
|
|
148
|
-
FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
157
|
+
Register the workflow with the frontend:
|
|
149
158
|
|
|
150
159
|
```python
|
|
151
160
|
|
|
@@ -169,21 +178,18 @@ FlowAppViewset classes to register your workflow with the pre-built frontend.
|
|
|
169
178
|
|
|
170
179
|
```
|
|
171
180
|
|
|
172
|
-
4.
|
|
181
|
+
### 4. Run migrations and start the server
|
|
173
182
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
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.
|
|
177
185
|
|
|
178
|
-
|
|
186
|
+
Next steps: https://docs.viewflow.io/workflow/writing.html
|
|
179
187
|
|
|
180
188
|
## Documentation
|
|
181
189
|
|
|
182
|
-
|
|
183
|
-
http://docs.viewflow.io/
|
|
184
|
-
|
|
185
|
-
Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
|
|
190
|
+
Latest version: http://docs.viewflow.io/
|
|
186
191
|
|
|
192
|
+
Version 1.xx: http://v1-docs.viewflow.io
|
|
187
193
|
|
|
188
194
|
## Demo
|
|
189
195
|
|
|
@@ -191,10 +197,12 @@ http://demo.viewflow.io/
|
|
|
191
197
|
|
|
192
198
|
## Cookbook
|
|
193
199
|
|
|
194
|
-
|
|
200
|
+
Code samples and examples: https://github.com/viewflow/cookbook
|
|
195
201
|
|
|
196
|
-
|
|
202
|
+
## Stay updated
|
|
197
203
|
|
|
204
|
+
[Subscribe to our newsletter][newsletter] for release notes, Django low-code
|
|
205
|
+
tips, and notes on shipping business apps fast.
|
|
198
206
|
|
|
199
207
|
## License
|
|
200
208
|
|
|
@@ -217,6 +225,30 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
217
225
|
|
|
218
226
|
## Changelog
|
|
219
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
|
+
|
|
220
252
|
## 2.2.15 2025-12-24
|
|
221
253
|
|
|
222
254
|
- Fix form button name/value lost on resubmission after validation error with Turbo
|
|
@@ -252,3 +284,4 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
252
284
|
[requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
|
|
253
285
|
[requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
|
|
254
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
|