Flask-Exts 0.2.4__tar.gz → 0.2.6__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 (435) hide show
  1. {flask_exts-0.2.4 → flask_exts-0.2.6}/.readthedocs.yaml +2 -2
  2. {flask_exts-0.2.4 → flask_exts-0.2.6}/CHANGES.rst +18 -2
  3. {flask_exts-0.2.4 → flask_exts-0.2.6}/PKG-INFO +6 -5
  4. {flask_exts-0.2.4 → flask_exts-0.2.6}/README.rst +5 -4
  5. flask_exts-0.2.6/docs/api.rst +9 -0
  6. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/conf.py +6 -6
  7. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/configure.rst +3 -0
  8. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/develop.rst +0 -25
  9. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/index.rst +12 -1
  10. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/README.rst +25 -25
  11. flask_exts-0.2.6/examples/bootstrap/forms.py +113 -0
  12. flask_exts-0.2.6/examples/bootstrap/make_app.py +46 -0
  13. flask_exts-0.2.6/examples/bootstrap/models.py +19 -0
  14. flask_exts-0.2.6/examples/bootstrap/static/favicon.ico +0 -0
  15. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/flash.html +1 -1
  16. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/icon.html +4 -4
  17. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/icons.html +2050 -2050
  18. flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/index.html +16 -0
  19. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/nav.html +8 -8
  20. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/table.html +6 -6
  21. flask_exts-0.2.6/examples/bootstrap/templates/mybase.html +34 -0
  22. flask_exts-0.2.6/examples/bootstrap/view.py +151 -0
  23. flask_exts-0.2.6/examples/bootstrap5/static/favicon.ico +0 -0
  24. flask_exts-0.2.6/examples/demo/__init__.py +1 -0
  25. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/admin_views.py +1 -1
  26. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/make_app.py +4 -8
  27. flask_exts-0.2.6/examples/demo/templates/my/index.html +7 -0
  28. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/fileadmin/file_view.py +1 -1
  29. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/fileadmin/make_app.py +9 -12
  30. flask_exts-0.2.6/examples/rediscli.py +26 -0
  31. flask_exts-0.2.6/examples/simple.py +32 -0
  32. flask_exts-0.2.6/src/flask_exts/__about__.py +1 -0
  33. flask_exts-0.2.6/src/flask_exts/__init__.py +1 -0
  34. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/actions.py +0 -1
  35. flask_exts-0.2.4/src/flask_exts/admin/base_admin.py → flask_exts-0.2.6/src/flask_exts/admin/admin.py +10 -9
  36. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/view.py +4 -12
  37. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/form.py +3 -7
  38. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/view.py +17 -3
  39. flask_exts-0.2.4/src/flask_exts/manager.py → flask_exts-0.2.6/src/flask_exts/exts.py +14 -12
  40. flask_exts-0.2.6/src/flask_exts/proxies.py +19 -0
  41. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/authorizer/casbin_authorizer.py +1 -4
  42. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/core.py +19 -0
  43. flask_exts-0.2.6/src/flask_exts/template/base.py +18 -0
  44. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/flask_form.py +1 -6
  45. flask_exts-0.2.6/src/flask_exts/themes/plugins/base_plugin.py +9 -0
  46. flask_exts-0.2.6/src/flask_exts/themes/plugins/bootstrap4_plugin.py +17 -0
  47. flask_exts-0.2.6/src/flask_exts/themes/plugins/bootstrap5_plugin.py +17 -0
  48. flask_exts-0.2.6/src/flask_exts/themes/plugins/clipboard_plugin.py +10 -0
  49. flask_exts-0.2.6/src/flask_exts/themes/plugins/copybutton_plugin.py +12 -0
  50. flask_exts-0.2.6/src/flask_exts/themes/plugins/detail_filter_plugin.py +10 -0
  51. flask_exts-0.2.6/src/flask_exts/themes/plugins/jquery_plugin.py +10 -0
  52. flask_exts-0.2.6/src/flask_exts/themes/plugins/list_action_plugin.py +10 -0
  53. flask_exts-0.2.6/src/flask_exts/themes/plugins/plugin_manager.py +83 -0
  54. flask_exts-0.2.6/src/flask_exts/themes/plugins/qrcode_plugin.py +10 -0
  55. flask_exts-0.2.6/src/flask_exts/themes/plugins/rediscli_plugin.py +13 -0
  56. flask_exts-0.2.6/src/flask_exts/themes/plugins/sphinx_copybutton_plugin.py +13 -0
  57. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/css/admin.css +1 -1
  58. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/css/rediscli.css +0 -2
  59. flask_exts-0.2.6/src/flask_exts/themes/static/js/copybutton.js +45 -0
  60. flask_exts-0.2.6/src/flask_exts/themes/static/js/detail_filter.js +55 -0
  61. flask_exts-0.2.6/src/flask_exts/themes/static/js/model_action.js +70 -0
  62. flask_exts-0.2.6/src/flask_exts/themes/static/js/rediscli.js +142 -0
  63. flask_exts-0.2.6/src/flask_exts/themes/static/vendor/clipboard/clipboard.min.js +7 -0
  64. flask_exts-0.2.6/src/flask_exts/themes/static/vendor/sphinx-copybutton/sphinx-copybutton.css +97 -0
  65. flask_exts-0.2.6/src/flask_exts/themes/static/vendor/sphinx-copybutton/sphinx-copybutton.js +247 -0
  66. flask_exts-0.2.4/src/flask_exts/templates/admin/base.html → flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/master.html +5 -9
  67. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/details.html +10 -4
  68. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/list.html +20 -7
  69. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/modals/details.html +10 -4
  70. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/base.html +1 -3
  71. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/bootstrap4/form.html +6 -6
  72. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/bootstrap4/pagination.html +3 -3
  73. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/bootstrap5/form.html +9 -9
  74. flask_exts-0.2.6/src/flask_exts/themes/templates/default/layout.html +11 -0
  75. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/actions.html +3 -11
  76. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/form.html +5 -5
  77. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/icon.html +1 -10
  78. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/menu.html +2 -5
  79. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/row_actions.html +3 -3
  80. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/table.html +12 -12
  81. flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/vendor.html +17 -0
  82. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/file/list.html +14 -1
  83. flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/rediscli/console.html +29 -0
  84. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/rediscli/response.html +1 -1
  85. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/index.html +3 -0
  86. flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/recovery_codes.html +50 -0
  87. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/setup_tfa.html +6 -5
  88. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/show_tfa.html +0 -20
  89. flask_exts-0.2.6/src/flask_exts/themes/theme.py +49 -0
  90. {flask_exts-0.2.4/src/flask_exts/datastore/sqla → flask_exts-0.2.6/src/flask_exts/usercenter}/models/role.py +3 -3
  91. {flask_exts-0.2.4/src/flask_exts/datastore/sqla → flask_exts-0.2.6/src/flask_exts/usercenter}/models/user.py +10 -10
  92. {flask_exts-0.2.4/src/flask_exts/datastore/sqla → flask_exts-0.2.6/src/flask_exts/usercenter}/models/user_profile.py +7 -7
  93. {flask_exts-0.2.4/src/flask_exts/datastore/sqla → flask_exts-0.2.6/src/flask_exts/usercenter}/models/webauthn.py +8 -8
  94. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/usercenter/sqla_user_store.py +2 -7
  95. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/__init__.py +0 -2
  96. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/decorators.py +3 -3
  97. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/tools.py +19 -35
  98. {flask_exts-0.2.4/src/flask_exts/views/file_view → flask_exts-0.2.6/src/flask_exts/views/file}/base_file_view.py +1 -1
  99. flask_exts-0.2.6/src/flask_exts/views/index/view.py +26 -0
  100. flask_exts-0.2.6/src/flask_exts/views/rediscli/mock_redis.py +155 -0
  101. flask_exts-0.2.4/src/flask_exts/views/rediscli_view.py → flask_exts-0.2.6/src/flask_exts/views/rediscli/view.py +2 -7
  102. flask_exts-0.2.4/src/flask_exts/views/user_view.py → flask_exts-0.2.6/src/flask_exts/views/user/view.py +21 -26
  103. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/customer/conftest.py +9 -16
  104. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/customer/test_admin.py +1 -2
  105. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/test_base.py +5 -12
  106. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/conftest.py +10 -10
  107. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_adapter/test_sqlalchemy_adapter.py +3 -3
  108. flask_exts-0.2.6/tests/template/__init__.py +0 -0
  109. flask_exts-0.2.6/tests/template/bootstrap4/__init__.py +0 -0
  110. flask_exts-0.2.4/tests/template/bootstrap4/test_render_icon_sprite.py → flask_exts-0.2.6/tests/template/bootstrap4/test_render_icon.py +12 -12
  111. flask_exts-0.2.6/tests/template/bootstrap5/__init__.py +0 -0
  112. flask_exts-0.2.6/tests/template/bootstrap5/conftest.py +15 -0
  113. flask_exts-0.2.6/tests/template/test_base.py +16 -0
  114. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/test_base.py +11 -9
  115. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/translations/zh_CN/LC_MESSAGES/messages.po +1 -1
  116. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/usercenter/test_sqla_usercenter.py +1 -1
  117. flask_exts-0.2.6/tests/views/files/dummy.txt +0 -0
  118. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/views/test_file_view.py +1 -1
  119. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/views/test_rediscli_view.py +1 -1
  120. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/views/test_user_view.py +4 -6
  121. flask_exts-0.2.4/docs/user.rst +0 -11
  122. flask_exts-0.2.4/examples/bootstrap4/app.py +0 -277
  123. flask_exts-0.2.4/examples/bootstrap4/templates/index.html +0 -16
  124. flask_exts-0.2.4/examples/bootstrap4/templates/mybase.html +0 -58
  125. flask_exts-0.2.4/examples/bootstrap5/app.py +0 -329
  126. flask_exts-0.2.4/examples/bootstrap5/static/favicon.ico +0 -0
  127. flask_exts-0.2.4/examples/demo/templates/my/index.html +0 -7
  128. flask_exts-0.2.4/examples/rediscli.py +0 -18
  129. flask_exts-0.2.4/examples/simple.py +0 -27
  130. flask_exts-0.2.4/src/flask_exts/__about__.py +0 -1
  131. flask_exts-0.2.4/src/flask_exts/__init__.py +0 -1
  132. flask_exts-0.2.4/src/flask_exts/admin/admin.py +0 -15
  133. flask_exts-0.2.4/src/flask_exts/proxies.py +0 -22
  134. flask_exts-0.2.4/src/flask_exts/static/js/actions.js +0 -51
  135. flask_exts-0.2.4/src/flask_exts/static/js/details_filter.js +0 -10
  136. flask_exts-0.2.4/src/flask_exts/static/js/helper.js +0 -7
  137. flask_exts-0.2.4/src/flask_exts/static/js/rediscli.js +0 -121
  138. flask_exts-0.2.4/src/flask_exts/template/base.py +0 -37
  139. flask_exts-0.2.4/src/flask_exts/template/dataset.py +0 -9
  140. flask_exts-0.2.4/src/flask_exts/template/plugin.py +0 -18
  141. flask_exts-0.2.4/src/flask_exts/template/theme.py +0 -55
  142. flask_exts-0.2.4/src/flask_exts/templates/admin/master.html +0 -1
  143. flask_exts-0.2.4/src/flask_exts/templates/layout.html +0 -12
  144. flask_exts-0.2.4/src/flask_exts/templates/macro/vendor.html +0 -17
  145. flask_exts-0.2.4/src/flask_exts/templates/views/rediscli/console.html +0 -27
  146. flask_exts-0.2.4/src/flask_exts/templates/views/user/recovery_codes.html +0 -32
  147. flask_exts-0.2.4/src/flask_exts/utils/authorize.py +0 -21
  148. flask_exts-0.2.4/src/flask_exts/views/index_view.py +0 -46
  149. flask_exts-0.2.4/tests/template/bootstrap5/conftest.py +0 -21
  150. flask_exts-0.2.4/tests/template/test_base.py +0 -16
  151. {flask_exts-0.2.4 → flask_exts-0.2.6}/.github/workflows/release.yml +0 -0
  152. {flask_exts-0.2.4 → flask_exts-0.2.6}/.gitignore +0 -0
  153. {flask_exts-0.2.4 → flask_exts-0.2.6}/LICENSE.rst +0 -0
  154. {flask_exts-0.2.4 → flask_exts-0.2.6}/babel/babel.cfg +0 -0
  155. {flask_exts-0.2.4 → flask_exts-0.2.6}/babel/babel.sh +0 -0
  156. {flask_exts-0.2.4 → flask_exts-0.2.6}/babel/messages.pot +0 -0
  157. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/Makefile +0 -0
  158. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/_static/logo.png +0 -0
  159. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/changes.rst +0 -0
  160. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/examples.rst +0 -0
  161. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/make.bat +0 -0
  162. {flask_exts-0.2.4 → flask_exts-0.2.6}/docs/requirements.txt +0 -0
  163. {flask_exts-0.2.4/examples/demo → flask_exts-0.2.6/examples/bootstrap}/__init__.py +0 -0
  164. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/bootswatch.html +0 -0
  165. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/form.html +0 -0
  166. {flask_exts-0.2.4/examples/bootstrap4/templates → flask_exts-0.2.6/examples/bootstrap/templates/bootstrap}/pagination.html +0 -0
  167. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/bootswatch.html +0 -0
  168. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/flash.html +0 -0
  169. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/form.html +0 -0
  170. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/icon.html +0 -0
  171. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/icons.html +0 -0
  172. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/index.html +0 -0
  173. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/mybase.html +0 -0
  174. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/nav.html +0 -0
  175. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/pagination.html +0 -0
  176. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/bootstrap5/templates/table.html +0 -0
  177. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/build_sample.py +0 -0
  178. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/file_op.py +0 -0
  179. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/__init__.py +0 -0
  180. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/author.py +0 -0
  181. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/keyword.py +0 -0
  182. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/location_image.py +0 -0
  183. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/post.py +0 -0
  184. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/post_tag.py +0 -0
  185. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/tag.py +0 -0
  186. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/tree.py +0 -0
  187. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/user.py +0 -0
  188. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/models/user_keyword.py +0 -0
  189. {flask_exts-0.2.4/examples/bootstrap4 → flask_exts-0.2.6/examples/demo}/static/favicon.ico +0 -0
  190. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/templates/field_list.html +0 -0
  191. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/templates/locations.html +0 -0
  192. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/templates/tree_list.html +0 -0
  193. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/author_view.py +0 -0
  194. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/keyword_view.py +0 -0
  195. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/location_image_view.py +0 -0
  196. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/my_view.py +0 -0
  197. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/post_view.py +0 -0
  198. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/tag_view.py +0 -0
  199. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/tree_view.py +0 -0
  200. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/demo/views/user_view.py +0 -0
  201. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/fileadmin/__init__.py +0 -0
  202. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/fileadmin/tmp/bbb/a.txt +0 -0
  203. {flask_exts-0.2.4 → flask_exts-0.2.6}/examples/instance/config.py +0 -0
  204. {flask_exts-0.2.4 → flask_exts-0.2.6}/pyproject.toml +0 -0
  205. {flask_exts-0.2.4 → flask_exts-0.2.6}/requirements/build.in +0 -0
  206. {flask_exts-0.2.4 → flask_exts-0.2.6}/requirements/test.in +0 -0
  207. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/__init__.py +0 -0
  208. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/menu.py +0 -0
  209. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/__init__.py +0 -0
  210. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/ajax.py +0 -0
  211. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/filters.py +0 -0
  212. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/form.py +0 -0
  213. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/model/typefmt.py +0 -0
  214. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/row_action.py +0 -0
  215. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/__init__.py +0 -0
  216. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/ajax.py +0 -0
  217. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/filters.py +0 -0
  218. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/typefmt.py +0 -0
  219. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/admin/sqla/view.py +0 -0
  220. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/babel/__init__.py +0 -0
  221. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/babel/selector.py +0 -0
  222. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/commands.py +0 -0
  223. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/constants.py +0 -0
  224. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/datastore/__init__.py +0 -0
  225. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/datastore/sqla/__init__.py +0 -0
  226. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/datastore/sqla/orm.py +0 -0
  227. {flask_exts-0.2.4/src/flask_exts/datastore/sqla/models → flask_exts-0.2.6/src/flask_exts/email}/__init__.py +0 -0
  228. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/email/base.py +0 -0
  229. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/email/reset_password_sender.py +0 -0
  230. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/email/sender.py +0 -0
  231. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/email/smtp.py +0 -0
  232. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/email/verify_email_sender.py +0 -0
  233. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/__init__.py +0 -0
  234. {flask_exts-0.2.4/src/flask_exts/email → flask_exts-0.2.6/src/flask_exts/security/authorizer}/__init__.py +0 -0
  235. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/authorizer/base.py +0 -0
  236. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/authorizer/sqlalchemy_adapter.py +0 -0
  237. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/email_verification.py +0 -0
  238. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/hasher.py +0 -0
  239. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/principal/identity.py +0 -0
  240. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/principal/identity_context.py +0 -0
  241. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/principal/permission.py +0 -0
  242. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/principal/principal.py +0 -0
  243. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/reset_password.py +0 -0
  244. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/serializer.py +0 -0
  245. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/security/two_factor_authentication.py +0 -0
  246. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/signals.py +0 -0
  247. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/__init__.py +0 -0
  248. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/__init__.py +0 -0
  249. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/ajax_select.py +0 -0
  250. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/datetime.py +0 -0
  251. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/file.py +0 -0
  252. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/inline.py +0 -0
  253. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/json.py +0 -0
  254. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/recaptcha.py +0 -0
  255. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/select.py +0 -0
  256. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/sqla.py +0 -0
  257. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/switch.py +0 -0
  258. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/fields/taglist.py +0 -0
  259. {flask_exts-0.2.4/src/flask_exts/security/authorizer → flask_exts-0.2.6/src/flask_exts/template/form}/__init__.py +0 -0
  260. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/base_form.py +0 -0
  261. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/csrf.py +0 -0
  262. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/form_opts.py +0 -0
  263. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/meta.py +0 -0
  264. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/session_csrf.py +0 -0
  265. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/form/utils.py +0 -0
  266. {flask_exts-0.2.4/src/flask_exts/template/form → flask_exts-0.2.6/src/flask_exts/template/forms}/__init__.py +0 -0
  267. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/change_password.py +0 -0
  268. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/forgot_password.py +0 -0
  269. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/login.py +0 -0
  270. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/profile.py +0 -0
  271. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/recovery.py +0 -0
  272. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/register.py +0 -0
  273. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/reset_password.py +0 -0
  274. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/forms/two_factor.py +0 -0
  275. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/funcs.py +0 -0
  276. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/rules.py +0 -0
  277. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/validators/__init__.py +0 -0
  278. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/validators/field_list.py +0 -0
  279. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/validators/file.py +0 -0
  280. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/validators/recaptcha.py +0 -0
  281. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/validators/sqla.py +0 -0
  282. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/__init__.py +0 -0
  283. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/checkbox.py +0 -0
  284. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/datetime.py +0 -0
  285. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/file.py +0 -0
  286. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/inline.py +0 -0
  287. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/recaptcha.py +0 -0
  288. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/render_template.py +0 -0
  289. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/select.py +0 -0
  290. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/template/widgets/xeditable.py +0 -0
  291. {flask_exts-0.2.4/src/flask_exts/template/forms → flask_exts-0.2.6/src/flask_exts/themes/plugins}/__init__.py +0 -0
  292. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/filters.js +0 -0
  293. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/form.js +0 -0
  294. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/modal.js +0 -0
  295. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/qrcode.js +0 -0
  296. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/security/base64.js +0 -0
  297. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/js/security/webauthn.js +0 -0
  298. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/logo.png +0 -0
  299. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/bootstrap-icons.svg +0 -0
  300. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/bootstrap-icons.css +0 -0
  301. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/bootstrap-icons.json +0 -0
  302. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/bootstrap-icons.min.css +0 -0
  303. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/bootstrap-icons.scss +0 -0
  304. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
  305. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
  306. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap4/bootstrap.bundle.min.js +0 -0
  307. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap4/bootstrap.min.css +0 -0
  308. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap5/bootstrap.bundle.min.js +0 -0
  309. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/bootstrap5/bootstrap.min.css +0 -0
  310. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/daterangepicker/daterangepicker.css +0 -0
  311. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/daterangepicker/daterangepicker.js +0 -0
  312. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/jquery/jquery.min.js +0 -0
  313. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/moment.min.js +0 -0
  314. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/select2/select2.min.css +0 -0
  315. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/select2/select2.min.js +0 -0
  316. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/vanilla-editor/css/bootstrap-editable.css +0 -0
  317. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/vanilla-editor/img/clear.png +0 -0
  318. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/vanilla-editor/img/loading.gif +0 -0
  319. {flask_exts-0.2.4/src/flask_exts → flask_exts-0.2.6/src/flask_exts/themes}/static/vendor/vanilla-editor/js/bootstrap-editable.min.js +0 -0
  320. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/index.html +0 -0
  321. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/create.html +0 -0
  322. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/edit.html +0 -0
  323. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/modals/create.html +0 -0
  324. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/admin/model/modals/edit.html +0 -0
  325. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/bootstrap4/message.html +0 -0
  326. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/bootstrap5/message.html +0 -0
  327. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/index.html +0 -0
  328. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/inline.html +0 -0
  329. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/layout.html +0 -0
  330. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/message.html +0 -0
  331. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/nav.html +0 -0
  332. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/macro/pagination.html +0 -0
  333. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/file/form.html +0 -0
  334. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/file/modals/form.html +0 -0
  335. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/change_password.html +0 -0
  336. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/forgot_password.html +0 -0
  337. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/list.html +0 -0
  338. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/login.html +0 -0
  339. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/recovery.html +0 -0
  340. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/register.html +0 -0
  341. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/reset_password.html +0 -0
  342. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/verify_email.html +0 -0
  343. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/verify_tfa.html +0 -0
  344. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/views/user/verify_tfa_modal.html +0 -0
  345. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/widgets/inline_field_list.html +0 -0
  346. {flask_exts-0.2.4/src/flask_exts/templates → flask_exts-0.2.6/src/flask_exts/themes/templates/default}/widgets/inline_form.html +0 -0
  347. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/translations/__init__.py +0 -0
  348. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/translations/en/LC_MESSAGES/messages.mo +0 -0
  349. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/translations/en/LC_MESSAGES/messages.po +0 -0
  350. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  351. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.po +0 -0
  352. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/types.py +0 -0
  353. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/usercenter/__init__.py +0 -0
  354. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/usercenter/base_user.py +0 -0
  355. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/usercenter/base_user_store.py +0 -0
  356. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/usercenter/core.py +0 -0
  357. {flask_exts-0.2.4/tests/admin → flask_exts-0.2.6/src/flask_exts/usercenter/models}/__init__.py +0 -0
  358. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/flask.py +0 -0
  359. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/image.py +0 -0
  360. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/jwt.py +0 -0
  361. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/request_user.py +0 -0
  362. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/sqla.py +0 -0
  363. {flask_exts-0.2.4 → flask_exts-0.2.6}/src/flask_exts/utils/url.py +0 -0
  364. {flask_exts-0.2.4/src/flask_exts/views/file_view → flask_exts-0.2.6/src/flask_exts/views/file}/__init__.py +0 -0
  365. {flask_exts-0.2.4/src/flask_exts/views/file_view → flask_exts-0.2.6/src/flask_exts/views/file}/local_file_storage.py +0 -0
  366. {flask_exts-0.2.4/src/flask_exts/views/file_view → flask_exts-0.2.6/src/flask_exts/views/file}/local_file_view.py +0 -0
  367. {flask_exts-0.2.4/tests/admin/sqla → flask_exts-0.2.6/src/flask_exts/views/index}/__init__.py +0 -0
  368. {flask_exts-0.2.4/tests/security/authorizer → flask_exts-0.2.6/src/flask_exts/views/rediscli}/__init__.py +0 -0
  369. {flask_exts-0.2.4/tests/template → flask_exts-0.2.6/src/flask_exts/views/user}/__init__.py +0 -0
  370. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/__init__.py +0 -0
  371. {flask_exts-0.2.4/tests/template/bootstrap4 → flask_exts-0.2.6/tests/admin}/__init__.py +0 -0
  372. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/customer/templates/mock.html +0 -0
  373. {flask_exts-0.2.4/tests/template/bootstrap5 → flask_exts-0.2.6/tests/admin/sqla}/__init__.py +0 -0
  374. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/templates/another_macro.html +0 -0
  375. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/templates/macro.html +0 -0
  376. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/test_basic.py +0 -0
  377. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/test_form_rules.py +0 -0
  378. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/test_inlineform.py +0 -0
  379. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/test_multi_pk.py +0 -0
  380. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/sqla/test_translation.py +0 -0
  381. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/admin/test_model.py +0 -0
  382. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/data/copyleft.gif +0 -0
  383. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/data/copyleft.jpeg +0 -0
  384. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/data/copyleft.jpg +0 -0
  385. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/data/copyleft.png +0 -0
  386. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/data/copyleft.tiff +0 -0
  387. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/email/test_base.py +0 -0
  388. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/email/test_smtp.py +0 -0
  389. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/helper.py +0 -0
  390. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/__init__.py +0 -0
  391. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/message.py +0 -0
  392. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/model1.py +0 -0
  393. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/multpk.py +0 -0
  394. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/polymorphic.py +0 -0
  395. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/tree.py +0 -0
  396. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/models/user.py +0 -0
  397. /flask_exts-0.2.4/tests/views/files/dummy.txt → /flask_exts-0.2.6/tests/security/authorizer/__init__.py +0 -0
  398. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_adapter/rbac_model.conf +0 -0
  399. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_adapter/rbac_policy.csv +0 -0
  400. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_files/authz_policy.csv +0 -0
  401. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_files/rbac_model.conf +0 -0
  402. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/casbin_files/rbac_policy.csv +0 -0
  403. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/authorizer/test_casbin_auth.py +0 -0
  404. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/test_core.py +0 -0
  405. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/test_principal.py +0 -0
  406. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/security/test_tfa.py +0 -0
  407. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_field.py +0 -0
  408. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_form.py +0 -0
  409. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_form_row.py +0 -0
  410. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_hidden_errors.py +0 -0
  411. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_messages.py +0 -0
  412. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_pager.py +0 -0
  413. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_pagination.py +0 -0
  414. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/bootstrap4/test_render_table.py +0 -0
  415. /flask_exts-0.2.4/tests/template/bootstrap5/test_base.py → /flask_exts-0.2.6/tests/template/bootstrap5/_test_base.py +0 -0
  416. /flask_exts-0.2.4/tests/template/bootstrap5/test_render_form.py → /flask_exts-0.2.6/tests/template/bootstrap5/_test_render_form.py +0 -0
  417. /flask_exts-0.2.4/tests/template/bootstrap5/test_render_form_row.py → /flask_exts-0.2.6/tests/template/bootstrap5/_test_render_form_row.py +0 -0
  418. /flask_exts-0.2.4/tests/template/bootstrap5/test_render_messages.py → /flask_exts-0.2.6/tests/template/bootstrap5/_test_render_messages.py +0 -0
  419. /flask_exts-0.2.4/tests/template/bootstrap5/test_render_pagination.py → /flask_exts-0.2.6/tests/template/bootstrap5/_test_render_pagination.py +0 -0
  420. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/conftest.py +0 -0
  421. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/forms/test_csrf.py +0 -0
  422. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/forms/test_fields.py +0 -0
  423. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/forms/test_filefield.py +0 -0
  424. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/forms/test_uploadfile.py +0 -0
  425. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/macros/test_render_breadcrumb_item.py +0 -0
  426. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/template/macros/test_render_nav_item.py +0 -0
  427. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/templates/method.html +0 -0
  428. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/templates/mock.html +0 -0
  429. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/test_babel.py +0 -0
  430. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/test_flask.py +0 -0
  431. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/translations/en/LC_MESSAGES/messages.mo +0 -0
  432. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/translations/en/LC_MESSAGES/messages.po +0 -0
  433. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/utils/test_image.py +0 -0
  434. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/utils/test_request_user.py +0 -0
  435. {flask_exts-0.2.4 → flask_exts-0.2.6}/tests/utils/test_url.py +0 -0
