django-viewflow 2.2.14__tar.gz → 2.3.0__tar.gz

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