django-viewflow 2.1.1__tar.gz → 2.2.3__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.1.1 → django-viewflow-2.2.3}/PKG-INFO +1 -3
  2. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/README.md +36 -3
  3. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/PKG-INFO +1 -3
  4. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/SOURCES.txt +1 -2
  5. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/setup.py +1 -1
  6. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/admin/__init__.py +6 -4
  7. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/auth.py +162 -12
  8. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task.html +4 -0
  9. django-viewflow-2.2.3/viewflow/this_object.py +119 -0
  10. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/urls/base.py +68 -18
  11. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/urls/model.py +9 -6
  12. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/activation.py +130 -36
  13. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/base.py +111 -55
  14. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/__init__.py +0 -6
  15. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/nodes.py +142 -31
  16. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/viewset.py +4 -0
  17. django-viewflow-2.2.3/viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py +47 -0
  18. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/models.py +24 -0
  19. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/__init__.py +0 -4
  20. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/end.py +5 -2
  21. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/if_gate.py +32 -6
  22. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/job.py +2 -1
  23. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/join.py +7 -1
  24. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/mixins.py +21 -2
  25. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/split.py +3 -6
  26. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/start.py +10 -1
  27. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/view.py +2 -1
  28. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/token.py +11 -10
  29. django-viewflow-2.1.1/LICENSE.django +0 -37
  30. django-viewflow-2.1.1/viewflow/this_object.py +0 -67
  31. django-viewflow-2.1.1/viewflow/workflow/nodes/subprocess.py +0 -149
  32. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/LICENSE +0 -0
  33. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/LICENSE_EXCEPTION +0 -0
  34. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/MANIFEST.in +0 -0
  35. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/dependency_links.txt +0 -0
  36. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/not-zip-safe +0 -0
  37. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/requires.txt +0 -0
  38. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/django_viewflow.egg-info/top_level.txt +0 -0
  39. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/setup.cfg +0 -0
  40. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_middleware.py +0 -0
  41. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_templates.py +0 -0
  42. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_templatetags__viewflow.py +0 -0
  43. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_this_object.py +0 -0
  44. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_urls__base.py +0 -0
  45. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/tests/test_utils__package.py +0 -0
  46. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/__init__.py +0 -0
  47. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/apps.py +0 -0
  48. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/conf.py +0 -0
  49. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/__init__.py +0 -0
  50. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/admin/apps.py +0 -0
  51. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/plotly/__init__.py +0 -0
  52. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/plotly/material.py +0 -0
  53. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/plotly/views.py +0 -0
  54. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/contrib/plotly/viewset.py +0 -0
  55. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fields.py +0 -0
  56. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/forms/__init__.py +0 -0
  57. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/forms/renderers.py +0 -0
  58. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/__init__.py +0 -0
  59. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/admin.py +0 -0
  60. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/base.py +0 -0
  61. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/chart.py +0 -0
  62. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/typing.py +0 -0
  63. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/views.py +0 -0
  64. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/fsm/viewset.py +0 -0
  65. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/jsonstore.py +0 -0
  66. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/de/LC_MESSAGES/django.mo +0 -0
  67. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/de/LC_MESSAGES/django.po +0 -0
  68. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/es/LC_MESSAGES/django.mo +0 -0
  69. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/es/LC_MESSAGES/django.po +0 -0
  70. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/fr/LC_MESSAGES/django.mo +0 -0
  71. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/fr/LC_MESSAGES/django.po +0 -0
  72. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/it/LC_MESSAGES/django.mo +0 -0
  73. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/it/LC_MESSAGES/django.po +0 -0
  74. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ja/LC_MESSAGES/django.mo +0 -0
  75. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ja/LC_MESSAGES/django.po +0 -0
  76. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/kk/LC_MESSAGES/django.mo +0 -0
  77. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/kk/LC_MESSAGES/django.po +0 -0
  78. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ko/LC_MESSAGES/django.mo +0 -0
  79. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ko/LC_MESSAGES/django.po +0 -0
  80. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/pt/LC_MESSAGES/django.mo +0 -0
  81. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/pt/LC_MESSAGES/django.po +0 -0
  82. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ru/LC_MESSAGES/django.mo +0 -0
  83. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/ru/LC_MESSAGES/django.po +0 -0
  84. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/sr/LC_MESSAGES/django.mo +0 -0
  85. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/sr/LC_MESSAGES/django.po +0 -0
  86. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  87. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
  88. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/management/__init__.py +0 -0
  89. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/management/commands/__init__.py +0 -0
  90. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/management/commands/flowexport.py +0 -0
  91. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/middleware.py +0 -0
  92. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/css/perfect-scrollbar.css +0 -0
  93. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/css/trix.css +0 -0
  94. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/css/viewflow.min.css +0 -0
  95. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/css/vis-network.min.css +0 -0
  96. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff +0 -0
  97. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-outlined.woff2 +0 -0
  98. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff +0 -0
  99. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-round.woff2 +0 -0
  100. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff +0 -0
  101. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-sharp.woff2 +0 -0
  102. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff +0 -0
  103. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons-two-tone.woff2 +0 -0
  104. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons.css +0 -0
  105. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff +0 -0
  106. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/material-icons/material-icons.woff2 +0 -0
  107. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff +0 -0
  108. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Black.woff2 +0 -0
  109. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff +0 -0
  110. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-BlackItalic.woff2 +0 -0
  111. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff +0 -0
  112. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Bold.woff2 +0 -0
  113. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff +0 -0
  114. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-BoldItalic.woff2 +0 -0
  115. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff +0 -0
  116. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Light.woff2 +0 -0
  117. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff +0 -0
  118. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-LightItalic.woff2 +0 -0
  119. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff +0 -0
  120. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Medium.woff2 +0 -0
  121. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff +0 -0
  122. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-MediumItalic.woff2 +0 -0
  123. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff +0 -0
  124. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Regular.woff2 +0 -0
  125. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff +0 -0
  126. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-RegularItalic.woff2 +0 -0
  127. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff +0 -0
  128. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-Thin.woff2 +0 -0
  129. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff +0 -0
  130. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/Roboto-ThinItalic.woff2 +0 -0
  131. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/roboto/roboto-fontface.css +0 -0
  132. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.eot +0 -0
  133. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.otf +0 -0
  134. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.ttf +0 -0
  135. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff +0 -0
  136. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/SimpleIcons.woff2 +0 -0
  137. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.css +0 -0
  138. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/fonts/simple-icons/simple-icons.min.css +0 -0
  139. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/img/favicon.png +0 -0
  140. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/img/user.png +0 -0
  141. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash-renderer/build/dash_renderer.min.js +0 -0
  142. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js +0 -0
  143. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.LICENSE.txt +0 -0
  144. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-export.js.map +0 -0
  145. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js +0 -0
  146. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-highlight.js.map +0 -0
  147. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js +0 -0
  148. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.LICENSE.txt +0 -0
  149. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/async-table.js.map +0 -0
  150. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js +0 -0
  151. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dash_table/bundle.js.map +0 -0
  152. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js +0 -0
  153. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-datepicker.js.map +0 -0
  154. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js +0 -0
  155. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.LICENSE.txt +0 -0
  156. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-dropdown.js.map +0 -0
  157. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js +0 -0
  158. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.LICENSE.txt +0 -0
  159. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-graph.js.map +0 -0
  160. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js +0 -0
  161. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-highlight.js.map +0 -0
  162. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js +0 -0
  163. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.LICENSE.txt +0 -0
  164. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-markdown.js.map +0 -0
  165. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js +0 -0
  166. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-plotlyjs.js.LICENSE.txt +0 -0
  167. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js +0 -0
  168. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.LICENSE.txt +0 -0
  169. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-slider.js.map +0 -0
  170. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js +0 -0
  171. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/async-upload.js.map +0 -0
  172. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js +0 -0
  173. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.LICENSE.txt +0 -0
  174. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components-shared.js.map +0 -0
  175. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js +0 -0
  176. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.LICENSE.txt +0 -0
  177. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/dash_core_components.js.map +0 -0
  178. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/dcc/plotly.min.js +0 -0
  179. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/deps/polyfill@7.12.1.min.js +0 -0
  180. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.7.2.min.js +0 -0
  181. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/deps/prop-types@15.8.1.min.js +0 -0
  182. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/deps/react-dom@16.14.0.min.js +0 -0
  183. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/deps/react@16.14.0.min.js +0 -0
  184. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js +0 -0
  185. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/contrib/dash/html/dash_html_components.min.js.map +0 -0
  186. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/perfect-scrollbar.min.js +0 -0
  187. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/perfect-scrollbar.min.js.map +0 -0
  188. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/smartcrop.js +0 -0
  189. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/trix.js +0 -0
  190. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/turbo.es2017-umd.js +0 -0
  191. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/viewflow.min.js +0 -0
  192. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/viewflow.min.js.map +0 -0
  193. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/vis-network.min.js +0 -0
  194. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/static/viewflow/js/vis-network.min.js.map +0 -0
  195. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/400.html +0 -0
  196. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/403.html +0 -0
  197. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/404.html +0 -0
  198. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/500.html +0 -0
  199. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/admin/fsm_change_form.html +0 -0
  200. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/admin/fsm_change_form_object_tools.html +0 -0
  201. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/admin/fsm_change_list.html +0 -0
  202. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/admin/fsm_transition_form.html +0 -0
  203. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/formtools/wizard/wizard_form.html +0 -0
  204. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/logged_out.html +0 -0
  205. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/login.html +0 -0
  206. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_change_done.html +0 -0
  207. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_change_form.html +0 -0
  208. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_reset_complete.html +0 -0
  209. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_reset_confirm.html +0 -0
  210. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_reset_done.html +0 -0
  211. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/password_reset_form.html +0 -0
  212. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/profile.html +0 -0
  213. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/registration/provider_list.html +0 -0
  214. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/base.html +0 -0
  215. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/base_lockscreen.html +0 -0
  216. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/base_page.html +0 -0
  217. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/contrib/import_export/export_action.html +0 -0
  218. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/contrib/import_export/import_action.html +0 -0
  219. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/contrib/plotly.html +0 -0
  220. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/contrib/swagger.html +0 -0
  221. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/app_menu.html +0 -0
  222. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/list_bulk_actions.html +0 -0
  223. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/list_filter.html +0 -0
  224. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/list_pagination.html +0 -0
  225. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/object_detail_card.html +0 -0
  226. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/site_menu.html +0 -0
  227. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/snackbar.html +0 -0
  228. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/view_action_menu.html +0 -0
  229. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/viewflow_css.html +0 -0
  230. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/includes/viewflow_js.html +0 -0
  231. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/material/circular_progress.html +0 -0
  232. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/confirm_delete.html +0 -0
  233. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/delete_action.html +0 -0
  234. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/detail.html +0 -0
  235. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/form.html +0 -0
  236. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/list.html +0 -0
  237. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/views/transition.html +0 -0
  238. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/assign.html +0 -0
  239. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/base_page.html +0 -0
  240. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/celery_task_detail.html +0 -0
  241. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/flow_menu.html +0 -0
  242. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/graph.bpmn +0 -0
  243. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/graph.svg +0 -0
  244. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_cancel.html +0 -0
  245. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_dashboard.html +0 -0
  246. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_data.html +0 -0
  247. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_detail.html +0 -0
  248. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_list.html +0 -0
  249. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/process_tasks_list.html +0 -0
  250. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/start.html +0 -0
  251. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_assign.html +0 -0
  252. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_base.html +0 -0
  253. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_cancel.html +0 -0
  254. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_data.html +0 -0
  255. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_detail.html +0 -0
  256. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_list.html +0 -0
  257. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_revive.html +0 -0
  258. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_unassign.html +0 -0
  259. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/task_undo.html +0 -0
  260. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/tasks_assign.html +0 -0
  261. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/tasks_unassign.html +0 -0
  262. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/workflow_menu.html +0 -0
  263. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templates/viewflow/workflow/workflow_tasks_list.html +0 -0
  264. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templatetags/__init__.py +0 -0
  265. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templatetags/fsm.py +0 -0
  266. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templatetags/viewflow.py +0 -0
  267. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/templatetags/workflow.py +0 -0
  268. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/urls/__init__.py +0 -0
  269. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/urls/sites.py +0 -0
  270. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/utils.py +0 -0
  271. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/__init__.py +0 -0
  272. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/actions.py +0 -0
  273. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/base.py +0 -0
  274. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/create.py +0 -0
  275. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/delete.py +0 -0
  276. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/detail.py +0 -0
  277. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/filters.py +0 -0
  278. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/list.py +0 -0
  279. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/search.py +0 -0
  280. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/views/update.py +0 -0
  281. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/__init__.py +0 -0
  282. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/admin.py +0 -0
  283. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/apps.py +0 -0
  284. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/chart.py +0 -0
  285. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/context.py +0 -0
  286. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/exceptions.py +0 -0
  287. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/fields.py +0 -0
  288. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/mixins.py +0 -0
  289. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/utils.py +0 -0
  290. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/__init__.py +0 -0
  291. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/actions.py +0 -0
  292. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/chart.py +0 -0
  293. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/create.py +0 -0
  294. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/dashboard.py +0 -0
  295. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/detail.py +0 -0
  296. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/filters.py +0 -0
  297. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/list.py +0 -0
  298. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/mixins.py +0 -0
  299. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/flow/views/update.py +0 -0
  300. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/lock.py +0 -0
  301. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/managers.py +0 -0
  302. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0001_initial.py +0 -0
  303. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0002_fsmchange.py +0 -0
  304. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0003_task_owner_permission_change.py +0 -0
  305. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0004_extend_fields_length.py +0 -0
  306. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0004_subprocess.py +0 -0
  307. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0005_merge.py +0 -0
  308. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0005_rename_flowcls.py +0 -0
  309. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0006_i18n.py +0 -0
  310. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0006_merge.py +0 -0
  311. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0007_owner_permission_obj.py +0 -0
  312. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0007_task_assigned.py +0 -0
  313. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0008_jsonfield_and_artifact.py +0 -0
  314. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0008_merge.py +0 -0
  315. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0009_merge.py +0 -0
  316. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0010_viewflow20.py +0 -0
  317. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0011_alter_task_created_and_more.py +0 -0
  318. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py +0 -0
  319. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/migrations/__init__.py +0 -0
  320. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/func.py +0 -0
  321. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/handle.py +0 -0
  322. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/obsolete.py +0 -0
  323. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/nodes/switch.py +0 -0
  324. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/signals.py +0 -0
  325. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/status.py +0 -0
  326. {django-viewflow-2.1.1 → django-viewflow-2.2.3}/viewflow/workflow/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-viewflow