@@ -7,9 +7,9 @@ version: 2
7
7
 
8
8
  # Set the OS, Python version and other tools you might need
9
9
  build:
10
- os: "ubuntu-22.04"
10
+ os: "ubuntu-24.04"
11
11
  tools:
12
- python: "3.12"
12
+ python: "3.13"
13
13
  # You can also specify other tool versions:
14
14
  # nodejs: "19"
15
15
  # rust: "1.64"
@@ -1,7 +1,23 @@
1
+ v0.2.6
2
+ ------
3
+
4
+ Released 2025-11-16
5
+
6
+ - rename manager.py to exts.py
7
+ - rename Class Manager to Exts
8
+
9
+ v0.2.5
10
+ ------
11
+
12
+ Released 2025-10-24
13
+
14
+ - rewrite template structure
15
+ - rewrite user view, user authentication and authorization
16
+
1
17
  v0.2.4
2
18
  ------
3
19
 
4
- Unreleased
20
+ Released 2025-10-06
5
21
 
6
22
  - user change password
7
23
  - user forgot password
@@ -74,7 +90,7 @@ Released 2024-09-14
74
90
 
75
91
  - merge translations of wtforms, flask_exts and app into flask_babel.get_translations()
76
92
  - update FileField and ImageField
77
- - add url for template.static
93
+ - add url for _template.static
78
94
 
