django-viewflow 2.2.3__tar.gz → 2.2.4__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.3/django_viewflow.egg-info → django_viewflow-2.2.4}/PKG-INFO +3 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/README.md +20 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4/django_viewflow.egg-info}/PKG-INFO +3 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/SOURCES.txt +1 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/setup.py +1 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/forms/renderers.py +2 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/graph.svg +7 -7
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_cancel.html +3 -3
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_data.html +22 -2
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_data.html +22 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_detail.html +10 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templatetags/workflow.py +2 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/activation.py +6 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/chart.py +22 -5
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/actions.py +14 -3
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/create.py +4 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/dashboard.py +4 -2
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/update.py +4 -0
- django_viewflow-2.2.4/viewflow/workflow/migrations/0014_alter_process_parent_task.py +25 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/models.py +1 -1
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/job.py +7 -3
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/start.py +2 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/LICENSE +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/LICENSE_EXCEPTION +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/MANIFEST.in +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/dependency_links.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/not-zip-safe +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/requires.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/top_level.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/setup.cfg +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_middleware.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_templates.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_templatetags__viewflow.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_this_object.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_urls__base.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/tests/test_utils__package.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/apps.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/conf.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/admin/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/admin/apps.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/auth.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/plotly/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/plotly/material.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/plotly/views.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/contrib/plotly/viewset.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fields.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/forms/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/admin.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/base.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/chart.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/typing.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/views.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/fsm/viewset.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/jsonstore.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/management/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/management/commands/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/management/commands/flowexport.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/middleware.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/css/perfect-scrollbar.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/css/trix.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/css/viewflow.min.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/css/vis-network.min.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/img/favicon.png +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/img/user.png +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/smartcrop.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/trix.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/turbo.es2017-umd.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/viewflow.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/viewflow.min.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/vis-network.min.js +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/static/viewflow/js/vis-network.min.js.map +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/400.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/403.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/404.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/500.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/admin/fsm_change_form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/admin/fsm_change_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/admin/fsm_transition_form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/logged_out.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/login.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_change_done.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_change_form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_reset_complete.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_reset_confirm.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_reset_done.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/password_reset_form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/profile.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/registration/provider_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/base.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/base_page.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/delete_action.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/detail.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/form.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/views/transition.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/assign.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/start.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templatetags/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templatetags/fsm.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templatetags/viewflow.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/this_object.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/urls/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/urls/base.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/urls/model.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/urls/sites.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/utils.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/actions.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/base.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/create.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/delete.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/detail.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/filters.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/list.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/search.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/views/update.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/admin.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/apps.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/base.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/context.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/exceptions.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/fields.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/mixins.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/nodes.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/utils.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/chart.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/detail.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/filters.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/list.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/views/mixins.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/flow/viewset.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/lock.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/managers.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0001_initial.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0005_merge.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0006_i18n.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0006_merge.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0008_merge.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0009_merge.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/migrations/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/__init__.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/end.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/func.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/handle.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/if_gate.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/join.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/mixins.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/obsolete.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/split.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/switch.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/nodes/view.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/signals.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/status.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/token.py +0 -0
- {django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/workflow/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.4
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -25,3 +25,5 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
25
25
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
26
26
|
Requires-Python: >=3.8
|
|
27
27
|
License-File: LICENSE
|
|
28
|
+
Requires-Dist: Django>=4.2
|
|
29
|
+
Requires-Dist: django-filter>=2.3.0
|
|
@@ -185,6 +185,26 @@ modifications of Viewflow. You can find the commercial license terms in
|
|
|
185
185
|
|
|
186
186
|
## Changelog
|
|
187
187
|
|
|
188
|
+
### 2.2.4 2024-07-12
|
|
189
|
+
|
|
190
|
+
- Clone data, seed, and artifacts from canceled tasks to revived tasks.
|
|
191
|
+
- Enhance error handling for celery.Job.
|
|
192
|
+
- Improve the process cancellation template.
|
|
193
|
+
- Redirect to the task detail page after canceling or undoing actions, instead
|
|
194
|
+
of redirecting to the process detail page.
|
|
195
|
+
- Added links to parent subprocess and parent task on the subprocess process and
|
|
196
|
+
task details pages.
|
|
197
|
+
- Updated the Process.parent_task field to use related_name='subprocess',
|
|
198
|
+
allowing access to subprocesses via task.subprocess
|
|
199
|
+
- Enhanced CreateProcessView and UpdateProcessView to set process_seed and
|
|
200
|
+
artifact_generic_foreign_key fields based on form.cleaned_data, as Django
|
|
201
|
+
model forms do not handle this automatically.
|
|
202
|
+
- Added tasks with an ERROR status to the process dashboard for better visibility and tracking.
|
|
203
|
+
- Added tooltip hover titles to nodes without text labels in the SVG workflow graph.
|
|
204
|
+
- Marked StartHandler nodes as BPMN Start Message events on the SVG graph.
|
|
205
|
+
- Fixed rendering of hidden field errors in forms.
|
|
206
|
+
|
|
207
|
+
|
|
188
208
|
### 2.2.3 2024-07-09
|
|
189
209
|
|
|
190
210
|
- Fixed issue with Split/Join operations when an immediate split to join
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-viewflow
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.4
|
|
4
4
|
Summary: Reusable library to build business applications fast
|
|
5
5
|
Author: Mikhail Podgurskiy
|
|
6
6
|
Author-email: kmmbvnr@gmail.com
|
|
@@ -25,3 +25,5 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
25
25
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
26
26
|
Requires-Python: >=3.8
|
|
27
27
|
License-File: LICENSE
|
|
28
|
+
Requires-Dist: Django>=4.2
|
|
29
|
+
Requires-Dist: django-filter>=2.3.0
|
|
@@ -306,6 +306,7 @@ viewflow/workflow/migrations/0010_viewflow20.py
|
|
|
306
306
|
viewflow/workflow/migrations/0011_alter_task_created_and_more.py
|
|
307
307
|
viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py
|
|
308
308
|
viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py
|
|
309
|
+
viewflow/workflow/migrations/0014_alter_process_parent_task.py
|
|
309
310
|
viewflow/workflow/migrations/__init__.py
|
|
310
311
|
viewflow/workflow/nodes/__init__.py
|
|
311
312
|
viewflow/workflow/nodes/end.py
|
|
@@ -4,7 +4,7 @@ README = open("README.md", "r", encoding="utf-8").read()
|
|
|
4
4
|
|
|
5
5
|
setuptools.setup(
|
|
6
6
|
name="django-viewflow",
|
|
7
|
-
version="2.2.
|
|
7
|
+
version="2.2.4",
|
|
8
8
|
author_email="kmmbvnr@gmail.com",
|
|
9
9
|
author="Mikhail Podgurskiy",
|
|
10
10
|
description="Reusable library to build business applications fast",
|
|
@@ -510,9 +510,10 @@ class FormLayout:
|
|
|
510
510
|
def append_non_field_errors(self, form: forms.Form, root: ElementTree.Element):
|
|
511
511
|
errors = form.non_field_errors()
|
|
512
512
|
errors.extend(
|
|
513
|
-
|
|
513
|
+
error
|
|
514
514
|
for bound_field in form.hidden_fields()
|
|
515
515
|
if bound_field.errors
|
|
516
|
+
for error in bound_field.errors
|
|
516
517
|
)
|
|
517
518
|
|
|
518
519
|
if errors:
|
{django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/graph.svg
RENAMED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
|
|
82
82
|
circle.event,
|
|
83
83
|
path.event {
|
|
84
|
-
fill:
|
|
84
|
+
fill: transparent;
|
|
85
85
|
stroke: #000;
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -90,12 +90,12 @@
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
path.event-marker {
|
|
93
|
-
fill:
|
|
93
|
+
fill: transparent;
|
|
94
94
|
stroke: #000;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
path.gateway {
|
|
98
|
-
fill:
|
|
98
|
+
fill: transparent;
|
|
99
99
|
stroke: #000;
|
|
100
100
|
stroke-width: 1.1;
|
|
101
101
|
}
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
rect.task {
|
|
111
|
-
fill:
|
|
111
|
+
fill: transparent;
|
|
112
112
|
stroke: #000;
|
|
113
113
|
stroke-width: 1.1;
|
|
114
114
|
}
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
path.task-marker {
|
|
123
|
-
fill:
|
|
123
|
+
fill: transparent;
|
|
124
124
|
stroke: #000;
|
|
125
125
|
stroke-width: 1.1;
|
|
126
126
|
}
|
|
@@ -128,14 +128,14 @@
|
|
|
128
128
|
</style>
|
|
129
129
|
{% for cell in cells %}
|
|
130
130
|
<g id="{{ cell.node.name }}" transform="translate({{ cell.shape.x }}, {{ cell.shape.y }})"{% if cell.status %} class="{{ cell.status|lower }}"{% endif %}>
|
|
131
|
-
{% if cell.
|
|
131
|
+
{% if cell.title %}<title>{{ cell.title }}</title>{% endif %}
|
|
132
132
|
{{ cell.shape.svg|safe }}
|
|
133
133
|
{% for text, class, font_size, x, y in cell.shape.text %}
|
|
134
134
|
<text class="{{ class }}" font-size="{{ font_size }}px" x="{{ x }}" y="{{ y }}">{% if forloop.first %}{{ text|title }}{% else %}{{ text }}{% endif %}</text>
|
|
135
135
|
{% endfor %}
|
|
136
136
|
</g>
|
|
137
137
|
{% endfor %}{% for edge in edges %}
|
|
138
|
-
<path fill="
|
|
138
|
+
<path fill="transparent" stroke="#000000" stroke-width="2" id="{{ edge.src.name}}__{{ edge.dst.name }}" marker-end="url(#end-marker)"
|
|
139
139
|
d="{% for x,y in edge.segments %}{% if forloop.first %}M{% else %} L{% endif %}{{ x }}, {{ y }}{% endfor %}"/>
|
|
140
140
|
|
|
141
141
|
{% endfor %}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
{% block content %}
|
|
5
5
|
<div class="mdc-layout-grid vf-page__grid">
|
|
6
|
-
<div class="mdc-layout-grid__inner">
|
|
7
|
-
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-
|
|
6
|
+
<div class="mdc-layout-grid__inner vf-page__grid-inner">
|
|
7
|
+
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-8-desktop mdc-layout-grid__cell--span-8-tablet mdc-layout-grid__cell--span-4-phone">
|
|
8
8
|
<div class="mdc-card vf-card">
|
|
9
9
|
<section class="vf-card__header">
|
|
10
10
|
<h1 class="vf-card__title">
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
</div>
|
|
91
91
|
</div>
|
|
92
92
|
{% block panel-cell %}
|
|
93
|
-
<div class="mdc-layout-grid__cell {% block panel-cell-span %}mdc-layout-grid__cell--span-
|
|
93
|
+
<div class="mdc-layout-grid__cell {% block panel-cell-span %}mdc-layout-grid__cell--span-4-desktop mdc-layout-grid__cell--span-8-tablet mdc-layout-grid__cell--span-4-phone{% endblock %}">
|
|
94
94
|
{% include_process_data process %}
|
|
95
95
|
</div>
|
|
96
96
|
{% endblock panel-cell %}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{% load viewflow %}
|
|
1
|
+
{% load viewflow i18n %}
|
|
2
2
|
<div class="mdc-card vf-card">
|
|
3
3
|
<section class="vf-card__header">
|
|
4
4
|
<h1 class="vf-card__title">{{ process }}</h1>
|
|
@@ -20,13 +20,33 @@
|
|
|
20
20
|
</td>
|
|
21
21
|
</tr>
|
|
22
22
|
{% for field, field_name, value in process_data %}
|
|
23
|
-
{% if field.name != 'data' and field.name != 'flow_class' and field.name != 'artifact_object_id' and field.name != 'artifact_content_type'%}
|
|
23
|
+
{% if field.name != 'parent_task' and field.name != 'data' and field.name != 'flow_class' and field.name != 'artifact_object_id' and field.name != 'artifact_content_type' and field.name != 'seed_object_id' and field.name != 'seed_content_type'%}
|
|
24
24
|
<tr>
|
|
25
25
|
<th class="vf-list__table-header vf-list__table-header-text">{{ field_name }}</th>
|
|
26
26
|
<td>{{ value }}</td>
|
|
27
27
|
</tr>
|
|
28
28
|
{% endif %}
|
|
29
29
|
{% endfor %}
|
|
30
|
+
{% if process.parent_task %}
|
|
31
|
+
<tr>
|
|
32
|
+
<th class="vf-list__table-header vf-list__table-header-text">{% translate 'Parent Task' %}</th>
|
|
33
|
+
<td>
|
|
34
|
+
<a href="{% reverse process.parent_task.flow_task 'index' process.parent_task.process_id process.parent_task.pk %}">{{ process.parent_task.flow_task }}</a>
|
|
35
|
+
</td>
|
|
36
|
+
</tr>
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% if process.seed %}
|
|
39
|
+
<tr>
|
|
40
|
+
<th class="vf-list__table-header vf-list__table-header-text">{% translate 'Seed' %}</th>
|
|
41
|
+
<td>{{ process.seed }}</td>
|
|
42
|
+
</tr>
|
|
43
|
+
{% endif %}
|
|
44
|
+
{% if process.artifact %}
|
|
45
|
+
<tr>
|
|
46
|
+
<th class="vf-list__table-header vf-list__table-header-text">{% translate 'Artifact' %}</th>
|
|
47
|
+
<td>{{ process.artifact }}</td>
|
|
48
|
+
</tr>
|
|
49
|
+
{% endif %}
|
|
30
50
|
</tbody>
|
|
31
51
|
</table>
|
|
32
52
|
</section>
|
{django-viewflow-2.2.3 → django_viewflow-2.2.4}/viewflow/templates/viewflow/workflow/task_data.html
RENAMED
|
@@ -20,6 +20,28 @@
|
|
|
20
20
|
</div>
|
|
21
21
|
{% endif %}
|
|
22
22
|
|
|
23
|
+
{% if seed_data %}
|
|
24
|
+
<div class="mdc-card vf-card">
|
|
25
|
+
<section class="vf-card__header">
|
|
26
|
+
<h1 class="vf-card__title">{{ task.seed }}</h1>
|
|
27
|
+
</section>
|
|
28
|
+
<section class="vf-card__body">
|
|
29
|
+
<table class="vf-list__table">
|
|
30
|
+
<tbody>
|
|
31
|
+
{% for field, field_name, value in seed_data %}
|
|
32
|
+
{% if field.name != 'process' and field.name != 'task' %}
|
|
33
|
+
<tr>
|
|
34
|
+
<th class="vf-list__table-header vf-list__table-header-text">{{ field_name }}</th>
|
|
35
|
+
<td>{{ value }}</td>
|
|
36
|
+
</tr>
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% endfor %}
|
|
39
|
+
</tbody>
|
|
40
|
+
</table>
|
|
41
|
+
</section>
|
|
42
|
+
</div>
|
|
43
|
+
{% endif %}
|
|
44
|
+
|
|
23
45
|
|
|
24
46
|
{% if data %}
|
|
25
47
|
{{ data }}
|
|
@@ -37,6 +37,16 @@
|
|
|
37
37
|
{% endfor %}
|
|
38
38
|
</div>
|
|
39
39
|
</div>
|
|
40
|
+
{% with subprocesses=task.subprocesses.all %}{% if subprocesses %}
|
|
41
|
+
<div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-12">
|
|
42
|
+
<h4 class="mdc-typography mdc-typography--headline5" style="margin-bottom:10px">{% trans "Subprocess" %}</h4>
|
|
43
|
+
<div>
|
|
44
|
+
{% for subprocess in subprocesses %}
|
|
45
|
+
<a class="mdc-typography mdc-typography--subtitle1" href="{% reverse subprocess.flow_class 'process_detail' subprocess.pk %}">{{ subprocess }}</a>{% if not forloop.last %}, {% endif %}
|
|
46
|
+
{% endfor %}
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
{% endif %}{% endwith %}
|
|
40
50
|
{% endblock %}
|
|
41
51
|
|
|
42
52
|
{% block task_actions %}
|
|
@@ -51,6 +51,8 @@ def include_task_data(context, task):
|
|
|
51
51
|
try:
|
|
52
52
|
if task.artifact_object_id:
|
|
53
53
|
context["artifact_data"] = get_object_data(task.artifact)
|
|
54
|
+
if task.seed_object_id:
|
|
55
|
+
context["seed_data"] = get_object_data(task.seed)
|
|
54
56
|
context["data"] = task.data
|
|
55
57
|
context["task"] = task
|
|
56
58
|
return template.render(
|
|
@@ -267,7 +267,12 @@ class Activation:
|
|
|
267
267
|
"""
|
|
268
268
|
flow_class = self.flow_class
|
|
269
269
|
task = flow_class.task_class(
|
|
270
|
-
process=self.process,
|
|
270
|
+
process=self.process,
|
|
271
|
+
flow_task=self.flow_task,
|
|
272
|
+
token=self.task.token,
|
|
273
|
+
seed=self.task.seed,
|
|
274
|
+
artifact=self.task.artifact,
|
|
275
|
+
data=self.task.data,
|
|
271
276
|
)
|
|
272
277
|
task.save()
|
|
273
278
|
|
|
@@ -47,7 +47,18 @@ class Shape(object):
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class Cell(object):
|
|
50
|
-
__slots__ = [
|
|
50
|
+
__slots__ = [
|
|
51
|
+
"col",
|
|
52
|
+
"row",
|
|
53
|
+
"x",
|
|
54
|
+
"y",
|
|
55
|
+
"width",
|
|
56
|
+
"height",
|
|
57
|
+
"node",
|
|
58
|
+
"shape",
|
|
59
|
+
"title",
|
|
60
|
+
"status",
|
|
61
|
+
]
|
|
51
62
|
|
|
52
63
|
def __init__(
|
|
53
64
|
self,
|
|
@@ -59,6 +70,7 @@ class Cell(object):
|
|
|
59
70
|
width=-1,
|
|
60
71
|
height=-1,
|
|
61
72
|
shape=None,
|
|
73
|
+
title=None,
|
|
62
74
|
status=None,
|
|
63
75
|
):
|
|
64
76
|
self.node = node
|
|
@@ -69,6 +81,7 @@ class Cell(object):
|
|
|
69
81
|
self.width = width
|
|
70
82
|
self.height = height
|
|
71
83
|
self.shape = shape if shape is not None else Shape()
|
|
84
|
+
self.title = title
|
|
72
85
|
self.status = status
|
|
73
86
|
|
|
74
87
|
def incoming(self):
|
|
@@ -536,11 +549,13 @@ def calc_text(grid):
|
|
|
536
549
|
shape = getattr(cell.node, "shape", DEFAULT_SHAPE)
|
|
537
550
|
text_align = shape.get("text-align")
|
|
538
551
|
font_size = shape.get("font-size", 12)
|
|
552
|
+
|
|
553
|
+
if cell.node.task_title:
|
|
554
|
+
title = force_str(cell.node.task_title)
|
|
555
|
+
else:
|
|
556
|
+
title = " ".join(cell.node.name.capitalize().split("_"))
|
|
557
|
+
|
|
539
558
|
if text_align == "middle":
|
|
540
|
-
if cell.node.task_title:
|
|
541
|
-
title = force_str(cell.node.task_title)
|
|
542
|
-
else:
|
|
543
|
-
title = " ".join(cell.node.name.capitalize().split("_"))
|
|
544
559
|
segments = wrap(title, 20)
|
|
545
560
|
block_height = max(len(segments) - 1, 0) * font_size * 1.2
|
|
546
561
|
|
|
@@ -557,6 +572,8 @@ def calc_text(grid):
|
|
|
557
572
|
y_start + (n * font_size * 1.2),
|
|
558
573
|
)
|
|
559
574
|
)
|
|
575
|
+
else:
|
|
576
|
+
cell.title = title
|
|
560
577
|
|
|
561
578
|
|
|
562
579
|
def calc_cell_status(flow_class, grid, process_pk):
|
|
@@ -58,7 +58,6 @@ class UnassignTaskView(
|
|
|
58
58
|
|
|
59
59
|
class CancelTaskView(
|
|
60
60
|
mixins.SuccessMessageMixin,
|
|
61
|
-
mixins.TaskSuccessUrlMixin,
|
|
62
61
|
mixins.TaskViewTemplateNames,
|
|
63
62
|
generic.FormView,
|
|
64
63
|
):
|
|
@@ -77,10 +76,16 @@ class CancelTaskView(
|
|
|
77
76
|
self.request.activation.cancel()
|
|
78
77
|
return super().form_valid(*args, **kwargs)
|
|
79
78
|
|
|
79
|
+
def get_success_url(self):
|
|
80
|
+
"""Continue on task or redirect back to task list."""
|
|
81
|
+
activation = self.request.activation
|
|
82
|
+
return activation.flow_task.reverse(
|
|
83
|
+
"detail", args=[activation.process.pk, activation.task.pk]
|
|
84
|
+
)
|
|
85
|
+
|
|
80
86
|
|
|
81
87
|
class UndoTaskView(
|
|
82
88
|
mixins.SuccessMessageMixin,
|
|
83
|
-
mixins.TaskSuccessUrlMixin,
|
|
84
89
|
mixins.TaskViewTemplateNames,
|
|
85
90
|
generic.FormView,
|
|
86
91
|
):
|
|
@@ -99,10 +104,16 @@ class UndoTaskView(
|
|
|
99
104
|
self.request.activation.undo()
|
|
100
105
|
return super().form_valid(*args, **kwargs)
|
|
101
106
|
|
|
107
|
+
def get_success_url(self):
|
|
108
|
+
"""Continue on task or redirect back to task list."""
|
|
109
|
+
activation = self.request.activation
|
|
110
|
+
return activation.flow_task.reverse(
|
|
111
|
+
"detail", args=[activation.process.pk, activation.task.pk]
|
|
112
|
+
)
|
|
113
|
+
|
|
102
114
|
|
|
103
115
|
class ReviveTaskView(
|
|
104
116
|
mixins.SuccessMessageMixin,
|
|
105
|
-
mixins.TaskSuccessUrlMixin,
|
|
106
117
|
mixins.TaskViewTemplateNames,
|
|
107
118
|
generic.FormView,
|
|
108
119
|
):
|
|
@@ -25,6 +25,10 @@ class CreateProcessView(
|
|
|
25
25
|
def form_valid(self, form):
|
|
26
26
|
"""If the form is valid, save the associated model and finish the task."""
|
|
27
27
|
self.object = form.save()
|
|
28
|
+
if "seed" in form.cleaned_data:
|
|
29
|
+
self.object.seed = form.cleaned_data["seed"]
|
|
30
|
+
if "artifact" in form.cleaned_data:
|
|
31
|
+
self.object.artifact = form.cleaned_data["artifact"]
|
|
28
32
|
self.request.activation.execute()
|
|
29
33
|
return HttpResponseRedirect(self.get_success_url())
|
|
30
34
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from django.core.exceptions import PermissionDenied
|
|
2
2
|
from django.contrib.auth.decorators import login_required
|
|
3
|
+
from django.db.models import Q
|
|
3
4
|
from django.utils.decorators import method_decorator
|
|
4
5
|
from django.utils.safestring import mark_safe
|
|
5
6
|
from django.utils.translation import gettext_lazy as _
|
|
@@ -7,7 +8,7 @@ from django.views import generic
|
|
|
7
8
|
|
|
8
9
|
from viewflow.views import ListModelView
|
|
9
10
|
from viewflow.utils import viewprop, has_object_perm
|
|
10
|
-
from viewflow.workflow import chart
|
|
11
|
+
from viewflow.workflow import chart, STATUS
|
|
11
12
|
from viewflow.workflow.fields import get_task_ref
|
|
12
13
|
from . import mixins, filters
|
|
13
14
|
|
|
@@ -56,7 +57,8 @@ class DashboardView(
|
|
|
56
57
|
"tasks": self.flow_class.task_class._default_manager.filter_available(
|
|
57
58
|
[self.flow_class], self.request.user
|
|
58
59
|
).filter(
|
|
59
|
-
finished__isnull=True
|
|
60
|
+
Q(finished__isnull=True) | Q(status=STATUS.ERROR),
|
|
61
|
+
flow_task=node,
|
|
60
62
|
)[
|
|
61
63
|
: self.MAX_ROWS
|
|
62
64
|
],
|
|
@@ -24,6 +24,10 @@ class UpdateProcessView(
|
|
|
24
24
|
def form_valid(self, form):
|
|
25
25
|
"""If the form is valid, save the associated model and finish the task."""
|
|
26
26
|
self.object = form.save()
|
|
27
|
+
if "seed" in form.cleaned_data:
|
|
28
|
+
self.object.seed = form.cleaned_data["seed"]
|
|
29
|
+
if "artifact" in form.cleaned_data:
|
|
30
|
+
self.object.artifact = form.cleaned_data["artifact"]
|
|
27
31
|
self.request.activation.execute()
|
|
28
32
|
return HttpResponseRedirect(self.get_success_url())
|
|
29
33
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated by Django 5.0.1 on 2024-07-11 05:14
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("viewflow", "0013_process_seed_content_type_process_seed_object_id_and_more"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name="process",
|
|
16
|
+
name="parent_task",
|
|
17
|
+
field=models.ForeignKey(
|
|
18
|
+
blank=True,
|
|
19
|
+
null=True,
|
|
20
|
+
on_delete=django.db.models.deletion.CASCADE,
|
|
21
|
+
related_name="subprocesses",
|
|
22
|
+
to="viewflow.task",
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
]
|
|
@@ -55,9 +55,13 @@ class AbstractJobActivation(mixins.NextNodeActivationMixin, Activation):
|
|
|
55
55
|
tb = exception.__traceback__
|
|
56
56
|
while tb.tb_next:
|
|
57
57
|
tb = tb.tb_next
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
serialized_locals = json.dumps(
|
|
61
|
+
tb.tb_frame.f_locals, default=lambda obj: str(obj)
|
|
62
|
+
)
|
|
63
|
+
except Exception as ex:
|
|
64
|
+
serialized_locals = json.dumps({"_serialization_exception": str(ex)})
|
|
61
65
|
|
|
62
66
|
self.task.data["_exception"] = {
|
|
63
67
|
"title": str(exception),
|
|
@@ -170,6 +170,8 @@ class StartHandle(mixins.NextNodeMixin, Node):
|
|
|
170
170
|
"height": 50,
|
|
171
171
|
"svg": """
|
|
172
172
|
<circle class="event" cx="25" cy="25" r="25"/>
|
|
173
|
+
<rect xmlns="http://www.w3.org/2000/svg" x="7.5" y="15" width="35" height="20" fill="transparent" stroke="rgb(0, 0, 0)"/>
|
|
174
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M 7.5 15 L 25 25 L 42.5 15" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10"/>
|
|
173
175
|
""",
|
|
174
176
|
}
|
|
175
177
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django-viewflow-2.2.3 → django_viewflow-2.2.4}/django_viewflow.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|