3
- Version: 2.1.1
3
+ Version: 2.2.3
4
4
  Summary: Reusable library to build business applications fast
5
5
  Author: Mikhail Podgurskiy
6
6
  Author-email: kmmbvnr@gmail.com
@@ -25,5 +25,3 @@ 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
@@ -143,6 +143,8 @@ Make and run migrations to create the necessary database tables, then start your
143
143
  server and access the workflow through the pre-built frontend. You should be
144
144
  able to create and track pizza orders with the workflow.
145
145
 
146
+ Go to the https://docs.viewflow.io/workflow/writing.html for the next steps
147
+
146
148
  ## Documentation
147
149
 
148
150
  Viewflow's documentation for the latest version is available at
@@ -183,10 +185,41 @@ modifications of Viewflow. You can find the commercial license terms in
183
185
 
184
186
  ## Changelog
185
187
 
186
- ### 2.1.0 2024-06-16
188
+ ### 2.2.3 2024-07-09
189
+
190
+ - Fixed issue with Split/Join operations when an immediate split to join
191
+ connection occurs.
192
+ - Improved redirect functionality for "Execute and Continue." Now redirects to
193
+ the process details if the process has finished.
194
+ - Enabled the Undo action for End() nodes.
195
+
196
+
197
+ ### 2.2.2 2024-07-05
198
+
199
+ - Introduced new parameters for .If().Then(.., task_data=, task_seed) and
200
+ .Else(...)
201
+ - Include {{ form.media }} into default workflow/task.html template
202
+
203
+
204
+ ### 2.2.1 2024-07-03
205
+
206
+ - Introduced a new parameter for .Next(..., task_seed=) that allows the
207
+ instantiation of new tasks with additional initialized .seed generic foreign key
208
+ - Introduced a new parameter for .Split(..., task_seed_source=) same as task_data_source,
209
+ prodices outgoing tasks with initializaed .seed value
210
+ - Introduced a new parameter for flow.Subprocess(process_data=, process_seed=,
211
+ task_data=, task_seed=) allows to provide data nad seed for newly created
212
+ process and/or start task
213
+
214
+ ### 2.2.0 2024-06-28
187
215
 
