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