79
95
  v0.1.5
80
96
  ------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Flask-Exts
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: Flask extensions with admin, SQLAlchemy, babel, forms, fields, widgets, and so on.
5
5
  Project-URL: Documentation, https://flask-exts.readthedocs.io
6
6
  Project-URL: Source, https://github.com/ojso/flask-exts
@@ -62,6 +62,7 @@ Flask Exts
62
62
 
63
63
  Flask-Exts is mainly inspired by:
64
64
 
65
+ - `Bootstrap <https://getbootstrap.com/>`_
65
66
  - `Flask-Admin <https://github.com/pallets-eco/flask-admin/>`_
66
67
  - `Flask-Security <https://github.com/pallets-eco/flask-security/>`_
67
68
 
@@ -88,13 +89,13 @@ Examples
88
89
  .. code-block:: python
89
90
 
90
91
  from flask import Flask
91
- from flask_exts import Manager
92
+ from flask_exts import Exts
92
93
 
93
94
  app = Flask(__name__)
94
95
  app.config["SECRET_KEY"] = "dev"
95
- # Manager init
96
- manager = Manager()
97
- manager.init_app(app)
96
+ # Exts init
97
+ exts = Exts()
98
+ exts.init_app(app)
98
99
 
99
100
  if __name__ == "__main__":