188
- - Allow to assign additional custom data to viewflow.fsm transitions
189
- - Added `data_source` parameter to `Split.Next()` method, allowing dynamic creation of multiple node instances based on a list of data items.
216
+ - Introduced a new parameter for .Next(..., task_data=) that allows the
217
+ instantiation of new tasks with additional initialized .data, enabling data to
218
+ be passed from task to task.
219
+ - Added process.seed and task.seed generic foreign keys to the default workflow
220
+ models. Along with process.artifact and task.artifact, these additions enable
221
+ tracking of business process results from start to finish.
222
+ - Renamed Split.Next(data_source=) to task_data_source=.
190
223
 
191
224
 
192
225
  [build]: https://img.shields.io/github/actions/workflow/status/viewflow/viewflow/django.yml?branch=main
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-viewflow
3
- Version: 2.1.1
3
+ Version: 2.2.3
4
4
  Summary: Reusable library to build business applications fast
5
5
  Author: Mikhail Podgurskiy
6
6
  Author-email: kmmbvnr@gmail.com
@@ -25,5 +25,3 @@ 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
@@ -1,5 +1,4 @@
1
1
  LICENSE
2
- LICENSE.django
3
2
  LICENSE_EXCEPTION
4
3
  MANIFEST.in
5
4
  README.md
