flask-appbuilder 3.2.1rc1__py3-none-any.whl → 5.0.2rc1__py3-none-any.whl

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 (228) hide show
  1. flask_appbuilder/__init__.py +2 -3
  2. flask_appbuilder/_compat.py +0 -1
  3. flask_appbuilder/actions.py +14 -14
  4. flask_appbuilder/api/__init__.py +741 -527
  5. flask_appbuilder/api/convert.py +104 -98
  6. flask_appbuilder/api/manager.py +14 -8
  7. flask_appbuilder/api/schemas.py +12 -1
  8. flask_appbuilder/babel/manager.py +12 -16
  9. flask_appbuilder/base.py +353 -280
  10. flask_appbuilder/basemanager.py +1 -1
  11. flask_appbuilder/baseviews.py +241 -164
  12. flask_appbuilder/charts/jsontools.py +10 -10
  13. flask_appbuilder/charts/views.py +56 -60
  14. flask_appbuilder/cli.py +115 -70
  15. flask_appbuilder/const.py +52 -52
  16. flask_appbuilder/exceptions.py +67 -5
  17. flask_appbuilder/fields.py +32 -23
  18. flask_appbuilder/fieldwidgets.py +34 -27
  19. flask_appbuilder/filemanager.py +33 -45
  20. flask_appbuilder/filters.py +11 -13
  21. flask_appbuilder/forms.py +31 -35
  22. flask_appbuilder/hooks.py +90 -0
  23. flask_appbuilder/menu.py +35 -10
  24. flask_appbuilder/models/base.py +47 -57
  25. flask_appbuilder/models/decorators.py +13 -13
  26. flask_appbuilder/models/filters.py +42 -38
  27. flask_appbuilder/models/generic/__init__.py +29 -29
  28. flask_appbuilder/models/generic/filters.py +11 -3
  29. flask_appbuilder/models/generic/interface.py +1 -3
  30. flask_appbuilder/models/group.py +37 -39
  31. flask_appbuilder/models/mixins.py +22 -18
  32. flask_appbuilder/models/sqla/__init__.py +19 -72
  33. flask_appbuilder/models/sqla/base.py +24 -0
  34. flask_appbuilder/models/sqla/base_legacy.py +132 -0
  35. flask_appbuilder/models/sqla/filters.py +132 -19
  36. flask_appbuilder/models/sqla/interface.py +390 -276
  37. flask_appbuilder/security/api.py +31 -35
  38. flask_appbuilder/security/decorators.py +181 -83
  39. flask_appbuilder/security/forms.py +20 -31
  40. flask_appbuilder/security/manager.py +715 -489
  41. flask_appbuilder/security/registerviews.py +29 -112
  42. flask_appbuilder/security/schemas.py +43 -0
  43. flask_appbuilder/security/sqla/apis/__init__.py +8 -0
  44. flask_appbuilder/security/sqla/apis/group/__init__.py +1 -0
  45. flask_appbuilder/security/sqla/apis/group/api.py +227 -0
  46. flask_appbuilder/security/sqla/apis/group/schema.py +73 -0
  47. flask_appbuilder/security/sqla/apis/permission/__init__.py +1 -0
  48. flask_appbuilder/security/sqla/apis/permission/api.py +19 -0
  49. flask_appbuilder/security/sqla/apis/permission_view_menu/__init__.py +1 -0
  50. flask_appbuilder/security/sqla/apis/permission_view_menu/api.py +16 -0
  51. flask_appbuilder/security/sqla/apis/role/__init__.py +1 -0
  52. flask_appbuilder/security/sqla/apis/role/api.py +306 -0
  53. flask_appbuilder/security/sqla/apis/role/schema.py +27 -0
  54. flask_appbuilder/security/sqla/apis/user/__init__.py +1 -0
  55. flask_appbuilder/security/sqla/apis/user/api.py +292 -0
  56. flask_appbuilder/security/sqla/apis/user/schema.py +97 -0
  57. flask_appbuilder/security/sqla/apis/user/validator.py +27 -0
  58. flask_appbuilder/security/sqla/apis/view_menu/__init__.py +1 -0
  59. flask_appbuilder/security/sqla/apis/view_menu/api.py +18 -0
  60. flask_appbuilder/security/sqla/manager.py +421 -203
  61. flask_appbuilder/security/sqla/models.py +192 -57
  62. flask_appbuilder/security/utils.py +9 -0
  63. flask_appbuilder/security/views.py +232 -229
  64. flask_appbuilder/static/.DS_Store +0 -0
  65. flask_appbuilder/static/appbuilder/css/ab.css +20 -12
  66. flask_appbuilder/static/appbuilder/css/bootstrap-datepicker/bootstrap-datepicker3.min.css +7 -0
  67. flask_appbuilder/static/appbuilder/css/bootstrap.min.css.map +1 -0
  68. flask_appbuilder/static/appbuilder/css/flags/flags16.css +249 -245
  69. flask_appbuilder/static/appbuilder/css/fontawesome/all.min.css +6 -0
  70. flask_appbuilder/static/appbuilder/css/fontawesome/brands.min.css +6 -0
  71. flask_appbuilder/static/appbuilder/css/fontawesome/fontawesome.min.css +6 -0
  72. flask_appbuilder/static/appbuilder/css/fontawesome/regular.min.css +6 -0
  73. flask_appbuilder/static/appbuilder/css/fontawesome/solid.min.css +6 -0
  74. flask_appbuilder/static/appbuilder/css/fontawesome/svg-with-js.min.css +6 -0
  75. flask_appbuilder/static/appbuilder/css/fontawesome/v4-font-face.min.css +6 -0
  76. flask_appbuilder/static/appbuilder/css/fontawesome/v4-shims.min.css +6 -0
  77. flask_appbuilder/static/appbuilder/css/fontawesome/v5-font-face.min.css +6 -0
  78. flask_appbuilder/static/appbuilder/css/images/flags16.png +0 -0
  79. flask_appbuilder/static/appbuilder/css/select2/select2-bootstrap.min.css +7 -0
  80. flask_appbuilder/static/appbuilder/css/select2/select2.min.css +1 -0
  81. flask_appbuilder/static/appbuilder/css/swagger/swagger-ui.css +3 -0
  82. flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.ttf +0 -0
  83. flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.woff2 +0 -0
  84. flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.ttf +0 -0
  85. flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.woff2 +0 -0
  86. flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.ttf +0 -0
  87. flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.woff2 +0 -0
  88. flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.ttf +0 -0
  89. flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.woff2 +0 -0
  90. flask_appbuilder/static/appbuilder/js/ab.js +33 -23
  91. flask_appbuilder/static/appbuilder/js/ab_filters.js +91 -84
  92. flask_appbuilder/static/appbuilder/js/bootstrap-datepicker/bootstrap-datepicker.min.js +8 -0
  93. flask_appbuilder/static/appbuilder/js/jquery-latest.js +2 -2
  94. flask_appbuilder/static/appbuilder/js/select2/select2.min.js +2 -0
  95. flask_appbuilder/static/appbuilder/js/swagger-ui-bundle.js +3 -0
  96. flask_appbuilder/templates/appbuilder/baselib.html +9 -3
  97. flask_appbuilder/templates/appbuilder/general/lib.html +60 -34
  98. flask_appbuilder/templates/appbuilder/general/model/edit.html +1 -1
  99. flask_appbuilder/templates/appbuilder/general/model/edit_cascade.html +1 -1
  100. flask_appbuilder/templates/appbuilder/general/model/search.html +3 -2
  101. flask_appbuilder/templates/appbuilder/general/model/show.html +1 -1
  102. flask_appbuilder/templates/appbuilder/general/model/show_cascade.html +1 -1
  103. flask_appbuilder/templates/appbuilder/general/security/login_db.html +7 -7
  104. flask_appbuilder/templates/appbuilder/general/security/login_ldap.html +5 -5
  105. flask_appbuilder/templates/appbuilder/general/security/login_oauth.html +24 -49
  106. flask_appbuilder/templates/appbuilder/general/widgets/base_list.html +2 -1
  107. flask_appbuilder/templates/appbuilder/general/widgets/chart.html +4 -2
  108. flask_appbuilder/templates/appbuilder/general/widgets/direct_chart.html +4 -3
  109. flask_appbuilder/templates/appbuilder/general/widgets/multiple_chart.html +3 -2
  110. flask_appbuilder/templates/appbuilder/general/widgets/search.html +11 -10
  111. flask_appbuilder/templates/appbuilder/init.html +37 -43
  112. flask_appbuilder/templates/appbuilder/navbar_menu.html +1 -1
  113. flask_appbuilder/templates/appbuilder/navbar_right.html +2 -2
  114. flask_appbuilder/templates/appbuilder/swagger/swagger.html +22 -19
  115. flask_appbuilder/translations/de/LC_MESSAGES/messages.mo +0 -0
  116. flask_appbuilder/translations/de/LC_MESSAGES/messages.po +305 -161
  117. flask_appbuilder/translations/fa/LC_MESSAGES/messages.mo +0 -0
  118. flask_appbuilder/translations/fa/LC_MESSAGES/messages.po +802 -0
  119. flask_appbuilder/translations/fr/LC_MESSAGES/messages.po +461 -319
  120. flask_appbuilder/translations/pt_BR/LC_MESSAGES/messages.po +650 -650
  121. flask_appbuilder/translations/ru/LC_MESSAGES/messages.po +1 -1
  122. flask_appbuilder/translations/sl/LC_MESSAGES/messages.mo +0 -0
  123. flask_appbuilder/translations/sl/LC_MESSAGES/messages.po +690 -0
  124. flask_appbuilder/translations/tr/LC_MESSAGES/messages.mo +0 -0
  125. flask_appbuilder/translations/tr/LC_MESSAGES/messages.po +1015 -0
  126. flask_appbuilder/upload.py +20 -22
  127. flask_appbuilder/urltools.py +39 -19
  128. flask_appbuilder/utils/base.py +76 -0
  129. flask_appbuilder/utils/legacy.py +33 -0
  130. flask_appbuilder/utils/limit.py +20 -0
  131. flask_appbuilder/validators.py +73 -14
  132. flask_appbuilder/views.py +75 -424
  133. flask_appbuilder/widgets.py +50 -51
  134. {Flask_AppBuilder-3.2.1rc1.dist-info → flask_appbuilder-5.0.2rc1.dist-info}/METADATA +36 -76
  135. flask_appbuilder-5.0.2rc1.dist-info/RECORD +240 -0
  136. {Flask_AppBuilder-3.2.1rc1.dist-info → flask_appbuilder-5.0.2rc1.dist-info}/WHEEL +1 -1
  137. flask_appbuilder-5.0.2rc1.dist-info/entry_points.txt +2 -0
  138. Flask_AppBuilder-3.2.1rc1.dist-info/RECORD +0 -270
  139. Flask_AppBuilder-3.2.1rc1.dist-info/entry_points.txt +0 -6
  140. flask_appbuilder/console.py +0 -426
  141. flask_appbuilder/models/mongoengine/__init__.py +0 -0
  142. flask_appbuilder/models/mongoengine/fields.py +0 -65
  143. flask_appbuilder/models/mongoengine/filters.py +0 -145
  144. flask_appbuilder/models/mongoengine/interface.py +0 -328
  145. flask_appbuilder/security/mongoengine/__init__.py +0 -0
  146. flask_appbuilder/security/mongoengine/manager.py +0 -402
  147. flask_appbuilder/security/mongoengine/models.py +0 -120
  148. flask_appbuilder/static/appbuilder/css/font-awesome.min.css +0 -4
  149. flask_appbuilder/static/appbuilder/datepicker/bootstrap-datepicker.css +0 -9
  150. flask_appbuilder/static/appbuilder/datepicker/bootstrap-datepicker.js +0 -28
  151. flask_appbuilder/static/appbuilder/fonts/FontAwesome.otf +0 -0
  152. flask_appbuilder/static/appbuilder/fonts/fontawesome-webfont.eot +0 -0
  153. flask_appbuilder/static/appbuilder/fonts/fontawesome-webfont.svg +0 -2671
  154. flask_appbuilder/static/appbuilder/fonts/fontawesome-webfont.ttf +0 -0
  155. flask_appbuilder/static/appbuilder/fonts/fontawesome-webfont.woff +0 -0
  156. flask_appbuilder/static/appbuilder/fonts/fontawesome-webfont.woff2 +0 -0
  157. flask_appbuilder/static/appbuilder/img/aol.png +0 -0
  158. flask_appbuilder/static/appbuilder/img/flags/flags16.png +0 -0
  159. flask_appbuilder/static/appbuilder/img/flickr.png +0 -0
  160. flask_appbuilder/static/appbuilder/img/google.png +0 -0
  161. flask_appbuilder/static/appbuilder/img/myopenid.png +0 -0
  162. flask_appbuilder/static/appbuilder/img/yahoo.png +0 -0
  163. flask_appbuilder/static/appbuilder/js/_google_charts.js +0 -39
  164. flask_appbuilder/static/appbuilder/js/html5shiv.js +0 -8
  165. flask_appbuilder/static/appbuilder/js/respond.min.js +0 -6
  166. flask_appbuilder/static/appbuilder/select2/select2-spinner.gif +0 -0
  167. flask_appbuilder/static/appbuilder/select2/select2.css +0 -1205
  168. flask_appbuilder/static/appbuilder/select2/select2.js +0 -23
  169. flask_appbuilder/static/appbuilder/select2/select2.png +0 -0
  170. flask_appbuilder/static/appbuilder/select2/select2x2.png +0 -0
  171. flask_appbuilder/templates/appbuilder/general/security/login_oid.html +0 -129
  172. flask_appbuilder/templates/appbuilder/general/security/resetpassword.html +0 -29
  173. flask_appbuilder/tests/__init__.py +0 -0
  174. flask_appbuilder/tests/__pycache__/__init__.cpython-36.pyc +0 -0
  175. flask_appbuilder/tests/__pycache__/__init__.cpython-37.pyc +0 -0
  176. flask_appbuilder/tests/__pycache__/_test_auth_ldap.cpython-37.pyc +0 -0
  177. flask_appbuilder/tests/__pycache__/_test_auth_oauth.cpython-37.pyc +0 -0
  178. flask_appbuilder/tests/__pycache__/_test_ldapsearch.cpython-36.pyc +0 -0
  179. flask_appbuilder/tests/__pycache__/_test_oauth_registration_role.cpython-36.pyc +0 -0
  180. flask_appbuilder/tests/__pycache__/base.cpython-36.pyc +0 -0
  181. flask_appbuilder/tests/__pycache__/base.cpython-37.pyc +0 -0
  182. flask_appbuilder/tests/__pycache__/config_api.cpython-36.pyc +0 -0
  183. flask_appbuilder/tests/__pycache__/config_api.cpython-37.pyc +0 -0
  184. flask_appbuilder/tests/__pycache__/const.cpython-36.pyc +0 -0
  185. flask_appbuilder/tests/__pycache__/const.cpython-37.pyc +0 -0
  186. flask_appbuilder/tests/__pycache__/test_0_fixture.cpython-36.pyc +0 -0
  187. flask_appbuilder/tests/__pycache__/test_0_fixture.cpython-37.pyc +0 -0
  188. flask_appbuilder/tests/__pycache__/test_api.cpython-36.pyc +0 -0
  189. flask_appbuilder/tests/__pycache__/test_api.cpython-37.pyc +0 -0
  190. flask_appbuilder/tests/__pycache__/test_fab_cli.cpython-36.pyc +0 -0
  191. flask_appbuilder/tests/__pycache__/test_fab_cli.cpython-37.pyc +0 -0
  192. flask_appbuilder/tests/__pycache__/test_menu.cpython-36.pyc +0 -0
  193. flask_appbuilder/tests/__pycache__/test_menu.cpython-37.pyc +0 -0
  194. flask_appbuilder/tests/__pycache__/test_mongoengine.cpython-36.pyc +0 -0
  195. flask_appbuilder/tests/__pycache__/test_mvc.cpython-36.pyc +0 -0
  196. flask_appbuilder/tests/__pycache__/test_mvc.cpython-37.pyc +0 -0
  197. flask_appbuilder/tests/__pycache__/test_sqlalchemy.cpython-36.pyc +0 -0
  198. flask_appbuilder/tests/__pycache__/test_sqlalchemy.cpython-37.pyc +0 -0
  199. flask_appbuilder/tests/_test_auth_ldap.py +0 -1045
  200. flask_appbuilder/tests/_test_auth_oauth.py +0 -419
  201. flask_appbuilder/tests/_test_ldapsearch.py +0 -135
  202. flask_appbuilder/tests/_test_oauth_registration_role.py +0 -59
  203. flask_appbuilder/tests/app.db +0 -0
  204. flask_appbuilder/tests/base.py +0 -90
  205. flask_appbuilder/tests/config_api.py +0 -21
  206. flask_appbuilder/tests/const.py +0 -9
  207. flask_appbuilder/tests/mongoengine/__init__.py +0 -0
  208. flask_appbuilder/tests/mongoengine/__pycache__/__init__.cpython-36.pyc +0 -0
  209. flask_appbuilder/tests/mongoengine/__pycache__/__init__.cpython-37.pyc +0 -0
  210. flask_appbuilder/tests/mongoengine/__pycache__/models.cpython-36.pyc +0 -0
  211. flask_appbuilder/tests/mongoengine/models.py +0 -41
  212. flask_appbuilder/tests/sqla/__init__.py +0 -0
  213. flask_appbuilder/tests/sqla/__pycache__/__init__.cpython-36.pyc +0 -0
  214. flask_appbuilder/tests/sqla/__pycache__/__init__.cpython-37.pyc +0 -0
  215. flask_appbuilder/tests/sqla/__pycache__/models.cpython-36.pyc +0 -0
  216. flask_appbuilder/tests/sqla/__pycache__/models.cpython-37.pyc +0 -0
  217. flask_appbuilder/tests/sqla/models.py +0 -340
  218. flask_appbuilder/tests/test_0_fixture.py +0 -39
  219. flask_appbuilder/tests/test_api.py +0 -2790
  220. flask_appbuilder/tests/test_fab_cli.py +0 -72
  221. flask_appbuilder/tests/test_menu.py +0 -122
  222. flask_appbuilder/tests/test_mongoengine.py +0 -572
  223. flask_appbuilder/tests/test_mvc.py +0 -1710
  224. flask_appbuilder/tests/test_sqlalchemy.py +0 -24
  225. flask_appbuilder/translations/__pycache__/__init__.cpython-36.pyc +0 -0
  226. flask_appbuilder/translations/es/LC_MESSAGES/messages.po~ +0 -582
  227. {Flask_AppBuilder-3.2.1rc1.dist-info → flask_appbuilder-5.0.2rc1.dist-info}/LICENSE +0 -0
  228. {Flask_AppBuilder-3.2.1rc1.dist-info → flask_appbuilder-5.0.2rc1.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@ Created on Oct 12, 2013
6
6
 
7
7
  import logging
8
8
 
9
- from flask.globals import _request_ctx_stack
9
+ from flask import current_app
10
10
 
11
11
  from ._compat import as_unicode
12
12
 
@@ -16,9 +16,9 @@ log = logging.getLogger(__name__)
16
16
 
17
17
  class RenderTemplateWidget(object):
18
18
  """
19
- Base template for every widget
20
- Enables the possibility of rendering a template
21
- inside a template with run time options
19
+ Base template for every widget
20
+ Enables the possibility of rendering a template
21
+ inside a template with run time options
22
22
  """
23
23
 
24
24
  template = "appbuilder/general/widgets/render.html"
@@ -28,8 +28,7 @@ class RenderTemplateWidget(object):
28
28
  self.template_args = kwargs
29
29
 
30
30
  def __call__(self, **kwargs):
31
- ctx = _request_ctx_stack.top
32
- jinja_env = ctx.app.jinja_env
31
+ jinja_env = current_app.jinja_env
33
32
 
34
33
  template = jinja_env.get_template(self.template)
35
34
  args = self.template_args.copy()
@@ -39,12 +38,12 @@ class RenderTemplateWidget(object):
39
38
 
40
39
  class FormWidget(RenderTemplateWidget):
41
40
  """
42
- FormWidget
41
+ FormWidget
43
42
 
44
- form = None
45
- include_cols = []
46
- exclude_cols = []
47
- fieldsets = []
43
+ form = None
44
+ include_cols = []
45
+ exclude_cols = []
46
+ fieldsets = []
48
47
  """
49
48
 
50
49
  template = "appbuilder/general/widgets/form.html"
@@ -52,12 +51,12 @@ class FormWidget(RenderTemplateWidget):
52
51
 
53
52
  class FormVerticalWidget(RenderTemplateWidget):
54
53
  """
55
- FormWidget
54
+ FormWidget
56
55
 
57
- form = None
58
- include_cols = []
59
- exclude_cols = []
60
- fieldsets = []
56
+ form = None
57
+ include_cols = []
58
+ exclude_cols = []
59
+ fieldsets = []
61
60
  """
62
61
 
63
62
  template = "appbuilder/general/widgets/form_vertical.html"
@@ -65,12 +64,12 @@ class FormVerticalWidget(RenderTemplateWidget):
65
64
 
66
65
  class FormHorizontalWidget(RenderTemplateWidget):
67
66
  """
68
- FormWidget
67
+ FormWidget
69
68
 
70
- form = None
71
- include_cols = []
72
- exclude_cols = []
73
- fieldsets = []
69
+ form = None
70
+ include_cols = []
71
+ exclude_cols = []
72
+ fieldsets = []
74
73
  """
75
74
 
76
75
  template = "appbuilder/general/widgets/form_horizontal.html"
@@ -78,12 +77,12 @@ class FormHorizontalWidget(RenderTemplateWidget):
78
77
 
79
78
  class FormInlineWidget(RenderTemplateWidget):
80
79
  """
81
- FormWidget
80
+ FormWidget
82
81
 
83
- form = None
84
- include_cols = []
85
- exclude_cols = []
86
- fieldsets = []
82
+ form = None
83
+ include_cols = []
84
+ exclude_cols = []
85
+ fieldsets = []
87
86
  """
88
87
 
89
88
  template = "appbuilder/general/widgets/form_inline.html"
@@ -102,7 +101,7 @@ class SearchWidget(FormWidget):
102
101
  return super(SearchWidget, self).__init__(**kwargs)
103
102
 
104
103
  def __call__(self, **kwargs):
105
- """ create dict labels based on form """
104
+ """create dict labels based on form"""
106
105
  """ create dict of form widgets """
107
106
  """ create dict of possible filters """
108
107
  """ create list of active filters """
@@ -124,16 +123,16 @@ class SearchWidget(FormWidget):
124
123
 
125
124
  class ShowWidget(RenderTemplateWidget):
126
125
  """
127
- ShowWidget implements a template as an widget
128
- it takes the following arguments
129
-
130
- pk = None
131
- label_columns = []
132
- include_columns = []
133
- value_columns = []
134
- actions = None
135
- fieldsets = []
136
- modelview_name = ''
126
+ ShowWidget implements a template as an widget
127
+ it takes the following arguments
128
+
129
+ pk = None
130
+ label_columns = []
131
+ include_columns = []
132
+ value_columns = []
133
+ actions = None
134
+ fieldsets = []
135
+ modelview_name = ''
137
136
  """
138
137
 
139
138
  template = "appbuilder/general/widgets/show.html"
@@ -149,20 +148,20 @@ class ShowVerticalWidget(RenderTemplateWidget):
149
148
 
150
149
  class ListWidget(RenderTemplateWidget):
151
150
  """
152
- List Widget implements a Template as an widget.
153
- It takes the following arguments
154
-
155
- label_columns = []
156
- include_columns = []
157
- value_columns = []
158
- order_columns = []
159
- page = None
160
- page_size = None
161
- count = 0
162
- pks = []
163
- actions = None
164
- filters = {}
165
- modelview_name = ''
151
+ List Widget implements a Template as an widget.
152
+ It takes the following arguments
153
+
154
+ label_columns = []
155
+ include_columns = []
156
+ value_columns = []
157
+ order_columns = []
158
+ page = None
159
+ page_size = None
160
+ count = 0
161
+ pks = []
162
+ actions = None
163
+ filters = {}
164
+ modelview_name = ''
166
165
  """
167
166
 
168
167
  template = "appbuilder/general/widgets/list.html"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
- Name: Flask-AppBuilder
3
- Version: 3.2.1rc1
2
+ Name: flask-appbuilder
3
+ Version: 5.0.2rc1
4
4
  Summary: Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more.
5
5
  Home-page: https://github.com/dpgaspar/flask-appbuilder/
6
6
  Author: Daniel Vaz Gaspar
@@ -12,34 +12,42 @@ Classifier: Environment :: Web Environment
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: BSD License
14
14
  Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python
16
- Classifier: Programming Language :: Python :: 3.6
17
- Classifier: Programming Language :: Python :: 3.7
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
18
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
- Requires-Python: ~=3.6
21
+ Requires-Python: ~=3.7
20
22
  Description-Content-Type: text/x-rst
21
- Requires-Dist: apispec[yaml] (<4,>=3.3)
22
- Requires-Dist: colorama (<1,>=0.3.9)
23
- Requires-Dist: click (<8,>=6.7)
24
- Requires-Dist: email-validator (<2,>=1.0.5)
25
- Requires-Dist: Flask (<2,>=0.12)
26
- Requires-Dist: Flask-Babel (<2,>=1)
27
- Requires-Dist: Flask-Login (<0.5,>=0.3)
28
- Requires-Dist: Flask-OpenID (<2,>=1.2.5)
29
- Requires-Dist: SQLAlchemy (<1.4.0)
30
- Requires-Dist: Flask-SQLAlchemy (<3,>=2.4)
31
- Requires-Dist: Flask-WTF (<0.15.0,>=0.14.2)
32
- Requires-Dist: Flask-JWT-Extended (<4,>=3.18)
33
- Requires-Dist: jsonschema (<4,>=3.0.1)
34
- Requires-Dist: marshmallow (<4,>=3)
35
- Requires-Dist: marshmallow-enum (<2,>=1.5.1)
36
- Requires-Dist: marshmallow-sqlalchemy (<0.24.0,>=0.22.0)
37
- Requires-Dist: python-dateutil (<3,>=2.3)
38
- Requires-Dist: prison (<1.0.0,>=0.1.3)
39
- Requires-Dist: PyJWT (<2.0.0,>=1.7.1)
40
- Requires-Dist: sqlalchemy-utils (<1,>=0.32.21)
23
+ License-File: LICENSE
24
+ Requires-Dist: apispec[yaml] <7,>=6.0.0
25
+ Requires-Dist: colorama <1,>=0.3.9
26
+ Requires-Dist: click <9,>=8
27
+ Requires-Dist: email-validator >=1.0.5
28
+ Requires-Dist: Flask <4,>=2
29
+ Requires-Dist: Flask-Babel <5,>=3
30
+ Requires-Dist: Flask-Limiter <4,>3
31
+ Requires-Dist: Flask-Login <0.7,>=0.3
32
+ Requires-Dist: Flask-SQLAlchemy <4,>=2.4.0
33
+ Requires-Dist: Flask-WTF <2,>=0.14.2
34
+ Requires-Dist: Flask-JWT-Extended <5.0.0,>=4.0.0
35
+ Requires-Dist: jsonschema <5,>=3
36
+ Requires-Dist: marshmallow <5,>=3.18.0
37
+ Requires-Dist: marshmallow-sqlalchemy <3.0.0,>=0.22.0
38
+ Requires-Dist: python-dateutil <3,>=2.3
39
+ Requires-Dist: prison <1.0.0,>=0.2.1
40
+ Requires-Dist: PyJWT <3.0.0,>=2.0.0
41
+ Requires-Dist: SQLAlchemy <3,>=1.4.0
42
+ Requires-Dist: sqlalchemy-utils <1,>=0.32.21
43
+ Requires-Dist: WTForms <4
44
+ Requires-Dist: werkzeug <4
41
45
  Provides-Extra: jmespath
42
- Requires-Dist: jmespath (>=0.9.5) ; extra == 'jmespath'
46
+ Requires-Dist: jmespath >=0.9.5 ; extra == 'jmespath'
47
+ Provides-Extra: oauth
48
+ Requires-Dist: Authlib <2.0.0,>=0.14 ; extra == 'oauth'
49
+ Provides-Extra: talisman
50
+ Requires-Dist: flask-talisman <2.0,>=1.0.0 ; extra == 'talisman'
43
51
 
44
52
  Flask App Builder
45
53
  =================
@@ -51,7 +59,7 @@ Flask App Builder
51
59
  :alt: PyPI
52
60
  :target: https://pypi.org/project/Flask-AppBuilder/
53
61
 
54
- .. image:: https://img.shields.io/badge/pyversions-3.6%2C3.7-blue.svg
62
+ .. image:: https://img.shields.io/badge/pyversions-3.8%2C%203.9%2C%203.10%2C%203.11%2C%203.12-blue.svg
55
63
  :target: https://www.python.org/
56
64
 
57
65
  .. image:: https://codecov.io/github/dpgaspar/Flask-AppBuilder/coverage.svg?branch=master
@@ -83,52 +91,6 @@ Change Log
83
91
 
84
92
  `Versions <https://github.com/dpgaspar/Flask-AppBuilder/tree/master/CHANGELOG.rst>`_ for further detail on what changed.
85
93
 
86
- BREAKING CHANGE on 3.0.0 (OAuth)
87
-
88
- Major version 3, changed it's **OAuth** dependency from flask-oauth to authlib, due to this OAuth configuration
89
- changed:
90
-
91
- Before:
92
-
93
- .. code-block::
94
-
95
- OAUTH_PROVIDERS = [
96
- {'name':'google', 'icon':'fa-google', 'token_key':'access_token',
97
- 'remote_app': {
98
- 'consumer_key':'GOOGLE KEY',
99
- 'consumer_secret':'GOOGLE SECRET',
100
- 'base_url':'https://www.googleapis.com/oauth2/v2/',
101
- 'request_token_params':{
102
- 'scope': 'email profile'
103
- },
104
- 'request_token_url':None,
105
- 'access_token_url':'https://accounts.google.com/o/oauth2/token',
106
- 'authorize_url':'https://accounts.google.com/o/oauth2/auth'}
107
- }
108
- ]
109
-
110
- Now:
111
-
112
- .. code-block::
113
-
114
- OAUTH_PROVIDERS = [
115
- {'name':'google', 'icon':'fa-google', 'token_key':'access_token',
116
- 'remote_app': {
117
- 'client_id':'GOOGLE KEY',
118
- 'client_secret':'GOOGLE SECRET',
119
- 'api_base_url':'https://www.googleapis.com/oauth2/v2/',
120
- 'client_kwargs':{
121
- 'scope': 'email profile'
122
- },
123
- 'request_token_url':None,
124
- 'access_token_url':'https://accounts.google.com/o/oauth2/token',
125
- 'authorize_url':'https://accounts.google.com/o/oauth2/auth'}
126
- }
127
- ]
128
-
129
- Also make sure you change your dependency for flask-oauth to `authlib <https://github.com/lepture/authlib>`_
130
-
131
-
132
94
  Fixes, Bugs and contributions
133
95
  -----------------------------
134
96
 
@@ -276,5 +238,3 @@ Depends on:
276
238
  - flask-openid
277
239
  - flask-wtform
278
240
  - flask-Babel
279
-
280
-
@@ -0,0 +1,240 @@
1
+ flask_appbuilder/__init__.py,sha256=DZ5Z_ZuBYFwQDQTJvaXQ3UwiC74ue591z3P1gm7QtC0,707
2
+ flask_appbuilder/_compat.py,sha256=Ac71GIwVHe9Pq7i2qDsrGUgL63Vz5oeC4rjhWw0kd6g,1969
3
+ flask_appbuilder/actions.py,sha256=-TqIH159BKCB-ezHJifbubApk2nxjospNYfH_7IgBJ8,1177
4
+ flask_appbuilder/base.py,sha256=m9TTuOoBiU99qHfCPv27RwhVeXu4IjpS2_RzkQJvnFY,25543
5
+ flask_appbuilder/basemanager.py,sha256=MdgZ52RhUBxKWRBxp4a2u41cUy9u7FBYWVHo6FW_RG0,342
6
+ flask_appbuilder/baseviews.py,sha256=z97PnyNnK30MyDU6vnaBdPdZFiXJMK6gMg9oDQJpKfQ,50171
7
+ flask_appbuilder/cli.py,sha256=2QtMfOOVzdtSRBhZKYe1W3T6oFMchoSRv3ptS3U304w,14347
8
+ flask_appbuilder/const.py,sha256=D4ZZN1afeg0OYSiBVqfoFeq0n5ij62e8oYh9kiNmaP0,8378
9
+ flask_appbuilder/exceptions.py,sha256=nA-l9TNFCuKt6KhS0YAF4Tn9Mf2KgNe2lBXykyChf2M,1798
10
+ flask_appbuilder/fields.py,sha256=GyM_EjpP0HL1cpqhVjWludv3uj1VdKImM-kj5fazDk8,9328
11
+ flask_appbuilder/fieldwidgets.py,sha256=XPQPzBsNsTOi848nK2lsQG0knkZzx9kLvujspqL83Qs,6058
12
+ flask_appbuilder/filemanager.py,sha256=DDUL_CQwk8PV5GUzTYLmcwAeWcB6sU3fbCp2you7yiU,8281
13
+ flask_appbuilder/filters.py,sha256=dBBO8p5UwzMkRANWkf9PVAVzWqxqwQXlhErdR8yJrNk,6164
14
+ flask_appbuilder/forms.py,sha256=FaHUlz-VO4n2Jg3cbROqjQxRCSy9xIe1ImOT-53X0Fk,10855
15
+ flask_appbuilder/hooks.py,sha256=WScmGkHUjVsQgxli01fXZ97E0_5toxi8MMcATgrXKDg,3003
16
+ flask_appbuilder/menu.py,sha256=_hNRzwoWmjuB98IqNErrXnQhd-cAr6djZ2LXqRMiB0U,7628
17
+ flask_appbuilder/messages.py,sha256=Q5KXDSZUKV7O26n7BxR6AMDgtoANJZmVGgCyrvTkbK8,290
18
+ flask_appbuilder/upload.py,sha256=q59R4G2U_89SY3Sv4lfoqyppCAOWbR0s9zVJhX2fchM,7537
19
+ flask_appbuilder/urltools.py,sha256=QduNelzv4XSbEq7YoJTNXon3Kv6Rqk5LhOEDbH5wtcE,3178
20
+ flask_appbuilder/validators.py,sha256=dqaK10Qc-TWrHh6tIuZWeSN5bthIsNJeblhdL_GjEOM,3364
21
+ flask_appbuilder/views.py,sha256=hYr69hyS0depKELBghdoNP1naMebwJq67LGw1axa8jU,17620
22
+ flask_appbuilder/widgets.py,sha256=_wvKEHdPx6jfJ4tJ-U-_KY0OFFSwruM3frbvOXBmBdA,4767
23
+ flask_appbuilder/api/__init__.py,sha256=IQeCsrjPsZjKu0PvrJ6JrcwMUzQRjbPRdIcGHLT3OAc,78069
24
+ flask_appbuilder/api/convert.py,sha256=2lLAhbP12mG8zPaMm66V6IzVYw7fK0GNgTE9ZcQfH2g,9917
25
+ flask_appbuilder/api/manager.py,sha256=jhwnZLRMxwXiOG3ZorPILlDWJOJwREGMGEFsOCkxjdM,3453
26
+ flask_appbuilder/api/schemas.py,sha256=QnAvfYqUBZt59cO5U5hxjsw-EpG1ZPdEUQN05ZJ8Cf4,5313
27
+ flask_appbuilder/babel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ flask_appbuilder/babel/manager.py,sha256=Uo5M9c75E_HRaAAJzk4olJT1OLEg9V3UJyknmL07msQ,2297
29
+ flask_appbuilder/babel/views.py,sha256=LWM2xbw-eekTEBCdgB49GkYaEOk95Po5TKF2-Jsyp14,506
30
+ flask_appbuilder/charts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ flask_appbuilder/charts/jsontools.py,sha256=ftlXJd_LP_YFMdtvVPbm54E3de0QbEyHJOZwo9gt6nY,1315
32
+ flask_appbuilder/charts/views.py,sha256=6yumuHzdbZF8UwGLtX0h7-dqqg4ZVP2DPOacL0JRNlE,17437
33
+ flask_appbuilder/charts/widgets.py,sha256=o-VafcXlbiCVbopxxphDUA0Q4WNhxEwY_d5cRlIzk9I,382
34
+ flask_appbuilder/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ flask_appbuilder/models/base.py,sha256=ieR67LYskkIlNISRs1kKLZp7PyoduISbAmPBljuWhfw,8985
36
+ flask_appbuilder/models/decorators.py,sha256=GKPLyW1Q1aN6VPe9JUqvzh-YBUEP7ltKmtgc2pLrEf4,794
37
+ flask_appbuilder/models/filters.py,sha256=kyegHhHDZDBsX_MYLJTOirQysW6AP7Kfo1RXBt86b6s,10309
38
+ flask_appbuilder/models/group.py,sha256=x3wxx7yj5j4bYwS-z3HHvVWTDTyv6GQyZ8ncJSXwCuE,10808
39
+ flask_appbuilder/models/mixins.py,sha256=hFl45jrLz1HAf5ZIR8yZVUBSUAykucpWljZT4D7e9Go,2709
40
+ flask_appbuilder/models/generic/__init__.py,sha256=gU8gN5UYdgSpQ33SHiPm862T5ejcOIUxFEp2Vg1MEeA,12948
41
+ flask_appbuilder/models/generic/filters.py,sha256=RCUqA7QkN2DtJqVARXqmeTNHiVDiAaCLeGFLheIVMK8,2755
42
+ flask_appbuilder/models/generic/interface.py,sha256=CDxMomzeMEiow7CY2SxjBFmkBKgBM2w06htfsK8MjTs,2247
43
+ flask_appbuilder/models/sqla/__init__.py,sha256=wsccXJo1jG7htW6rnwln2nXC_6CjZh7Ujlo5okdoLt8,961
44
+ flask_appbuilder/models/sqla/base.py,sha256=rzmuF2M-YV3nyTdhNf6LCpLvwggKm_L5QIxTlIlnNS8,762
45
+ flask_appbuilder/models/sqla/base_legacy.py,sha256=bvMAD725XzN3FiIwPwGjn6lekMRyAgENhEy_vTftH_s,4014
46
+ flask_appbuilder/models/sqla/filters.py,sha256=Yi7tMPDtTTikoyTQbTN6YhHl-9K9xWsHhcVQsY9YqTI,12846
47
+ flask_appbuilder/models/sqla/interface.py,sha256=3lYml7jjaJS7wKnK_FcKV3Oxv8LK8uPPwJ6yYH5XHsg,40228
48
+ flask_appbuilder/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ flask_appbuilder/security/api.py,sha256=HcVBiiSk9gwsMGJXhvYFSVYdowNOFoDMGyN6DqZOH4s,5229
50
+ flask_appbuilder/security/decorators.py,sha256=0qiJEN5MiSwsxE_LI2vtGkdEoqMH8fqXarlGRk9SAYo,11011
51
+ flask_appbuilder/security/forms.py,sha256=PTJlF4-5HOOSBmfZYq_YWC5QSyEPYsvirLt4oeBgvXQ,3452
52
+ flask_appbuilder/security/manager.py,sha256=hkf59yDN_yrj6hRk9PNrqqBTdlZdu4bk_WAE8A6eSFk,79414
53
+ flask_appbuilder/security/registerviews.py,sha256=cj1KDR6DiZ4WlDfIdrpvBp1Nd_VJ4gyHn6qc_A4HUTM,7512
54
+ flask_appbuilder/security/schemas.py,sha256=keManyd6dh-FXBXGkuvVHLWh-BSYoJytv8pTZ2wTHhY,1359
55
+ flask_appbuilder/security/utils.py,sha256=0PwDO-mB76RLPYlV9tCksChIMRq3zQgwLwiVMJ8jeiU,247
56
+ flask_appbuilder/security/views.py,sha256=yABRVGT8A1Xn_c0-Cs-qlcp3VWUV3zN9Aqde8F4DczM,25570
57
+ flask_appbuilder/security/sqla/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ flask_appbuilder/security/sqla/manager.py,sha256=Pj_HsTC0dxm8P3pDGvs1YkSAgB1HjUuc_3T18uUwoV4,28515
59
+ flask_appbuilder/security/sqla/models.py,sha256=Za5Ec7qRCGA9WAmwGdTzI1OZLTx_ovoH0hUYf1Q1im0,9497
60
+ flask_appbuilder/security/sqla/apis/__init__.py,sha256=BEPT-0mp9n48tq72bZQiES80P0L8vdWYqki3kbhTr-s,512
61
+ flask_appbuilder/security/sqla/apis/group/__init__.py,sha256=6HMo0L15Bw5dZX_1k2eh1zh-3Jg2KuDIlIy8V8R9jCU,40
62
+ flask_appbuilder/security/sqla/apis/group/api.py,sha256=fzJAacrC2_ZL96hc615FjwtZm37v7vQmiEXoPPmq4-w,7694
63
+ flask_appbuilder/security/sqla/apis/group/schema.py,sha256=9zoFsZ_Q9K1H4EDzBgfcbHN55RkakEqyl6s9646q6ek,1944
64
+ flask_appbuilder/security/sqla/apis/permission/__init__.py,sha256=QmBYWNu9LIk0k-qrcYmcSnN3YW6QGK4pky_Ux3V6Vjg,45
65
+ flask_appbuilder/security/sqla/apis/permission/api.py,sha256=Kh-LZ4v4G3y06y-XJyclKj1kjOF4d4HLfTqAK5KY99s,624
66
+ flask_appbuilder/security/sqla/apis/permission_view_menu/__init__.py,sha256=OyBP6HjYzOpSqr63drKLXaqEngIdqPRLueUDJos-UPY,53
67
+ flask_appbuilder/security/sqla/apis/permission_view_menu/api.py,sha256=mthU1QIYTsw0tCWu_M2gr7usEicAVO1izu62wvgSW_0,647
68
+ flask_appbuilder/security/sqla/apis/role/__init__.py,sha256=naG_84Y_PUaV8jvm5AeLJcLxywf_onzcnd5TbLjZuXc,39
69
+ flask_appbuilder/security/sqla/apis/role/api.py,sha256=0IQGTPLGc_mZwc-Jje62_XV4Dy7xDJJRQm_ha0qlFH8,9867
70
+ flask_appbuilder/security/sqla/apis/role/schema.py,sha256=X10OybMs2usEw4mVrRyTi-w9N8YMeLWq5CSkpOHVR8Y,699
71
+ flask_appbuilder/security/sqla/apis/user/__init__.py,sha256=8llQQbFTBj7oaHzMRV-Wd5iBFNOjqAhy1-x3_Ae1gf0,39
72
+ flask_appbuilder/security/sqla/apis/user/api.py,sha256=uXHV5HOWGEIo8o1yaC6vIN1n2QH98F7dlEdL8cgXZqw,9962
73
+ flask_appbuilder/security/sqla/apis/user/schema.py,sha256=VYZq-fwOLyCw1Aur34lNj6wSKq3sMbof6eDpVijL54U,3166
74
+ flask_appbuilder/security/sqla/apis/user/validator.py,sha256=mZ1dHl7X0BSzmafJjzHrPuJWuu1sFLUhZQGjMzE2F6Y,1095
75
+ flask_appbuilder/security/sqla/apis/view_menu/__init__.py,sha256=YPSc8M1MMrcfLg633cJtKY0UPMTQT96V0fcY0GWQ8a0,43
76
+ flask_appbuilder/security/sqla/apis/view_menu/api.py,sha256=g0-OBjpwcF8Pm52QHHOqNENT-2D6WZOs7VA3vvM96Xo,569
77
+ flask_appbuilder/static/.DS_Store,sha256=y0F1REGYdjEP6mkLEXwRfq1bfqn3irXPxwg2W-1pSu0,6148
78
+ flask_appbuilder/static/appbuilder/css/ab.css,sha256=3aeitulGDxslqqEfB0XPFgUYN87Y3SAJYg7zBlJklnc,643
79
+ flask_appbuilder/static/appbuilder/css/bootstrap.min.css,sha256=bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd-tIvLhE,121457
80
+ flask_appbuilder/static/appbuilder/css/bootstrap.min.css.map,sha256=eLWMnr_ULsLGG8T99Gpd-ZjmzZB8dzB2oKbo9Whrr8M,540434
81
+ flask_appbuilder/static/appbuilder/css/bootstrap-datepicker/bootstrap-datepicker3.min.css,sha256=bZRrQVK1rYvxccX8WACyWguD6Ba0h4h_Qs6vmJP2Pws,21102
82
+ flask_appbuilder/static/appbuilder/css/flags/flags16.css,sha256=rIM9XGcQ0BxJPOuKTzXajC4niQoS4cAa1wmN4-8kB28,10904
83
+ flask_appbuilder/static/appbuilder/css/fontawesome/all.min.css,sha256=Z1K5uhUaJXA7Ll0XrZ_0JhX4lAtZFpT6jkKrEDT0drU,101894
84
+ flask_appbuilder/static/appbuilder/css/fontawesome/brands.min.css,sha256=TXCTfrlEOGerSO77rgj5Fvyzf9g0O4ne2lXoR8uS4II,18594
85
+ flask_appbuilder/static/appbuilder/css/fontawesome/fontawesome.min.css,sha256=zgORubRsz5iTQajy0X9EdrJBq1vNm70B2ZW4YKdRy3s,80761
86
+ flask_appbuilder/static/appbuilder/css/fontawesome/regular.min.css,sha256=AKdJTilWP0HA1p1q_DnHgnJmR3uc56QTFroCEUE1NCs,580
87
+ flask_appbuilder/static/appbuilder/css/fontawesome/solid.min.css,sha256=PWjOYKvQnR-QNLq3ts8OC0_uUzdQ2NkfEulijXY8Xfo,572
88
+ flask_appbuilder/static/appbuilder/css/fontawesome/svg-with-js.min.css,sha256=BmRf_TpWkrGebpxG24nKIy25TXuzr7WmOOqtWPhfaNw,16771
89
+ flask_appbuilder/static/appbuilder/css/fontawesome/v4-font-face.min.css,sha256=3qx38sFUtiOKkZc7eAT97tB7BHy4UtkjNS8Kirug-lA,1736
90
+ flask_appbuilder/static/appbuilder/css/fontawesome/v4-shims.min.css,sha256=CBrGmsHCYkijL0yBH22hDEe9MvZYhXdAiOjeZm9OkS8,27593
91
+ flask_appbuilder/static/appbuilder/css/fontawesome/v5-font-face.min.css,sha256=zGrY1du3JRHqYLHQdYES159Q-372nQNFC_IpetFsksY,794
92
+ flask_appbuilder/static/appbuilder/css/images/flags16.png,sha256=4J5H4u1HssdXva0oOR4tEDhcWmXjd3ubK3zvzicaTk8,51306
93
+ flask_appbuilder/static/appbuilder/css/select2/select2-bootstrap.min.css,sha256=nbyata2PJRjImhByQzik2ot6gSHSU4Cqdz5bNYL2zcU,16792
94
+ flask_appbuilder/static/appbuilder/css/select2/select2.min.css,sha256=FdatTf20PQr_rWg-cAKfl6j4_IY3oohFAJ7gVC3M34E,14966
95
+ flask_appbuilder/static/appbuilder/css/swagger/swagger-ui.css,sha256=wk7P_WP8eX03vtHGjqAwR5rRx6MGOP-2taJVnqmLxDE,151211
96
+ flask_appbuilder/static/appbuilder/css/themes/amelia.css,sha256=kPkKJh9Kz2u6naJn3pH4VFgGpgr1DNzNOy2liHeU4Wk,105250
97
+ flask_appbuilder/static/appbuilder/css/themes/cerulean.css,sha256=UKmB9_useaL9IPo4IS517peuQEt05x_Z0vSG14-lCBc,120090
98
+ flask_appbuilder/static/appbuilder/css/themes/cosmo.css,sha256=VguXHGaX2jwxjvlWXG3zwWh_i3d8w1XCi2jVqTRmG7I,119768
99
+ flask_appbuilder/static/appbuilder/css/themes/cyborg.css,sha256=zxEHfLTlVC7lgREqDvri8javBIniGsbVmfSgAwx0wfE,119799
100
+ flask_appbuilder/static/appbuilder/css/themes/darkly.css,sha256=3ENdQmzAZ_ZJ_5vCIpqVRiaOQQwGDT0qDyLL_b0D-GY,121625
101
+ flask_appbuilder/static/appbuilder/css/themes/flatly.css,sha256=YWVGaarRFEqNTJPYf4VPJj4lutdGawVsrfm-tXi9qbw,121354
102
+ flask_appbuilder/static/appbuilder/css/themes/journal.css,sha256=wLEIsTem6YGp3_G0iNqqLKhYzkiBzPN9ZBoZpU2PuY4,118666
103
+ flask_appbuilder/static/appbuilder/css/themes/lumen.css,sha256=Tg2t3ds9B3CEkYurKyNc2E8wV5IoJjPgo0pq7meOeHE,124431
104
+ flask_appbuilder/static/appbuilder/css/themes/paper.css,sha256=l26I8blnp0qRoSufU5_wAxzYwkj8Egy_Q40h9sPMrVM,132318
105
+ flask_appbuilder/static/appbuilder/css/themes/readable.css,sha256=PA0eUEGv1KU0FsZUIa2nJacxxLbtyqRgavDy8FGFhDg,118678
106
+ flask_appbuilder/static/appbuilder/css/themes/sandstone.css,sha256=dWyyHDaAx6lROKdA9KzmLzBe9LsF2hnwCZk2auGcfe4,118965
107
+ flask_appbuilder/static/appbuilder/css/themes/simplex.css,sha256=Uu16KAlMrzFZBn_2FYxhVWnwHarllrNh2cvf8w4YNZc,120186
108
+ flask_appbuilder/static/appbuilder/css/themes/slate.css,sha256=Orf6npZE1_7-IlImB13cRpXmY4UkoF4POi_A4SFTcJg,129014
109
+ flask_appbuilder/static/appbuilder/css/themes/solar.css,sha256=myOylmHaqDfIsXzix87RHS8ROCq2po3cAyCl_pxIMKE,125030
110
+ flask_appbuilder/static/appbuilder/css/themes/spacelab.css,sha256=_BGJbByPB6l_Z75eYlhuECuDOE4AGGh4RGpH7MYEwJI,121499
111
+ flask_appbuilder/static/appbuilder/css/themes/superhero.css,sha256=_YJAsKpKyctRvT1UDptVCWpLhg-hY1bYRkzXgXtnY44,120731
112
+ flask_appbuilder/static/appbuilder/css/themes/united.css,sha256=ltLC53c-9nQc0ELY92pXXop0iDkRo4LeF9_FQ_JnXH0,117016
113
+ flask_appbuilder/static/appbuilder/css/themes/yeti.css,sha256=EWnz2eP0uYQgePSFe305auRVJm2K6j7KBENXMlMQzDU,121865
114
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.ttf,sha256=sdHBsBLhp2IcyE_R5cHbq5IBL0DfdCPoeasvpJNSD-4,186124
115
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.woff2,sha256=xhKHwvqYY7X7WETGg6ForGUgyU2CK7Q9Xq41w6KoIWY,107656
116
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.ttf,sha256=17Gf4gEQGwirE0T_1HLVnOZSrTw_tfGUw-NaopCOZ0o,62320
117
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.woff2,sha256=XaMTsEZ_fBsY2YFnKyNGGt0x461BmIwwEBvaq7B05EY,25236
118
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.ttf,sha256=5Pan6dGnwLSWjZy51CLo2c3KIp9_866sf5bkuqJcdoA,397420
119
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.woff2,sha256=jwZUD9d_Hv_h4tqOoQzsSjgt2pzG7wXYFuHW3kRAcvI,150516
120
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.ttf,sha256=Lds7QRSpy1ZeSbCvIcw6yIzQQ760m-MouPV6Y0mJ4Kw,10140
121
+ flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.woff2,sha256=9GcVydMAR_jepOsl7YafeR6wacaw9hAjgsMqVq7q37s,4568
122
+ flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.eot,sha256=E2NNqH2eI_jD7ZEIzhck0YOjmtBy5z4bPYy_ZG0tBAc,20127
123
+ flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.svg,sha256=QvYGWdJlwaPDD5-kKry7Vr1KU69Ng9MW1t16NpA8Q-U,108738
124
+ flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.ttf,sha256=45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY,45404
125
+ flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.woff,sha256=omOU9-3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I,23424
126
+ flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.woff2,sha256=_hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw,18028
127
+ flask_appbuilder/static/appbuilder/img/fab.png,sha256=MeZfyBLCdtgsJdGdPYKd3QFiDhJby6oLp1sVP1NbF4Q,2591
128
+ flask_appbuilder/static/appbuilder/img/glyphicons-halflings-white.png,sha256=8ODZWpyKvN-r9GNI4tQoWCm7BJH19q8OBa9Sv_tjJMQ,8777
129
+ flask_appbuilder/static/appbuilder/img/glyphicons-halflings.png,sha256=2Z4_oyxkEDLwgUmRSyjC3GrPLsYvcJh_Ilnqu_p_wN4,12799
130
+ flask_appbuilder/static/appbuilder/js/ab.js,sha256=X-SKsBQKViDV4I0l_XWYfKto0diPp1qBwXn9XXaaLbo,3380
131
+ flask_appbuilder/static/appbuilder/js/ab_actions.js,sha256=gSh55Vh0fOLLUJPxzCJaegAtJFVgvzvd0duPXRy3pjA,4228
132
+ flask_appbuilder/static/appbuilder/js/ab_filters.js,sha256=iPw-tVct4pLuCAF38vEdk7vbzL5aSC1RVYs0Sv4XKms,5275
133
+ flask_appbuilder/static/appbuilder/js/ab_keep_tab.js,sha256=8MOjHJICM0UiMmB_B8r2pFFZ2Mka3BT2d90eL5SKBFM,1526
134
+ flask_appbuilder/static/appbuilder/js/bootstrap.min.js,sha256=nuL8_2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL-1ev4,39680
135
+ flask_appbuilder/static/appbuilder/js/google_charts.js,sha256=WWPcbKY75OwEWXxnfXEY55cx788X92ZdaAGH_mvjCgI,46151
136
+ flask_appbuilder/static/appbuilder/js/jquery-latest.js,sha256=_xUj-3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej_m4,89501
137
+ flask_appbuilder/static/appbuilder/js/swagger-ui-bundle.js,sha256=KlVjBlJL7SymaOxa4ZsdvU2c2qNHlckGOhxEspqcYJc,1385226
138
+ flask_appbuilder/static/appbuilder/js/bootstrap-datepicker/bootstrap-datepicker.min.js,sha256=iZp9dyOMJKPFdn1UMra9ZMhPZAlSGZUzdhqqEgijE-Q,33871
139
+ flask_appbuilder/static/appbuilder/js/select2/select2.min.js,sha256=AFAYEOkzB6iIKnTYZOdUf9FFje6lOTYdwRJKwTN5mks,70851
140
+ flask_appbuilder/templates/appbuilder/_formhelpers.html,sha256=XVS_zN1ZrWLqDhnmH1oqhieF1F5uGMi1K7bCm__wsno,360
141
+ flask_appbuilder/templates/appbuilder/base.html,sha256=HUMYeU_KKCy4LiA0KrdoXQm56MoiORgQV6ERwQbbgkY,28
142
+ flask_appbuilder/templates/appbuilder/baselayout.html,sha256=EF_tMzYkKAIexehvoXol2sj62XK1Z8HLCz_bOvghzwc,874
143
+ flask_appbuilder/templates/appbuilder/baselib.html,sha256=wZeeadZHH1sVaiKvSpPWtueWE28VdXJA3xn2n0VFZgs,4592
144
+ flask_appbuilder/templates/appbuilder/flash.html,sha256=omg3axewTG3DWQgkLxORg7MPQLwvfbelzTJ-PJs7RRI,486
145
+ flask_appbuilder/templates/appbuilder/footer.html,sha256=fxT9fn7iPczCYAZVYWmpL6xferrnOHK7MyR_nKRON3o,143
146
+ flask_appbuilder/templates/appbuilder/index.html,sha256=NJKAjcqL9C7mTbwR_bAD3dkAOJTGcJBfPQlSMDhcu-0,145
147
+ flask_appbuilder/templates/appbuilder/init.html,sha256=Y81Y7FQtmW-jODm2d8viwInaNaAIUiKtAbK_y4oRnLg,3048
148
+ flask_appbuilder/templates/appbuilder/navbar.html,sha256=FA57fvVai2a4rfolvsdwP7B61P_GyfLjdOHykUdE3gc,1299
149
+ flask_appbuilder/templates/appbuilder/navbar_menu.html,sha256=yA0FVS-hZs-2CnZvhX3vm21gK4mDyPvJ3FDJwp-wyhw,1247
150
+ flask_appbuilder/templates/appbuilder/navbar_right.html,sha256=Cns5yZby86HkJenMgRwabBvcGqNNLceSqhAITmVL1Lg,1568
151
+ flask_appbuilder/templates/appbuilder/general/alert.html,sha256=odj2dNzbopclSI7jVXwODnrqY185ASYTyShL442iox8,444
152
+ flask_appbuilder/templates/appbuilder/general/confirm.html,sha256=tA-hAsBh91vEPeW2W5D0hY0bX-jSI61JyZwOiUElwGI,717
153
+ flask_appbuilder/templates/appbuilder/general/lib.html,sha256=2R_EAl1PwhPws_YhkK9BV785Kw21tlD8YjH8LfmPUSk,14587
154
+ flask_appbuilder/templates/appbuilder/general/charts/chart.html,sha256=vZTsnv3YmEU-JSlKlIc7CTR5uJvOzsryOq-YsAXnSYo,778
155
+ flask_appbuilder/templates/appbuilder/general/charts/chart_time.html,sha256=vMGotm_VFaWYyJGk4zZ1tPM4WdTylvNtWN2kBwttp20,890
156
+ flask_appbuilder/templates/appbuilder/general/charts/jsonchart.html,sha256=w09kwbAsGFG0WFvQ_3JouVVAkX4LhNZx3MabPi4GvQ4,670
157
+ flask_appbuilder/templates/appbuilder/general/model/add.html,sha256=MhOXEx-gqV8CPKhq2jh8T4iqVgSbWdw9SgiMffCKcpA,271
158
+ flask_appbuilder/templates/appbuilder/general/model/edit.html,sha256=oQ2xBDDGqp_ifxYJANcAqxovdEO3FODCVQrLT2b-OmY,1181
159
+ flask_appbuilder/templates/appbuilder/general/model/edit_cascade.html,sha256=HFTJczks4TdkIhkap785poJBI_TTynaKLogoNdJEh4w,813
160
+ flask_appbuilder/templates/appbuilder/general/model/left_master_detail.html,sha256=i6ObZ1lY1QpOEUnmQb-fv1cD-MEUyZ-vd9dy5eaqen4,653
161
+ flask_appbuilder/templates/appbuilder/general/model/list.html,sha256=fBEQb_J_ttJI80D0C1M9jI0G9w25ckoSk7xOazmT5Zc,496
162
+ flask_appbuilder/templates/appbuilder/general/model/multiple_views.html,sha256=u4R0GrHeVPRCbQPwDKBdOBf0jVsAvWkINK4J0UrdpvY,517
163
+ flask_appbuilder/templates/appbuilder/general/model/search.html,sha256=vxS_74SuBr-9DQtJMpRnveO3pXtn5Yl2hlF_DDmTDww,501
164
+ flask_appbuilder/templates/appbuilder/general/model/show.html,sha256=Z6V02x3BJKIhb_emhXGARL_g94-F1nEWkV4JruUioeo,1207
165
+ flask_appbuilder/templates/appbuilder/general/model/show_cascade.html,sha256=okkMqAiZaqPyvKeGKwLTYPaGn44mzT-xh4bQiytFA3k,784
166
+ flask_appbuilder/templates/appbuilder/general/security/activation.html,sha256=xERW3RMRr12xKUX6zRpye9bAXhfe3RiW-hyzo4Wtbeg,216
167
+ flask_appbuilder/templates/appbuilder/general/security/login_db.html,sha256=gJVY9kxEa_-bpxHTAJsVBCVJ2MZmlg0oVnNC18vB4bE,2955
168
+ flask_appbuilder/templates/appbuilder/general/security/login_ldap.html,sha256=W3pPTRUwFkCKTJEDItipq0E1SvBZ92dP6wekR_qxYrc,2002
169
+ flask_appbuilder/templates/appbuilder/general/security/login_oauth.html,sha256=-XwSh9NBm3rpd_kryjRThF_mqQTFPgiJu_zOnYGAGtM,1595
170
+ flask_appbuilder/templates/appbuilder/general/security/register_mail.html,sha256=o40VoLzyETkSM7lW5el2Hff-gIAh3i5jMlW0d2Ay-4M,230
171
+ flask_appbuilder/templates/appbuilder/general/security/register_oauth.html,sha256=Zl-ORB_dCbphWaXYigEGSVIBU6ZrcNwAGDPrUUXSVo4,1057
172
+ flask_appbuilder/templates/appbuilder/general/widgets/base_list.html,sha256=Fv7FyPoLPanYh_zmFosQnibJb0jTJ4QwToqKAkBCHqU,1153
173
+ flask_appbuilder/templates/appbuilder/general/widgets/chart.html,sha256=Zge0HeDD-MUm_YbSP1oSAbJtw0WmO87W-0te9_iqZxA,2981
174
+ flask_appbuilder/templates/appbuilder/general/widgets/direct_chart.html,sha256=Q8VX97abYdtcZOWIym053M29wTpXbbTWsUoDLwQbnpc,2613
175
+ flask_appbuilder/templates/appbuilder/general/widgets/form.html,sha256=ZApB1T0AoYQVhMzQ_MKeUX1mToablQW514NvnaBLUc4,2016
176
+ flask_appbuilder/templates/appbuilder/general/widgets/form_horizontal.html,sha256=ccOK-8aUBmM1m4fvUSfTDaZaSpxFQUA99i1Av7o72vQ,1382
177
+ flask_appbuilder/templates/appbuilder/general/widgets/form_inline.html,sha256=4-SZuL53_omJOukHvxQAkK7H6lM0ojXrPoEoQ2HsIeI,1326
178
+ flask_appbuilder/templates/appbuilder/general/widgets/form_vertical.html,sha256=vKaK9jS7c_ZdfONzOQDbpsdWxU7mt7ZwsAhnW5lC0ZQ,1328
179
+ flask_appbuilder/templates/appbuilder/general/widgets/group_form_list.html,sha256=eceh1r4br9UF_fkxfASR-MHv1b83RVHSmOwbpxHiQWg,247
180
+ flask_appbuilder/templates/appbuilder/general/widgets/list.html,sha256=Kg-tSP5CI5x1bbyWPc76PLoRgcbWmTeLyBHdCB69tmI,2745
181
+ flask_appbuilder/templates/appbuilder/general/widgets/list_block.html,sha256=g3xOphl51AQR4BsY4bvzULFLP8xNYx974z3JSCzvYtk,1331
182
+ flask_appbuilder/templates/appbuilder/general/widgets/list_carousel.html,sha256=PHpItuC_EVplduO9PNpc2id90FJlsAymrqfIOy1WgOo,2038
183
+ flask_appbuilder/templates/appbuilder/general/widgets/list_item.html,sha256=g4LHtP3Ay1_9fF1yIybkrMXlPyyILhNGHe485uByw-U,1317
184
+ flask_appbuilder/templates/appbuilder/general/widgets/list_link.html,sha256=UnljuAk0cAvDnkjPPGOBMqKvYF1n26aARfmh7gm8kzE,2843
185
+ flask_appbuilder/templates/appbuilder/general/widgets/list_master.html,sha256=91W3oiuvcmqysm-uyUxHk9TdqXSe58RVmVksZeXYF8s,572
186
+ flask_appbuilder/templates/appbuilder/general/widgets/list_thumbnail.html,sha256=_oG8PjsNGBXpBFayWfZwBTGf7I8fKCfvYsgIwmFhKAw,1167
187
+ flask_appbuilder/templates/appbuilder/general/widgets/multiple_chart.html,sha256=eb1DK3zuF43XYvRk99ELw5hBhs6ZV20GgmnXF5h14DA,1631
188
+ flask_appbuilder/templates/appbuilder/general/widgets/search.html,sha256=NsmI-irzl9lHFpBSEiQ4SrwTpBVrO8dERZ9Zunx0ccA,1087
189
+ flask_appbuilder/templates/appbuilder/general/widgets/show.html,sha256=ur1bgNTjg8SgoqbVNfOq8XKF606dduG7-PDP6FWGNYo,1738
190
+ flask_appbuilder/templates/appbuilder/general/widgets/show_block.html,sha256=ZylOUshZQ9octVj2-XjRjMAH53CSmbfZ7Rs5N9-75MY,1833
191
+ flask_appbuilder/templates/appbuilder/general/widgets/show_vertical.html,sha256=pOqaFmvNndW0r1zkrwzNS9_LPM5bLztLWr7MAl1LCyY,1544
192
+ flask_appbuilder/templates/appbuilder/general/widgets/roles/list.html,sha256=-_LLPbwlzLZnP4R4w-h7scFwwip2Y_iJ7p6UZQu8qBg,3249
193
+ flask_appbuilder/templates/appbuilder/general/widgets/roles/show.html,sha256=PYQxFZXOqfbARAuPLNjZlafCXo7BbHno2hxRaWHqJCg,2132
194
+ flask_appbuilder/templates/appbuilder/swagger/swagger.html,sha256=R8OgoPVCFQA22yx6tiI3Pqp6o93kd3rpIblbCKfjWu8,896
195
+ flask_appbuilder/translations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
+ flask_appbuilder/translations/de/LC_MESSAGES/messages.mo,sha256=iavCGbOdPhfvqHeMGjidesCcncDYYLJsw7TkxIoDWLU,9681
197
+ flask_appbuilder/translations/de/LC_MESSAGES/messages.po,sha256=NCd_qi-PBkQoSb6udJ0QOIhLSB6oAmovw-gbiwDk3Nc,26578
198
+ flask_appbuilder/translations/el/LC_MESSAGES/messages.mo,sha256=LXr_WkihKj4Kzs8SVNTDoJnrOKZS6b3HGrsHivmuxdg,11017
199
+ flask_appbuilder/translations/el/LC_MESSAGES/messages.po,sha256=Wh4wezTVlsYs7ndqUk2P1NukL0-Ci6Y-bi4rufPkssU,22936
200
+ flask_appbuilder/translations/es/LC_MESSAGES/messages.mo,sha256=f58Vl0A6lngb_JPk-MGjwJHBMHiWc2krlZm1OcukbPk,8468
201
+ flask_appbuilder/translations/es/LC_MESSAGES/messages.po,sha256=ve9Y8p1PzizY5kd3ROacELV78kRAPNsKkNGKPvvDbg4,20079
202
+ flask_appbuilder/translations/fa/LC_MESSAGES/messages.mo,sha256=WJJg4gaR71uH7KDDwu-x6jDSCISWr0mGZWMlK-UsZX8,12017
203
+ flask_appbuilder/translations/fa/LC_MESSAGES/messages.po,sha256=zUMPkOLASFn51Fz4zY88t0iOErbUQiew3t2m-dVru_M,27607
204
+ flask_appbuilder/translations/fr/LC_MESSAGES/messages.mo,sha256=XdsRh8eobO5pwmWw9OpMYjL0YM66hmhEVaS7x1BrnQ8,8504
205
+ flask_appbuilder/translations/fr/LC_MESSAGES/messages.po,sha256=DgCWIYZx6yoELKihlLeFJVmKh9-igo86-H_d_qPJ5ro,25810
206
+ flask_appbuilder/translations/it/LC_MESSAGES/messages.mo,sha256=T7JAnLQc4ww_9BSEssovwkojmXz_MmS4zQkapefQWuw,9121
207
+ flask_appbuilder/translations/it/LC_MESSAGES/messages.po,sha256=PDIirc9Kf3so84xrC5MWmSZt3RpwE__EYqaMDs5a9sE,24545
208
+ flask_appbuilder/translations/ja_JP/LC_MESSAGES/messages.mo,sha256=Yvs2hZ8PbYhv5_I2NEQtAeYzvdGUhVngkZOwAJNji0U,9412
209
+ flask_appbuilder/translations/ja_JP/LC_MESSAGES/messages.po,sha256=DLXJUwApP6cc1tPm9SVuSOBn1wIs7lDjV2sLp6PC-Ww,20790
210
+ flask_appbuilder/translations/ko/LC_MESSAGES/messages.mo,sha256=_hcH6yP4mzlVYKbk5HJSK8bnLsY7w_IhuRS7M63x_zo,9513
211
+ flask_appbuilder/translations/ko/LC_MESSAGES/messages.po,sha256=WUn5YfX8aWfAsven5RUqbwafN2EAI6u4_eIyucN_LGA,39930
212
+ flask_appbuilder/translations/nl/LC_MESSAGES/messages.mo,sha256=p1h8_BqijMFXRaACAgB_9RIvWArTrhFV4RMYXk0J-G0,8252
213
+ flask_appbuilder/translations/nl/LC_MESSAGES/messages.po,sha256=vyTNgbYKJmwMW1hsxfZfrrWW-pROqidvRsMSiaxZ-hc,19648
214
+ flask_appbuilder/translations/pl/LC_MESSAGES/messages.mo,sha256=6jqC0VJIvAvYHghzZpYT9OqgRA__Ej25Mk5mwjsYDW4,8136
215
+ flask_appbuilder/translations/pl/LC_MESSAGES/messages.po,sha256=A1S4jbKbP9ztqMpJfp4iCzpGyYE2rz9BXZm5V59Bw8o,20115
216
+ flask_appbuilder/translations/pt/LC_MESSAGES/messages.mo,sha256=-gqhdBzwygGmLocm5kWwoSIprMOF5bpiYNZHcb8yz7c,8441
217
+ flask_appbuilder/translations/pt/LC_MESSAGES/messages.po,sha256=qVyiB8TA1TO8vjHvCvP8QZAf7bsgMDLIuML7EubVuE8,20002
218
+ flask_appbuilder/translations/pt/LC_MESSAGES/messages.po~,sha256=zwUQE2GP-L3VaKum4KqqFWh2Md8DSMp-Kq7f7PO5y0A,20509
219
+ flask_appbuilder/translations/pt_BR/LC_MESSAGES/messages.mo,sha256=YT8fgL_bJDNf0ghQ5KyEdpgbtwh3po6tZzvct7RVlmk,8336
220
+ flask_appbuilder/translations/pt_BR/LC_MESSAGES/messages.po,sha256=Og1Efwv409W0fZUFUSJeJ4Vdgt-3mKYQQs0TovaBjFc,20517
221
+ flask_appbuilder/translations/ru/LC_MESSAGES/messages.mo,sha256=wcG3qhjMmIgG4qD4ViH20Hx4dxg5CvFyJ-1GQqUIigg,10674
222
+ flask_appbuilder/translations/ru/LC_MESSAGES/messages.po,sha256=uG6zOAFH3NuS1DAkKj6bf7l0qMIS8dvxx6jfDdvf5W8,22035
223
+ flask_appbuilder/translations/sl/LC_MESSAGES/messages.mo,sha256=zgKVl6OjSSxtloIoVN7RDXLt31BkWW4VUJQMcrl5aSY,9682
224
+ flask_appbuilder/translations/sl/LC_MESSAGES/messages.po,sha256=28IkADoqJB1owFqKL-psyAmA_lDn7Uh_6BdcymdX2IU,20841
225
+ flask_appbuilder/translations/tr/LC_MESSAGES/messages.mo,sha256=nJlekRpNIOBYx3q6BHrSyR-01qn7UERrORB-sBVAFJ0,10336
226
+ flask_appbuilder/translations/tr/LC_MESSAGES/messages.po,sha256=q3hv2AMKpaMpI2CXentUvQa1VBm6wfABqGLnk3sCfgw,40132
227
+ flask_appbuilder/translations/zh/LC_MESSAGES/messages.mo,sha256=LOspp0B_RAVWHmtqzvmFHrgxds6pmZjPrRpS_D8jkME,7528
228
+ flask_appbuilder/translations/zh/LC_MESSAGES/messages.po,sha256=3allp8Aa1eUVZXi-ezhmbOPNR5JO57qajtwbrWkltnM,19095
229
+ flask_appbuilder/translations/zh_HK/LC_MESSAGES/messages.mo,sha256=s4S4s1yNeGRmfPlpd7NuAf4UqkxeKakXFUsirvn0c14,7493
230
+ flask_appbuilder/translations/zh_HK/LC_MESSAGES/messages.po,sha256=G3K0jpHUZNYQXMazLBVpUB8tDVrDWzeo6oumWTzwYxs,19104
231
+ flask_appbuilder/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
+ flask_appbuilder/utils/base.py,sha256=MtrE-rqiigb45HzcJmvz3J_-22mtKXjXYNB9tQ6CcbY,2490
233
+ flask_appbuilder/utils/legacy.py,sha256=Bz2_imi02_aOE_w7dN_0Igl_fWjD1PTLlu6gx8IMAW4,1001
234
+ flask_appbuilder/utils/limit.py,sha256=hEwMH2k_bPiqMaaP--alPW5YaiJS21YBgRthKiv0uPo,725
235
+ flask_appbuilder-5.0.2rc1.dist-info/LICENSE,sha256=pZ-ajm1I_0h91a1peoZFSemkiFE8kK1H_xmV_cxlQlY,1493
236
+ flask_appbuilder-5.0.2rc1.dist-info/METADATA,sha256=2eGPWWBK8DzVIC0FO_tuetWczp4cMZAD9-TI7Uv8oRs,8786
237
+ flask_appbuilder-5.0.2rc1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
238
+ flask_appbuilder-5.0.2rc1.dist-info/entry_points.txt,sha256=h5lBK4jb4RFWW8gH7C-0tE5QvQGUA5wx5hlYOhNWy4Q,48
239
+ flask_appbuilder-5.0.2rc1.dist-info/top_level.txt,sha256=Dy4t809z2TNdpjQhDUMEXU8Hc61x1e6WRNaC7hG6r8M,17
240
+ flask_appbuilder-5.0.2rc1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.36.2)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,2 @@
1
+ [flask.commands]
2
+ fab = flask_appbuilder.cli:fab