100
101
  app.run(debug=True)
@@ -3,6 +3,7 @@ Flask Exts
3
3
 
4
4
  Flask-Exts is mainly inspired by:
5
5
 
6
+ - `Bootstrap <https://getbootstrap.com/>`_
6
7
  - `Flask-Admin <https://github.com/pallets-eco/flask-admin/>`_
7
8
  - `Flask-Security <https://github.com/pallets-eco/flask-security/>`_
8
9
 
@@ -29,13 +30,13 @@ Examples
29
30
  .. code-block:: python
30
31
 
31
32
  from flask import Flask
32
- from flask_exts import Manager
33
+ from flask_exts import Exts
33
34
 
34
35
  app = Flask(__name__)
35
36
  app.config["SECRET_KEY"] = "dev"
36
- # Manager init
37
- manager = Manager()
38
- manager.init_app(app)
37
+ # Exts init
38
+ exts = Exts()
39
+ exts.init_app(app)
39
40
 
40
41
  if __name__ == "__main__":
41
42
  app.run(debug=True)
@@ -0,0 +1,9 @@
1
+ API
2
+ ===
3
+
4
+ views
5
+ =======
6
+
7
+ .. automodule:: flask_exts.views.user.view
8
+ :members:
9
+ :inherited-members:
@@ -32,12 +32,12 @@ extensions = [
32
32
  "sphinx.ext.intersphinx",
33
33
  ]