@@ -306,6 +305,7 @@ viewflow/workflow/migrations/0009_merge.py
306
305
  viewflow/workflow/migrations/0010_viewflow20.py
307
306
  viewflow/workflow/migrations/0011_alter_task_created_and_more.py
308
307
  viewflow/workflow/migrations/0012_alter_process_data_alter_task_data.py
308
+ viewflow/workflow/migrations/0013_process_seed_content_type_process_seed_object_id_and_more.py
309
309
  viewflow/workflow/migrations/__init__.py
310
310
  viewflow/workflow/nodes/__init__.py
311
311
  viewflow/workflow/nodes/end.py
@@ -318,6 +318,5 @@ viewflow/workflow/nodes/mixins.py
318
318
  viewflow/workflow/nodes/obsolete.py
319
319
  viewflow/workflow/nodes/split.py
320
320
  viewflow/workflow/nodes/start.py
321
- viewflow/workflow/nodes/subprocess.py
322
321
  viewflow/workflow/nodes/switch.py
323
322
  viewflow/workflow/nodes/view.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.1.1",
7
+ version="2.2.3",
8
8
  author_email="kmmbvnr@gmail.com",
9
9
  author="Mikhail Podgurskiy",
10
10
  description="Reusable library to build business applications fast",
@@ -9,20 +9,22 @@ from django.contrib import admin
9
9
  from django.utils.translation import gettext_lazy as _
