django-viewflow 2.2.6__tar.gz → 2.2.8__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.
Files changed (326) hide show
  1. django-viewflow-2.2.8/PKG-INFO +339 -0
  2. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/README.md +41 -0
  3. django-viewflow-2.2.8/django_viewflow.egg-info/PKG-INFO +339 -0
  4. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/setup.py +3 -1
  5. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/base.py +6 -4
  6. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/typing.py +1 -1
  7. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/viewset.py +2 -0
  8. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/jsonstore.py +8 -1
  9. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/viewflow.min.js +24 -24
  10. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/viewflow.min.js.map +1 -1
  11. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/urls/base.py +7 -8
  12. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/urls/sites.py +2 -2
  13. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/utils.py +1 -0
  14. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/actions.py +1 -1
  15. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/base.py +3 -2
  16. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/activation.py +6 -1
  17. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/fields.py +7 -1
  18. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/mixins.py +8 -6
  19. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/nodes.py +28 -1
  20. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/actions.py +1 -1
  21. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/models.py +6 -0
  22. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/if_gate.py +12 -1
  23. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/join.py +4 -2
  24. django_viewflow-2.2.6/PKG-INFO +0 -29
  25. django_viewflow-2.2.6/django_viewflow.egg-info/PKG-INFO +0 -29
  26. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/LICENSE +0 -0
  27. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/LICENSE_EXCEPTION +0 -0
  28. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/MANIFEST.in +0 -0
  29. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/django_viewflow.egg-info/SOURCES.txt +0 -0
  30. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/django_viewflow.egg-info/dependency_links.txt +0 -0
  31. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/django_viewflow.egg-info/not-zip-safe +0 -0
  32. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/django_viewflow.egg-info/requires.txt +0 -0
  33. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/django_viewflow.egg-info/top_level.txt +0 -0
  34. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/setup.cfg +0 -0
  35. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_middleware.py +0 -0
  36. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_templates.py +0 -0
  37. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_templatetags__viewflow.py +0 -0
  38. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_this_object.py +0 -0
  39. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_urls__base.py +0 -0
  40. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/tests/test_utils__package.py +0 -0
  41. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/__init__.py +0 -0
  42. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/apps.py +0 -0
  43. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/conf.py +0 -0
  44. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/__init__.py +0 -0
  45. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/admin/__init__.py +0 -0
  46. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/admin/apps.py +0 -0
  47. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/auth.py +0 -0
  48. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/plotly/__init__.py +0 -0
  49. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/plotly/material.py +0 -0
  50. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/plotly/views.py +0 -0
  51. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/contrib/plotly/viewset.py +0 -0
  52. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fields.py +0 -0
  53. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/forms/__init__.py +0 -0
  54. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/forms/renderers.py +0 -0
  55. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/__init__.py +0 -0
  56. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/admin.py +0 -0
  57. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/chart.py +0 -0
  58. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/fsm/views.py +0 -0
  59. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
  60. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
  61. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
  62. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
  63. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
  64. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
  65. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
  66. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
  67. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
  68. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
  69. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
  70. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
  71. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
  72. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
  73. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
  74. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
  75. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
  76. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
  77. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
  78. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
  79. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  80. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
  81. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/management/__init__.py +0 -0
  82. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/management/commands/__init__.py +0 -0
  83. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/management/commands/flowexport.py +0 -0
  84. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/middleware.py +0 -0
  85. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/css/perfect-scrollbar.css +0 -0
  86. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/css/trix.css +0 -0
  87. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/css/viewflow.min.css +0 -0
  88. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/css/vis-network.min.css +0 -0
  89. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
  90. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
  91. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
  92. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
  93. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
  94. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
  95. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
  96. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
  97. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
  98. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
  99. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
  100. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
  101. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
  102. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
  103. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
  104. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
  105. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
  106. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
  107. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
  108. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
  109. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
  110. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
  111. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
  112. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
  113. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
  114. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
  115. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
  116. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
  117. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
  118. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
  119. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
  120. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
  121. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
  122. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
  123. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
  124. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +0 -0
  125. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
  126. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
  127. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
  128. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
  129. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
  130. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +0 -0
  131. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -0
  132. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/img/favicon.png +0 -0
  133. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/img/user.png +0 -0
  134. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
  135. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
  136. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
  137. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
  138. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
  139. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
  140. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
  141. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
  142. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
  143. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
  144. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
  145. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
  146. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
  147. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
  148. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
  149. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
  150. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
  151. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
  152. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
  153. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
  154. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
  155. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
  156. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
  157. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
  158. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
  159. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
  160. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
  161. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
  162. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
  163. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
  164. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
  165. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
  166. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
  167. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
  168. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
  169. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
  170. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
  171. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
  172. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
  173. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
  174. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
  175. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
  176. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
  177. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
  178. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
  179. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -0
  180. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -0
  181. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/smartcrop.js +0 -0
  182. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/trix.js +0 -0
  183. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/turbo.es2017-umd.js +0 -0
  184. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/vis-network.min.js +0 -0
  185. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/static/viewflow/js/vis-network.min.js.map +0 -0
  186. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/400.html +0 -0
  187. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/403.html +0 -0
  188. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/404.html +0 -0
  189. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/500.html +0 -0
  190. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/admin/fsm_change_form.html +0 -0
  191. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
  192. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/admin/fsm_change_list.html +0 -0
  193. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/admin/fsm_transition_form.html +0 -0
  194. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
  195. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/logged_out.html +0 -0
  196. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/login.html +0 -0
  197. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_change_done.html +0 -0
  198. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_change_form.html +0 -0
  199. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_reset_complete.html +0 -0
  200. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_reset_confirm.html +0 -0
  201. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_reset_done.html +0 -0
  202. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/password_reset_form.html +0 -0
  203. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/profile.html +0 -0
  204. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/registration/provider_list.html +0 -0
  205. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/base.html +0 -0
  206. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
  207. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/base_page.html +0 -0
  208. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
  209. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
  210. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
  211. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
  212. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
  213. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
  214. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
  215. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
  216. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
  217. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
  218. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
  219. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
  220. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
  221. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
  222. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
  223. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
  224. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/delete_action.html +0 -0
  225. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/detail.html +0 -0
  226. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/form.html +0 -0
  227. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/list.html +0 -0
  228. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/views/transition.html +0 -0
  229. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/assign.html +0 -0
  230. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
  231. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
  232. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
  233. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
  234. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
  235. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
  236. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
  237. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
  238. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
  239. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
  240. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
  241. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/start.html +0 -0
  242. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task.html +0 -0
  243. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
  244. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
  245. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
  246. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
  247. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_detail.html +0 -0
  248. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
  249. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
  250. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
  251. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
  252. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
  253. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
  254. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
  255. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
  256. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templatetags/__init__.py +0 -0
  257. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templatetags/fsm.py +0 -0
  258. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templatetags/viewflow.py +0 -0
  259. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/templatetags/workflow.py +0 -0
  260. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/this_object.py +0 -0
  261. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/urls/__init__.py +0 -0
  262. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/urls/model.py +0 -0
  263. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/__init__.py +0 -0
  264. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/create.py +0 -0
  265. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/delete.py +0 -0
  266. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/detail.py +0 -0
  267. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/filters.py +0 -0
  268. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/list.py +0 -0
  269. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/search.py +0 -0
  270. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/views/update.py +0 -0
  271. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/__init__.py +0 -0
  272. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/admin.py +0 -0
  273. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/apps.py +0 -0
  274. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/base.py +0 -0
  275. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/chart.py +0 -0
  276. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/context.py +0 -0
  277. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/exceptions.py +0 -0
  278. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/__init__.py +0 -0
  279. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/utils.py +0 -0
  280. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/__init__.py +0 -0
  281. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/chart.py +0 -0
  282. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/create.py +0 -0
  283. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/dashboard.py +0 -0
  284. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/detail.py +0 -0
  285. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/filters.py +0 -0
  286. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/list.py +0 -0
  287. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/mixins.py +0 -0
  288. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/views/update.py +0 -0
  289. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/flow/viewset.py +0 -0
  290. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/lock.py +0 -0
  291. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/managers.py +0 -0
  292. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0001_initial.py +0 -0
  293. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
  294. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
  295. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
  296. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
  297. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0005_merge.py +0 -0
  298. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
  299. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0006_i18n.py +0 -0
  300. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0006_merge.py +0 -0
  301. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
  302. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
  303. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
  304. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0008_merge.py +0 -0
  305. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0009_merge.py +0 -0
  306. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
  307. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
  308. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
  309. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py +0 -0
  310. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/0014_alter_process_parent_task.py +0 -0
  311. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/migrations/__init__.py +0 -0
  312. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/__init__.py +0 -0
  313. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/end.py +0 -0
  314. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/func.py +0 -0
  315. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/handle.py +0 -0
  316. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/job.py +0 -0
  317. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/mixins.py +0 -0
  318. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/obsolete.py +0 -0
  319. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/split.py +0 -0
  320. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/start.py +0 -0
  321. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/switch.py +0 -0
  322. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/nodes/view.py +0 -0
  323. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/signals.py +0 -0
  324. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/status.py +0 -0
  325. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/token.py +0 -0
  326. {django_viewflow-2.2.6 → django-viewflow-2.2.8}/viewflow/workflow/utils.py +0 -0