34
34
 
35
- intersphinx_mapping = {
36
- "rtd": ("https://docs.readthedocs.io/en/stable/", None),
37
- "python": ("https://docs.python.org/3/", None),
38
- "sphinx": ("https://www.sphinx-doc.org/en/master/", None),
39
- }
40
- intersphinx_disabled_domains = ["std"]
35
+ # intersphinx_mapping = {
36
+ # "rtd": ("https://docs.readthedocs.io/en/stable/", None),
37
+ # "python": ("https://docs.python.org/3/", None),
38
+ # "sphinx": ("https://www.sphinx-doc.org/en/master/", None),
39
+ # }
40
+ # intersphinx_disabled_domains = ["std"]
41
41
 
42
42
  templates_path = ["_templates"]
43
43
 
@@ -6,6 +6,9 @@ Configuration
6
6
  ==============
7
7
 
8
8
  ========================== =====================================================================
9
+ ``ADMIN_ALL_ACCESSED`` Set to ``True`` to enable access within admin views for all users,
10
+ otherwise, only the users with access role can access admin views.
11
+ Default is ``False``.
9
12
  ``BABEL_ACCEPT_LANGUAGES`` Set to ``en;zh`` to bebel's accept languages.
10
13
  Default is ``None``.
11
14
  ``BABEL_DEFAULT_TIMEZONE`` Set to ``Asia/Shanghai`` to babel's default timezone.