10
10
 
11
11
  from viewflow import Icon
12
- from viewflow.urls import Application
12
+ from viewflow.urls import Application, AppMenuMixin
13
13
 
14
14
 
15
- class Admin(Application):
15
+ class Admin(AppMenuMixin, Application):
16
16
  """
17
17
  Django administration Viewset adapter::
18
18
 
19
- from material.contrib.admin import Admin
19
+ from django.contrib import admin
20
+ from viewflow.contrib.admin import Admin
20
21
 
21
- site = Site(apps=[
22
+ site = Site(viewsets=[
22
23
  Admin()
23
24
  ])
24
25
 
25
26
  urls = [
27
+ path("admin/", admin.site.urls),
26
28
  path('', site.urls)
27
29
  ]
28
30
 
@@ -132,23 +132,29 @@ def get_user_avatar_url(user):
132
132
 
133
133
  class AuthViewset(Viewset):
134
134
  """
135
- Class-based url configuration for the `django.contrib.auth`.
136
-
137
- urlpatterns = [
138
- path('accounts/', AuthViewset(
139
- allow_password_change=False,
140
- login_view=views.LoginView.as_view(
141
- authentication_form=MyAuthForm
142
- ),
143
- ).urls),
144
- ]
135
+ Class-based URL configuration for `django.contrib.auth`.
136
+
137
+ This viewset provides URL patterns for user authentication, including login,
138
+ logout, and password management views.
139
+
140
+ .. code-block:: python
141
+
142
+ urlpatterns = [
143
+ path('accounts/', AuthViewset(
144
+ allow_password_change=False,
145
+ login_view=views.LoginView.as_view(
146
+ authentication_form=MyAuthForm
147
+ ),
148
+ ).urls),
149
+ ]
145
150
  """
146
151
 
147
152
  def __init__(self, *, allow_password_change=True, with_profile_view=True, **kwargs):
148
153
  """
149
- Initialize the viewset.
154
+ Initialize the viewset with options for password change and profile view.
150
155
 
151
- :param allow_password_change=True: enable password change/reset views
156
+ :param allow_password_change: Enable or disable password change/reset views. Defaults to True.
157
+ :param with_profile_view: Enable or disable profile view. Defaults to True.
152
158
  """
153
159
  super().__init__(**kwargs)
154
160
  self.allow_password_change = allow_password_change
@@ -160,16 +166,32 @@ class AuthViewset(Viewset):
160
166
  login_view_class = views.LoginView
161
167
 
162
168
  def get_login_view_kwargs(self, **kwargs):
169
+ """
170
+ Get keyword arguments for the login view.
171
+
172
+ :param kwargs: Additional keyword arguments for the login view.
173
+ :return: Dictionary of keyword arguments.
174
+ """
163
175
  result = {"form_class": AuthenticationForm}
164
176
  result.update(kwargs)
165
177
  return result
166
178
 
167
179
  @viewprop
168
180
  def login_view(self):
181
+ """
182
+ Property to get the configured login view.
183
+
184
+ :return: Configured login view instance.
185
+ """
169
186
  return self.login_view_class.as_view(**self.get_login_view_kwargs())
170
187
 
171
188
  @property
172
189
  def login_path(self):
190
+ """
191
+ Property to get the URL pattern for the login view.
192
+
193
+ :return: URL pattern for the login view.
194
+ """
173
195
  return path("login/", self.login_view, name="login")
174
196
 
175
197
  """