@@ -0,0 +1,339 @@
1
+ Metadata-Version: 2.1
2
+ Name: django-viewflow
3
+ Version: 2.2.8
4
+ Summary: Reusable library to build business applications fast
5
+ Author: Mikhail Podgurskiy
6
+ Author-email: kmmbvnr@gmail.com
7
+ License: AGPL
8
+ Keywords: django,admin,workflow,fsm,bpm,bpmn
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Natural Language :: English
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Framework :: Django
14
+ Classifier: Framework :: Django :: 4.2
15
+ Classifier: Framework :: Django :: 5.0
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+
30
+ # Viewflow
31
+
32
+ **The low-code for developers with yesterday's deadline**
33
+
34
+ [![build]][build] [![coverage]][coverage] [![pypi-version]][pypi] [![py-versions]][pypi]
35
+
36
+
37
+ Viewflow is a low-code, reusable component library for creating comprehensive business applications with ease. Built on top of Django, Viewflow simplifies development by providing pre-built components for user management, workflows, and reporting, while still offering flexibility to customize and integrate with existing systems.
38
+
39
+ With Viewflow, you can create full-featured business applications in just a few lines of code using its reusable component library. It's shipped as a single package with batteries included, and each part of Viewflow can be used independently of the others, but they all work well together.
40
+
41
+ GPT assisted with Viewflow documentation: [Viewflow Pair Programming Buddy][gpt]
42
+
43
+
44
+ Viewflow comes in two flavors:
45
+ - **Viewflow Core:** A lightweight, open-source library with only non-opinionated core classes that allows you to build your custom solution on top.
46
+ - **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.
47
+
48
+ <img src="assets/ShipmentProcess.png" alt="drawing" width="600"/>
49
+
50
+ ## Features
51
+
52
+ - Modern, responsive user interface with an SPA-style look and feel
53
+ - Reusable workflow library for quick implementation of BPMN workflows
54
+ - Built-in customizable CRUD for managing complex forms and data
55
+ - Integrated reporting dashboard
56
+ - Small and concise API
57
+
58
+
59
+ ## Installation
60
+
61
+ Viewflow works with Python 3.8 or greater and Django 4.0+
62
+
63
+ Viewflow:
64
+
65
+ pip install django-viewflow
66
+
67
+ Viewflow-PRO:
68
+
69
+ pip install django-viewflow-pro --extra-index-url https://pypi.viewflow.io/<licence_id>/simple/
70
+
71
+ Add 'viewflow' and, in case you need workflow capabilities 'viewflow.workflow' to the INSTALLED_APPS settings.py
72
+
73
+ ```python
74
+ INSTALLED_APPS = [
75
+ ....
76
+ 'viewflow',
77
+ 'viewflow.workflow',
78
+ ]
79
+ ```
80
+
81
+
82
+ ## Quick start
83
+
84
+ Here's an example of how to create a simple pizza ordering workflow using Viewflow:
85
+
86
+ 1. Create a model to store process data
87
+
88
+ Before creating the workflow, you'll need to define a model to store the process
89
+ data. Viewflow provides a Process model as the base model for your process
90
+ instances. You can add your own fields to the model using jsonstore fields to
91
+ avoid model inheritance and additional joins:
92
+
93
+ ```python
94
+
95
+ from viewflow import jsonstore
96
+ from viewflow.workflow.models import Process
97
+
98
+ class PizzaOrder(Process):
99
+ customer_name = jsonstore.CharField(max_length=250)
100
+ address = jsonstore.TextField()
101
+ toppings = jsonstore.TextField()
102
+ tips_received = jsonstore.IntegerField(default=0)
103
+ baking_time = jsonstore.IntegerField(default=10)
104
+
105
+ class Meta:
106
+ proxy = True
107
+ ```
108
+
109
+ 2. Create a new flow definition file flows.py
110
+
111
+ Next, create a new flow definition file *flows.py* and define your workflow. In
112
+ this example, we'll create a PizzaFlow class that inherits from flow.Flow.
113
+ We'll define three steps in the workflow: start, bake, and deliver. We'll
114
+ use CreateProcessView and UpdateProcessView to create and update the process
115
+ data from PizzaOrder:
116
+
117
+ ```python
118
+
119
+ from viewflow import this
120
+ from viewflow.workflow import flow
121
+ from viewflow.workflow.flow.views import CreateProcessView, UpdateProcessView
122
+ from .models import PizzaOrder
123
+
124
+ class PizzaFlow(flow.Flow):
125
+ process_class = PizzaOrder
126
+
127
+ start = flow.Start(
128
+ CreateProcessView.as_view(
129
+ fields=["customer_name", "address", "toppings"]
130
+ )
131
+ ).Next(this.bake)
132
+
133
+ bake = flow.View(
134
+ UpdateProcessView.as_view(fields=["baking_time"])
135
+ ).Next(this.deliver)
136
+
137
+ deliver = flow.View(
138
+ UpdateProcessView.as_view(fields=["tips_received"])
139
+ ).Next(this.end)
140
+
141
+ end = flow.End()
142
+ ```
143
+
144
+ 3. Add the flow to your URL configuration:
145
+
146
+ Finally, add the PizzaFlow to your URL configuration. You can use the Site and
147
+ FlowAppViewset classes to register your workflow with the pre-built frontend.
148
+
149
+ ```python
150
+
151
+ from django.urls import path
152
+ from viewflow.contrib.auth import AuthViewset
153
+ from viewflow.urls import Application, Site
154
+ from viewflow.workflow.flow import FlowAppViewset
155
+ from my_pizza.flows import PizzaFlow
156
+
157
+ site = Site(
158
+ title="Pizza Flow Demo",
159
+ viewsets=[
160
+ FlowAppViewset(PizzaFlow, icon="local_pizza"),
161
+ ]
162
+ )
163
+
164
+ urlpatterns = [
165
+ path("accounts/", AuthViewset().urls),
166
+ path("", site.urls),
167
+ ]
168
+
169
+ ```
170
+
171
+ 4. Make and run migrations and access the workflow through the pre-built frontend.
172
+
173
+ Make and run migrations to create the necessary database tables, then start your Django
174
+ server and access the workflow through the pre-built frontend. You should be
175
+ able to create and track pizza orders with the workflow.
176
+
177
+ Go to the https://docs.viewflow.io/workflow/writing.html for the next steps
178
+
179
+ ## Documentation
180
+
181
+ Viewflow's documentation for the latest version is available at
182
+ http://docs.viewflow.io/
183
+
184
+ Documentarian for Viewflow 1.xx series available at http://v1-docs.viewflow.io
185
+
186
+
187
+ ## Demo
188
+
189
+ http://demo.viewflow.io/
190
+
191
+ ## Cookbook
192
+
193
+ For sample applications and code snippets, check out the Viewflow PRO cookbook at
194
+
195
+ https://github.com/viewflow/cookbook
196
+
197
+
198
+ ## License
199
+
200
+ Viewflow is an Open Source project licensed under the terms of the AGPL license - [The GNU Affero General Public License v3.0](http://www.gnu.org/licenses/agpl-3.0.html) with the Additional Permissions
201
+ described in [LICENSE_EXCEPTION](./LICENSE_EXCEPTION)
202
+
203
+ The AGPL license with Additional Permissions is a free software license that
204
+ allows commercial use and distribution of the software. It is similar to the GNU
205
+ GCC Runtime Library license, and it includes additional permissions that make it
206
+ more friendly for commercial development.
207
+
208
+ You can read more about AGPL and its compatibility with commercial use at the
209
+ [AGPL FAQ](http://www.affero.org/oagf.html)
210
+
211
+ If you use Linux already, this package license likely won't bring anything new to your stack.
212
+
213
+ Viewflow PRO has a commercial-friendly license allowing private forks and
214
+ modifications of Viewflow. You can find the commercial license terms in
215
+ [COMM-LICENSE](./COMM-LICENSE).
216
+
217
+ ## Changelog
218
+
219
+ ### 2.2.8 2024-10-04
220
+
221
+ - Prevent exceptions from being raised by Process/Task models when a flow class
222
+ is deleted but still referenced in the database.
223
+ - Fix serialization issue with jsonstore.DecimalField.
224
+ - Add missing 'index' view for celery.Task node.
225
+ - Enable recovery of flow.Subprocess and flow.NSubprocess nodes from error state.
226
+ - Correct invalid typing for FSM conditions.
227
+ - Allow setting permission=None in the FSM @transition decorator to explicitly bypass permission checks.
228
+ - Add support for MultiValueField and django-money fields form rendering
229
+
230
+
231
+ ### 2.2.7 2024-08-16
232
+
233
+ - Added compatibility fix for Python 3.8.
234
+ - Extend documentation with data management explanation - https://docs.viewflow.io/workflow/data_flow.html
235
+ - Expanded documentation to cover permission management - https://docs.viewflow.io/workflow/permissions.html
236
+ - Introduced an experimental JSONEditorWidget.
237
+ - Fixed issue with saving the state of revived tasks.
238
+ - Enabled the option to cancel If tasks.
239
+ - Updated default FSM state change in FlowViewsMixin to now use transaction.atomic.
240
+ - Added support for using DependentModelSelect in formsets.
241
+ - Enabled AjaxModelSelect to function as a dependency for DependentModelSelect
242
+ - Corrected typo in the deletion success message.
243
+ - Test under django 5.1
244
+
245
+ ### 2.2.6 2024-08-04
246
+
247
+ - Resolved the flow.If condition's this reference during class construction.
248
+ - Improved error handling when a Celery task finishes.
249
+ - Fixed an issue where errors occurring in a task after a successful celery.Job
250
+ task incorrectly prevented the job task from being marked as completed, with
251
+ the errored task correctly put into an error state.
252
+ - Redirect to the next process task now will take into account tasks in the ERROR state
253
+ - Add ability to revive flow.Function and flow.SplitFirst
254
+ - Fixed an error that occurred when a deleted process.artifact was referenced in
255
+ the process field data listing within templates.
256
+ - Allow to cancel Subprocess tasks
257
+ - Allow to cancel Function tasks
258
+ - Allow custom task models inherited from AbstactTask have no .seed and .data fields
259
+
260
+ ### 2.2.5 2024-07-17
261
+
262
+ - The 'pattern' widget attribute is now passed to the underlying form input.
263
+ - Fixed issue with flow image reload.
264
+ - Fixed dashboard max height on pages with long sidebars.
265
+ - Added .get_success_url(request) shortcut method to StartViewActivation and
266
+ ViewActivation for convenient use in function-based views.
267
+ - Fixed duplicated task_finished signal on flow.View completion.
268
+ - Enabled callable defaults on jsonstore fields.
269
+ - Improved SVG and BPMN export shapes for SplitFirst and Timer Tasks.
270
+ - Created cookbook demo for common workflow patterns
271
+
272
+
273
+ ### 2.2.4 2024-07-12
274
+
275
+ - Clone data, seed, and artifacts from canceled tasks to revived tasks.
276
+ - Enhance error handling for celery.Job.
277
+ - Improve the process cancellation template.
278
+ - Redirect to the task detail page after canceling or undoing actions, instead
279
+ of redirecting to the process detail page.
280
+ - Added links to parent subprocess and parent task on the subprocess process and
281
+ task details pages.
282
+ - Updated the Process.parent_task field to use related_name='subprocess',
283
+ allowing access to subprocesses via task.subprocess
284
+ - Enhanced CreateProcessView and UpdateProcessView to set process_seed and
285
+ artifact_generic_foreign_key fields based on form.cleaned_data, as Django
286
+ model forms do not handle this automatically.
287
+ - Added tasks with an ERROR status to the process dashboard for better visibility and tracking.
288
+ - Added tooltip hover titles to nodes without text labels in the SVG workflow graph.
289
+ - Marked StartHandler nodes as BPMN Start Message events on the SVG graph.
290
+ - Fixed rendering of hidden field errors in forms.
291
+
292
+
293
+ ### 2.2.3 2024-07-09
294
+
295
+ - Fixed issue with Split/Join operations when an immediate split to join
296
+ connection occurs.
297
+ - Improved redirect functionality for "Execute and Continue." Now redirects to
298
+ the process details if the process has finished.
299
+ - Enabled the Undo action for End() nodes.
300
+
301
+
302
+ ### 2.2.2 2024-07-05
303
+
304
+ - Introduced new parameters for .If().Then(.., task_data=, task_seed) and
305
+ .Else(...)
306
+ - Include {{ form.media }} into default workflow/task.html template
307
+
308
+
309
+ ### 2.2.1 2024-07-03
310
+
311
+ - Introduced a new parameter for .Next(..., task_seed=) that allows the
312
+ instantiation of new tasks with additional initialized .seed generic foreign key
313
+ - Introduced a new parameter for .Split(..., task_seed_source=) same as task_data_source,
314
+ prodices outgoing tasks with initializaed .seed value
315
+ - Introduced a new parameter for flow.Subprocess(process_data=, process_seed=,
316
+ task_data=, task_seed=) allows to provide data nad seed for newly created
317
+ process and/or start task
318
+
319
+ ### 2.2.0 2024-06-28
320
+
321
+ - Introduced a new parameter for .Next(..., task_data=) that allows the
322
+ instantiation of new tasks with additional initialized .data, enabling data to
323
+ be passed from task to task.
324
+ - Added process.seed and task.seed generic foreign keys to the default workflow
325
+ models. Along with process.artifact and task.artifact, these additions enable
326
+ tracking of business process results from start to finish.
327
+ - Renamed Split.Next(data_source=) to task_data_source=.
328
+
329
+
330
+ [build]: https://img.shields.io/github/actions/workflow/status/viewflow/viewflow/django.yml?branch=main
331
+ [coverage]: https://img.shields.io/coveralls/github/viewflow/viewflow/v2
332
+ [travis-svg]: https://travis-ci.org/viewflow/viewflow.svg
333
+ [travis]: https://travis-ci.org/viewflow/viewflow
334
+ [pypi]: https://pypi.org/project/django-viewflow/
335
+ [pypi-version]: https://img.shields.io/pypi/v/django-viewflow.svg
336
+ [py-versions]: https://img.shields.io/pypi/pyversions/django-viewflow.svg
337
+ [requirements-svg]: https://requires.io/github/viewflow/viewflow/requirements.svg?branch=v2
338
+ [requirements]: https://requires.io/github/viewflow/viewflow/requirements/?branch=v2
339
+ [gpt]: https://chatgpt.com/g/g-8UHAnOpE3-viewflow-pair-programming
@@ -187,6 +187,47 @@ modifications of Viewflow. You can find the commercial license terms in
187
187
 
188
188
  ## Changelog
189
189
 
190
+ ### 2.2.8 2024-10-04
191
+
192
+ - Prevent exceptions from being raised by Process/Task models when a flow class
193
+ is deleted but still referenced in the database.
194
+ - Fix serialization issue with jsonstore.DecimalField.
195
+ - Add missing 'index' view for celery.Task node.
196
+ - Enable recovery of flow.Subprocess and flow.NSubprocess nodes from error state.
197
+ - Correct invalid typing for FSM conditions.
198
+ - Allow setting permission=None in the FSM @transition decorator to explicitly bypass permission checks.
199
+ - Add support for MultiValueField and django-money fields form rendering
200
+
201
+
202
+ ### 2.2.7 2024-08-16
203
+
204
+ - Added compatibility fix for Python 3.8.
205
+ - Extend documentation with data management explanation - https://docs.viewflow.io/workflow/data_flow.html
206
+ - Expanded documentation to cover permission management - https://docs.viewflow.io/workflow/permissions.html
207
+ - Introduced an experimental JSONEditorWidget.
208
+ - Fixed issue with saving the state of revived tasks.
209
+ - Enabled the option to cancel If tasks.
210
+ - Updated default FSM state change in FlowViewsMixin to now use transaction.atomic.
211
+ - Added support for using DependentModelSelect in formsets.
212
+ - Enabled AjaxModelSelect to function as a dependency for DependentModelSelect
213
+ - Corrected typo in the deletion success message.
214
+ - Test under django 5.1
215
+
216
+ ### 2.2.6 2024-08-04
217
+
218
+ - Resolved the flow.If condition's this reference during class construction.
219
+ - Improved error handling when a Celery task finishes.
220
+ - Fixed an issue where errors occurring in a task after a successful celery.Job
221
+ task incorrectly prevented the job task from being marked as completed, with
222
+ the errored task correctly put into an error state.
223
+ - Redirect to the next process task now will take into account tasks in the ERROR state
224
+ - Add ability to revive flow.Function and flow.SplitFirst
225
+ - Fixed an error that occurred when a deleted process.artifact was referenced in
226
+ the process field data listing within templates.
227
+ - Allow to cancel Subprocess tasks
228
+ - Allow to cancel Function tasks
229
+ - Allow custom task models inherited from AbstactTask have no .seed and .data fields
230
+
190
231
  ### 2.2.5 2024-07-17
191
232
 
192
233
  - The 'pattern' widget attribute is now passed to the underlying form input.