@@ -69,28 +69,3 @@ pybabel
69
69
 
70
70
  $ pybabel compile -d src/flask_exts/translations -D messages
71
71
 
72
-
73
- tests
74
- -----
75
-
76
- .. code-block:: console
77
-
78
-
79
- cd tests/
80
-
81
- # extract messages from source files and generate a POT file
82
- pybabel extract -o translations/messages.pot .
83
-
84
- # create new message catalogs from a POT file
85
- pybabel init -i translations/messages.pot -d translations -l en
86
- pybabel init -i translations/messages.pot -d translations -l zh_CN
87
-
88
- # update existing message catalogs from a POT file
89
- pybabel update -i translations/messages.pot -d translations
90
-
91
- # edit
92
- # open the '.po' file
93
-
94
- # compile message catalogs to MO files
95
-
96
- pybabel compile -d translations
@@ -10,6 +10,7 @@ Welcome to Flask-Exts's documentation!
10
10
 
11
11
  Flask-Exts is mainly inspired by:
12
12
 
13
+ - `Bootstrap <https://getbootstrap.com/>`_
13
14
  - `Flask-Admin <https://github.com/pallets-eco/flask-admin/>`_
14
15
  - `Flask-Security <https://github.com/pallets-eco/flask-security/>`_
15
16
 
@@ -42,10 +43,20 @@ More examples, please click :doc:`examples`.
42
43
 
43
44
  configure
44
45
  develop
45
- user
46
46
  examples
47
47
  changes
48
48
 