@@ -178,14 +200,30 @@ class AuthViewset(Viewset):
178
200
  logout_view_class = views.LogoutView
179
201
 
180
202
  def get_logout_view_kwargs(self, **kwargs):
203
+ """
204
+ Get keyword arguments for the logout view.
205
+
206
+ :param kwargs: Additional keyword arguments for the logout view.
207
+ :return: Dictionary of keyword arguments.
208
+ """
181
209
  return kwargs
182
210
 
183
211
  @viewprop
184
212
  def logout_view(self):
213
+ """
214
+ Property to get the configured logout view.
215
+
216
+ :return: Configured logout view class.
217
+ """
185
218
  return self.logout_view_class.as_view(**self.get_logout_view_kwargs())
186
219
 
187
220
  @property
188
221
  def logout_path(self):
222
+ """
223
+ Property to get the URL pattern for the logout view.
224
+
225
+ :return: URL pattern for the logout view.
226
+ """
189
227
  return path("logout/", self.logout_view, name="logout")
190
228
 
191
229
  """
@@ -194,14 +232,30 @@ class AuthViewset(Viewset):
194
232
  pass_change_view_class = views.PasswordChangeView
195
233
 
196
234
  def get_pass_change_view_kwargs(self, **kwargs):
235
+ """
236
+ Get keyword arguments for the password change view.
237
+
238
+ :param kwargs: Additional keyword arguments for the password change view.
239
+ :return: Dictionary of keyword arguments.
240
+ """
197
241
  return kwargs
198
242
 
199
243
  @viewprop
200
244
  def pass_change_view(self):
245
+ """
246
+ Property to get the configured password change view.
247
+
248
+ :return: Configured password change view class.
249
+ """
201
250
  return self.pass_change_view_class.as_view(**self.get_pass_change_view_kwargs())
202
251
 
203
252
  @property
204
253
  def pass_change_path(self):
254
+ """
255
+ Property to get the URL pattern for the password change view.
256
+
257
+ :return: URL pattern for the password change view.
258
+ """
205
259
  if self.allow_password_change:
206
260
  return path(
207
261
  "password_change/", self.pass_change_view, name="password_change"
@@ -213,16 +267,32 @@ class AuthViewset(Viewset):
213
267
  pass_change_done_view_class = views.PasswordChangeDoneView
214
268
 
215
269
  def get_pass_change_done_view_kwargs(self, **kwargs):
270
+ """
271
+ Get keyword arguments for the password change done view.
272
+
273
+ :param kwargs: Additional keyword arguments for the password change done view.
274
+ :return: Dictionary of keyword arguments.
275
+ """
216
276
  return kwargs
217
277
 
218
278
  @viewprop
219
279
  def pass_change_done_view(self):
280
+ """
281
+ Property to get the configured password change done view.
282
+
283
+ :return: Configured password change done view class.
284
+ """
220
285
  return self.pass_change_done_view_class.as_view(
221
286
  **self.get_pass_change_done_view_kwargs()
222
287
  )
223
288
 
224
289
  @property
225
290
  def pass_change_done_path(self):
291
+ """
292
+ Property to get the URL pattern for the password change done view.
293
+
294
+ :return: URL pattern for the password change done view.
295
+ """
226
296
  if self.allow_password_change:
227
297
  return path(
228
298
  "password_change/done/",
@@ -236,14 +306,30 @@ class AuthViewset(Viewset):
236
306
  pass_reset_view_class = views.PasswordResetView
237
307
 
238
308
  def get_pass_reset_view_kwargs(self, **kwargs):
309
+ """
310
+ Get keyword arguments for the password reset request view.
311
+
312
+ :param kwargs: Additional keyword arguments for the password reset request view.
313
+ :return: Dictionary of keyword arguments.
314
+ """
239
315
  return kwargs
240
316
 
241
317
  @viewprop
242
318
  def pass_reset_view(self):
319
+ """
320
+ Property to get the configured password reset request view.
321
+
322
+ :return: Configured password reset request view class.
323
+ """
243
324
  return self.pass_reset_view_class.as_view(**self.get_pass_reset_view_kwargs())
244
325
 
245
326
  @property
246
327
  def pass_reset_path(self):
328
+ """
329
+ Property to get the URL pattern for the password reset request view.
330
+
331
+ :return: URL pattern for the password reset request view.
332
+ """
247
333
  if self.allow_password_change:
248
334
  return path("password_reset/", self.pass_reset_view, name="password_reset")
249
335
 
@@ -253,16 +339,32 @@ class AuthViewset(Viewset):
253
339
  pass_reset_done_view_class = views.PasswordResetDoneView
254
340
 
255
341
  def get_pass_reset_done_view_kwargs(self, **kwargs):
342
+ """
343
+ Get keyword arguments for the password reset request done view.
344
+
345
+ :param kwargs: Additional keyword arguments for the password reset request done view.
346
+ :return: Dictionary of keyword arguments.
347
+ """
256
348
  return kwargs
257
349
 
258
350
  @viewprop
259
351
  def pass_reset_done_view(self):
352
+ """
353
+ Property to get the configured password reset request done view.
354
+
355
+ :return: Configured password reset request done view class.
356
+ """
260
357
  return self.pass_reset_done_view_class.as_view(
261
358
  **self.get_pass_reset_done_view_kwargs()
262
359
  )
263
360
 
264
361
  @property
265
362
  def pass_reset_done_path(self):
363
+ """
364
+ Property to get the URL pattern for the password reset request done view.
365
+
366
+ :return: URL pattern for the password reset request done view.
367
+ """
266
368
  if self.allow_password_change:
267
369
  return path(
268
370
  "password_reset/done/",
@@ -276,16 +378,32 @@ class AuthViewset(Viewset):
276
378
  pass_reset_confirm_view_class = views.PasswordResetConfirmView
277
379
 
278
380
  def get_pass_reset_confirm_view_kwargs(self, **kwargs):
381
+ """
382
+ Get keyword arguments for the password reset confirm view.
383
+
384
+ :param kwargs: Additional keyword arguments for the password reset confirm view.
385
+ :return: Dictionary of keyword arguments.
386
+ """
279
387
  return kwargs
280
388
 
281
389
  @viewprop
282
390
  def pass_reset_confirm_view(self):
391
+ """
392
+ Property to get the configured password reset confirm view.
393
+
394
+ :return: Configured password reset confirm view class.
395
+ """
283
396
  return self.pass_reset_confirm_view_class.as_view(
284
397
  **self.get_pass_reset_confirm_view_kwargs()
285
398
  )
286
399
 
287
400
  @property
288
401
  def pass_reset_confirm_path(self):
402
+ """
403
+ Property to get the URL pattern for the password reset confirm view.
404
+
405
+ :return: URL pattern for the password reset confirm view.
406
+ """
289
407
  if self.allow_password_change:
290
408
  return path(
291
409
  "reset/<uidb64>/<token>/",
@@ -299,16 +417,32 @@ class AuthViewset(Viewset):
299
417
  pass_reset_complete_view_class = views.PasswordResetCompleteView
300
418
 
301
419
  def get_pass_reset_complete_view_kwargs(self, **kwargs):
420
+ """
421
+ Get keyword arguments for the password reset complete view.
422
+
423
+ :param kwargs: Additional keyword arguments for the password reset complete view.
424
+ :return: Dictionary of keyword arguments.
425
+ """
302
426
  return kwargs
303
427
 
304
428
  @viewprop
305
429
  def pass_reset_complete_view(self):
430
+ """
431
+ Property to get the configured password reset complete view.
432
+
433
+ :return: Configured password reset complete view class.
434
+ """
306
435
  return self.pass_reset_complete_view_class.as_view(
307
436
  **self.get_pass_reset_complete_view_kwargs()
308
437
  )
309
438
 
310
439
  @property
311
440
  def pass_reset_complete_path(self):
441
+ """
442
+ Property to get the URL pattern for the password reset complete view.
443
+
444
+ :return: URL pattern for the password reset complete view.
445
+ """
312
446
  if self.allow_password_change:
313
447
  return path(
314
448
  "reset/done/",
@@ -322,14 +456,30 @@ class AuthViewset(Viewset):
322
456
  profile_view_class = ProfileView
323
457
 
324
458
  def get_profile_view_kwargs(self, **kwargs):
459
+ """
460
+ Get keyword arguments for the profile view.
461
+
462
+ :param kwargs: Additional keyword arguments for the profile view.
463
+ :return: Dictionary of keyword arguments.
464
+ """
325
465
  return kwargs
326
466
 
327
467
  @viewprop
328
468
  def profile_view(self):
469
+ """
470
+ Property to get the configured profile view.
471
+
472
+ :return: Configured profile view class.
473
+ """
329
474
  return self.profile_view_class.as_view(**self.get_profile_view_kwargs())
330
475
 
331
476
  @property
332
477
  def profile_path(self):
478
+ """
479
+ Property to get the URL pattern for the profile view.
480
+
481
+ :return: URL pattern for the profile view.
482
+ """
333
483
  if self.with_profile_view:
334
484
  return path("profile/", self.profile_view, name="profile")
335
485
 
@@ -1,6 +1,10 @@
1
1
  {% extends request.resolver_match.app.base_template_name|default:'viewflow/workflow/base_page.html' %}
2
2
  {% load i18n viewflow workflow %}
3
3
 
4
+ {% block extrahead %}
5
+ {{ block.super }}
6
+ {{ form.media }}
7
+ {% endblock %}
4
8
 
5
9
  {% block content %}{% with process=request.activation.process task=request.activation.task %}
6
10
  <div class="mdc-layout-grid vf-page__grid">
@@ -0,0 +1,119 @@
1
+ """Forward-reference for class-body declarations"""
2
+
3
+ # Copyright (c) 2017-2020, Mikhail Podgurskiy
4
+ # All Rights Reserved.
5
+
6
+ # This work is dual-licensed under AGPL defined in file 'LICENSE' with
7
+ # LICENSE_EXCEPTION and the Commercial license defined in file 'COMM_LICENSE',
8
+ # which is part of this source code package.
9
+ from typing import Any, Optional, Union
10
+
11
+
12
+ class ThisMethod:
13
+ """
14
+ Reference to a method for forward references in class bodies.
15
+
16
+ This class is used to defer the resolution of a method reference until the
17
+ class is fully constructed. This is particularly useful in workflow or state
18
+ machine implementations where the flow references are declared before the
19
+ methods are defined.
20
+ """
21
+
22
+ def __init__(self, propname: str, methodname: str):
23
+ self._propname = propname
24
+ self._methodname = methodname
25
+
26
+ def resolve(self, instance) -> Any:
27
+ """
28
+ Resolve the method reference on the given instance.
29
+
30
+ Args:
31
+ instance (object): The instance on which to resolve the method.
32
+
33
+ Returns:
34
+ Any: The result of the resolved method call.
35
+
36
+ Raises:
37
+ AttributeError: If the property or method does not exist on the instance.
38
+ """
39
+ prop = getattr(instance, self._propname)
40
+ method = getattr(instance, f"_this_{self._methodname}")
41
+ return method(prop)
42
+
43
+
44
+ class ThisObject(object):
45
+ """
46
+ Helper for forward references to class attributes.
47
+
48
+ This class is used to defer the resolution of an attribute reference until
49
+ the class is fully constructed. This allows for the use of class attributes
50
+ before they are defined.
51
+
52
+ Attributes:
53
+ name (str): The name of the attribute to resolve.
54
+ """
55
+
56
+ def __init__(self, name: str) -> None: # noqa D102
57
+ self.name = name
58
+
59
+ def resolve(self, instance: object) -> Any:
60
+ """
61
+ Resolve the attribute reference on the given instance.
62
+
63
+ Args:
64
+ instance (object): The instance on which to resolve the attribute.
65
+
66
+ Returns:
67
+ Any: The resolved attribute.
68
+
69
+ Raises:
70
+ AttributeError: If the attribute does not exist on the instance.
71
+ """
72
+ return getattr(instance, self.name)
73
+
74
+ # def __copy__(self):
75
+ # return super().__copy__()
76
+
77
+ # def __deepcopy__(self, memo):
78
+ # return super().__deepcopy__(memo)
79
+
80
+ def __getattr__(self, name):
81
+ if name.startswith("__"):
82
+ super().__getattr__(name)
83
+ return ThisMethod(self.name, name)
84
+
85
+
86
+ class This:
87
+ """
88
+ Helper for building forward references to class attributes and methods.
89
+
90
+ The rationale is the ability to specify references to the class attributes and
91
+ methods before they are declared. `this` acts similarly to `self`, but for
92
+ class-level forward references.
93
+ """
94
+
95
+ def resolve(self, instance: object, this_ref: Union[ThisObject, ThisMethod, Any]):
96
+ """
97
+ Resolve a forward reference on the given instance.
98
+
99
+ Args:
100
+ instance (object): The instance on which to resolve the reference.
101
+ this_ref (Union[ThisObject, ThisMethod, Any]): The reference to resolve.
102
+
103
+ Returns:
104
+ Any: The resolved reference.
105
+
106
+ Raises:
107
+ AttributeError: If the reference cannot be resolved.
108
+ """
109
+ if isinstance(this_ref, (ThisObject, ThisMethod)):
110
+ return this_ref.resolve(instance)
111
+ else:
112
+ return this_ref
113
+
114
+ def __getattr__(self, name):
115
+ return ThisObject(name)
116
+
117
+
118
+ # Instantiate a global `this` object for use in class definitions.
119
+ this = This()