49
+ API Reference
50
+ -------------
51
+
52
+ If you are looking for information on a specific function, class or
53
+ method, this part of the documentation is for you.
54
+
55
+ .. toctree::
56
+ :maxdepth: 1
57
+
58
+ api
59
+
49
60
  Indices and tables
50
61
  ==================
51
62
 
@@ -20,61 +20,61 @@ Run the examples
20
20
 
21
21
  Type the command in the terminal, then go to http://localhost:5000.
22
22
 
23
- Start
24
- ----------
25
-
26
23
  simple
27
24
  ---------
28
25
 
29
- run only one file.
30
-
31
26
  .. code-block:: bash
32
27
 
33
28
  $ python simple.py
34
29
 
35
- demo
30
+ rediscli
36
31
  -----------------
37
32
 
38
- With sqlite db.
33
+ Use with mock redis server.
39
34
 
40
35
  .. code-block:: bash
41
36
 
42
- $ flask --app demo run --debug --port=5000
43
-
44
- fileadmin
45
- -----------------
37
+ $ python rediscli.py
46
38
 
47
- .. code-block:: bash
48
-
49
- $ flask --app fileadmin run
39
+ go to http://localhost:5000/admin/rediscli/
50
40
 
51
- rediscli
52
- -----------------
41
+ if you want to use real redis server, then do this:
53
42
 
54
- First install redis,
43
+ 1. First install redis,
55
44
 
56
45
  .. code-block:: bash
57
46
 
58
47
  $ pip install redis
59
48
 
60
- then run:
49
+ 2. Modify code in ``rediscli.py``
50
+
51
+ .. code-block:: python
52
+
53
+ # from flask_exts.views.rediscli.mock_redis import MockRedis as Redis
54
+ from redis import Redis
55
+
56
+ 3. At last, run ``python rediscli.py``
57
+
58
+ demo
59
+ -----------------
60
+
61
+ Default admin user is ``admin``, password is ``admin``.
61
62
 
62
63
  .. code-block:: bash
63
64
 
64
- $ flask --app rediscli run
65
+ $ flask --app demo run
65
66
 
66
- Bootstrap 4
67
+ fileadmin
67
68
  -----------------
68
69
 
69
70
  .. code-block:: bash
71
+
72
+ $ flask --app fileadmin run
70
73
 
71
- $ flask --app bootstrap4/app.py run
72
-
73
- Bootstrap 5
74
+ Bootstrap
74
75
  -----------------
75
76
 
76
77
  .. code-block:: bash
77
-
78
- $ flask --app bootstrap5/app.py run
79
78
 
79
+ $ flask --app bootstrap run
80
80
 
@@ -0,0 +1,113 @@
1
+ from wtforms.validators import DataRequired, Length, Regexp
2
+ from wtforms.fields import *
3
+ from flask_exts.template.fields import SwitchField
4
+ from flask_exts.template.form.flask_form import FlaskForm
5
+
6
+
7
+ class ExampleForm(FlaskForm):
8
+ """An example form that contains all the supported bootstrap style form fields."""
9
+
10
+ date = DateField(
11
+ description="We'll never share your email with anyone else."
12
+ ) # add help text with `description`
13
+ datetime = DateTimeField(
14
+ render_kw={"placeholder": "this is a placeholder"}
15
+ ) # add HTML attribute with `render_kw`
16
+ datetime_local = DateTimeLocalField()
17
+ time = TimeField()
18
+ month = MonthField()
19
+ color = ColorField()
20
+ floating = FloatField()
21
+ integer = IntegerField()
22
+ decimal_slider = DecimalRangeField()
23
+ integer_slider = IntegerRangeField(render_kw={"min": "0", "max": "4"})
24
+ email = EmailField()
25
+ url = URLField()
26
+ telephone = TelField()
27
+ image = FileField(
28
+ render_kw={"class": "my-class"}, validators=[Regexp(r".+\.jpg$")]
29
+ ) # add your class
30
+ option = RadioField(
31
+ choices=[("dog", "Dog"), ("cat", "Cat"), ("bird", "Bird"), ("alien", "Alien")]
32
+ )
33
+ select = SelectField(
34
+ choices=[("dog", "Dog"), ("cat", "Cat"), ("bird", "Bird"), ("alien", "Alien")]
35
+ )
36
+ select_multiple = SelectMultipleField(
37
+ choices=[("dog", "Dog"), ("cat", "Cat"), ("bird", "Bird"), ("alien", "Alien")]
38
+ )
39
+ bio = TextAreaField()
40
+ search = SearchField() # will autocapitalize on mobile
41
+ title = StringField() # will not autocapitalize on mobile
42
+ secret = PasswordField()
43
+ remember = BooleanField("Remember me")
44
+ submit = SubmitField()
45
+
46
+
47
+ class HelloForm(FlaskForm):
48
+ username = StringField("Username", validators=[DataRequired(), Length(1, 20)])
49
+ password = PasswordField("Password", validators=[DataRequired(), Length(8, 150)])
50
+ remember = BooleanField("Remember me")
51
+ submit = SubmitField()
52
+
53
+
54
+ class ButtonForm(FlaskForm):
55
+ username = StringField("Username", validators=[DataRequired(), Length(1, 20)])
56
+ confirm = SwitchField("Confirmation")
57
+ submit = SubmitField()
58
+ delete = SubmitField()
59
+ cancel = SubmitField()
60
+
61
+
62
+ class TelephoneForm(FlaskForm):
63
+ country_code = IntegerField("Country Code")
64
+ area_code = IntegerField("Area Code/Exchange")
65
+ number = StringField("Number")
66
+
67
+
68
+ class IMForm(FlaskForm):
69
+ protocol = SelectField(choices=[("aim", "AIM"), ("msn", "MSN")])
70
+ username = StringField()
71
+
72
+
73
+ class ContactForm(FlaskForm):
74
+ first_name = StringField()
75
+ last_name = StringField()
76
+ mobile_phone = FormField(TelephoneForm)
77
+ office_phone = FormField(TelephoneForm)
78
+ emails = FieldList(StringField("Email"), min_entries=3)
79
+ im_accounts = FieldList(FormField(IMForm), min_entries=2)
80
+
81
+
82
+ class BootswatchForm(FlaskForm):
83
+ """Form to test Bootswatch."""
84
+
85
+ # DO NOT EDIT! Use list-bootswatch.py to generate the Radiofield below.
86
+ theme_name = RadioField(
87
+ default="default",
88
+ choices=[
89
+ ("default", "none"),
90
+ ("cerulean", "Cerulean 4.6.1"),
91
+ ("cosmo", "Cosmo 4.6.1"),
92
+ ("cyborg", "Cyborg 4.6.1"),
93
+ ("darkly", "Darkly 4.6.1"),
94
+ ("flatly", "Flatly 4.6.1"),
95
+ ("journal", "Journal 4.6.1"),
96
+ ("litera", "Litera 4.6.1"),
97
+ ("lumen", "Lumen 4.6.1"),
98
+ ("lux", "Lux 4.6.1"),
99
+ ("materia", "Materia 4.6.1"),
100
+ ("minty", "Minty 4.6.1"),
101
+ ("pulse", "Pulse 4.6.1"),
102
+ ("sandstone", "Sandstone 4.6.1"),
103
+ ("simplex", "Simplex 4.6.1"),
104
+ ("sketchy", "Sketchy 4.6.1"),
105
+ ("slate", "Slate 4.6.1"),
106
+ ("solar", "Solar 4.6.1"),
107
+ ("spacelab", "Spacelab 4.6.1"),
108
+ ("superhero", "Superhero 4.6.1"),
109
+ ("united", "United 4.6.1"),
110
+ ("yeti", "Yeti 4.6.1"),
111
+ ],
112
+ )
113
+ submit = SubmitField()
@@ -0,0 +1,46 @@
1
+ from flask import Flask
2
+ from flask_exts import Exts
3
+ from .models import db, Message, MyCategory
4
+ from .view import BootstrapView
5
+
6
+ def create_app():
7
+ app = Flask(__name__)
8
+ app.config["SECRET_KEY"] = "dev"
9
+ init_app(app)
10
+ return app
11
+
12
+
13
+ def init_app(app: Flask):
14
+ exts = Exts()
15
+ exts.init_app(app)
16
+ exts.admin.add_view(BootstrapView())
17
+
18
+ with app.app_context():
19
+ db.drop_all()
20
+ db.create_all()
21
+
22
+ for i in range(20):
23
+ url = 'mailto:x@t.me'
24
+ if i % 7 == 0:
25
+ url = 'www.t.me'
26
+ elif i % 7 == 1:
27
+ url = 'https://t.me'
28
+ elif i % 7 == 2:
29
+ url = 'http://t.me'
30
+ elif i % 7 == 3:
31
+ url = 'http://t'
32
+ elif i % 7 == 4:
33
+ url = 'http://'
34
+ elif i % 7 == 5:
35
+ url = 'x@t.me'
36
+ m = Message(
37
+ text=f'Message {i+1} {url}',
38
+ author=f'Author {i+1}',
39
+ create_time=4321*(i+1)
40
+ )
41
+ if i % 2:
42
+ m.category = MyCategory.CAT2
43
+ if i % 4:
44
+ m.draft = True
45
+ db.session.add(m)
46
+ db.session.commit()
@@ -0,0 +1,19 @@
1
+ from enum import Enum
2
+ from sqlalchemy.orm import Mapped
3
+ from sqlalchemy.orm import mapped_column
4
+ from flask_exts.datastore.sqla import db
5
+
6
+
7
+ class MyCategory(Enum):
8
+ CAT1 = "Category 1"
9
+ CAT2 = "Category 2"
10
+
11
+
12
+ class Message(db.Model):
13
+ id: Mapped[int] = mapped_column(primary_key=True)
14
+ text: Mapped[str] = mapped_column(nullable=False)
15
+ author: Mapped[str] = mapped_column(nullable=False)
16
+ category: Mapped[MyCategory] = mapped_column(default=MyCategory.CAT1, nullable=False)
17
+ draft: Mapped[bool] = mapped_column(default=False, nullable=False)
18
+ create_time: Mapped[int] = mapped_column(nullable=False, unique=True)
19
+
@@ -2,5 +2,5 @@
2
2
 
3
3
  {% block content %}
4
4
  The messages above were rendered with the following code:
5
- <pre>{% raw %}{{ render_messages(container=False, dismissible=True) }}{% endraw %}</pre>
5
+ <pre>{% raw %}{{ render_messages() }}{% endraw %}</pre>
6
6
  {% endblock %}
@@ -11,14 +11,14 @@ Output: {{ render_icon('heart-fill') }}
11
11
 
12
12
  <h2>Icon with custom size</h2>
13
13
  <pre>{% raw %}{{ render_icon('heart', 32) }}{% endraw %}</pre>
14
- Output: {{ render_icon('heart', 'h1', size=32) }}
14
+ Output: {{ render_icon('heart', size=32) }}
15
15
 
16
16
  <h2>Icon with custom size and Bootstrap color</h2>
17
17
  <pre>{% raw %}{{ render_icon('heart', 25, 'primary') }}{% endraw %}</pre>
18
- Output: {{ render_icon('heart', size=25, icon_class='text-primary') }}
18
+ Output: {{ render_icon('heart', size=25, color='primary') }}
19
19
 
20
- <pre>{% raw %}{{ render_icon('heart-fill', 25, icon_class='text-primary') }}{% endraw %}</pre>
21
- Output: {{ render_icon('heart-fill', size=25, icon_class='text-primary') }}
20
+ <pre>{% raw %}{{ render_icon('heart-fill', 25, color='primary') }}{% endraw %}</pre>
21
+ Output: {{ render_icon('heart-fill', size=25, color='primary') }}
22
22
 
23
23
  <h2>Icon with custom size and custom color</h2>
24
24
  <pre>{% raw %}{{ render_icon('heart', '2em', 'red') }}{% endraw %}</pre>