WuttaWeb 0.4.0__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/CHANGELOG.md +33 -0
  2. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/PKG-INFO +4 -2
  3. wuttaweb-0.6.0/docs/api/wuttaweb/forms.schema.rst +6 -0
  4. wuttaweb-0.6.0/docs/api/wuttaweb/forms.widgets.rst +6 -0
  5. wuttaweb-0.6.0/docs/api/wuttaweb/grids.base.rst +6 -0
  6. wuttaweb-0.6.0/docs/api/wuttaweb/grids.rst +6 -0
  7. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/index.rst +7 -0
  8. wuttaweb-0.6.0/docs/api/wuttaweb/views.people.rst +6 -0
  9. wuttaweb-0.6.0/docs/api/wuttaweb/views.roles.rst +6 -0
  10. wuttaweb-0.6.0/docs/api/wuttaweb/views.users.rst +6 -0
  11. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/pyproject.toml +4 -2
  12. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/app.py +11 -2
  13. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/forms/__init__.py +2 -1
  14. wuttaweb-0.6.0/src/wuttaweb/forms/base.py +972 -0
  15. wuttaweb-0.6.0/src/wuttaweb/forms/schema.py +259 -0
  16. wuttaweb-0.6.0/src/wuttaweb/forms/widgets.py +82 -0
  17. wuttaweb-0.6.0/src/wuttaweb/grids/__init__.py +31 -0
  18. wuttaweb-0.6.0/src/wuttaweb/grids/base.py +514 -0
  19. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/helpers.py +10 -2
  20. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/menus.py +47 -1
  21. wuttaweb-0.6.0/src/wuttaweb/static/img/favicon.ico +0 -0
  22. wuttaweb-0.6.0/src/wuttaweb/static/img/logo.png +0 -0
  23. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/subscribers.py +1 -1
  24. wuttaweb-0.6.0/src/wuttaweb/templates/appinfo/configure.mako +177 -0
  25. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/appinfo/index.mako +5 -2
  26. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/base.mako +60 -10
  27. wuttaweb-0.6.0/src/wuttaweb/templates/configure.mako +181 -0
  28. wuttaweb-0.6.0/src/wuttaweb/templates/deform/checkbox.pt +11 -0
  29. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/deform/checked_password.pt +2 -1
  30. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/deform/password.pt +2 -1
  31. wuttaweb-0.6.0/src/wuttaweb/templates/deform/select.pt +50 -0
  32. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/deform/textinput.pt +2 -1
  33. wuttaweb-0.6.0/src/wuttaweb/templates/forms/vue_template.mako +68 -0
  34. wuttaweb-0.6.0/src/wuttaweb/templates/grids/vue_template.mako +53 -0
  35. wuttaweb-0.6.0/src/wuttaweb/templates/master/configure.mako +9 -0
  36. wuttaweb-0.6.0/src/wuttaweb/templates/master/create.mako +7 -0
  37. wuttaweb-0.6.0/src/wuttaweb/templates/master/delete.mako +18 -0
  38. wuttaweb-0.6.0/src/wuttaweb/templates/master/edit.mako +9 -0
  39. wuttaweb-0.6.0/src/wuttaweb/templates/master/form.mako +5 -0
  40. wuttaweb-0.6.0/src/wuttaweb/templates/master/index.mako +32 -0
  41. wuttaweb-0.6.0/src/wuttaweb/templates/master/view.mako +9 -0
  42. wuttaweb-0.6.0/src/wuttaweb/templates/wutta-components.mako +71 -0
  43. wuttaweb-0.6.0/src/wuttaweb/util.py +474 -0
  44. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/views/auth.py +2 -3
  45. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/views/base.py +23 -3
  46. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/views/essential.py +7 -0
  47. wuttaweb-0.6.0/src/wuttaweb/views/master.py +1599 -0
  48. wuttaweb-0.6.0/src/wuttaweb/views/people.py +95 -0
  49. wuttaweb-0.6.0/src/wuttaweb/views/roles.py +100 -0
  50. wuttaweb-0.6.0/src/wuttaweb/views/settings.py +174 -0
  51. wuttaweb-0.6.0/src/wuttaweb/views/users.py +117 -0
  52. wuttaweb-0.6.0/tests/forms/test_base.py +478 -0
  53. wuttaweb-0.6.0/tests/forms/test_schema.py +199 -0
  54. wuttaweb-0.6.0/tests/forms/test_widgets.py +32 -0
  55. wuttaweb-0.6.0/tests/grids/test_base.py +203 -0
  56. wuttaweb-0.6.0/tests/libcache/bb_fontawesome_svg_core.js +0 -0
  57. wuttaweb-0.6.0/tests/libcache/bb_free_solid_svg_icons.js +0 -0
  58. wuttaweb-0.6.0/tests/libcache/bb_oruga.js +0 -0
  59. wuttaweb-0.6.0/tests/libcache/bb_oruga_bulma.css +0 -0
  60. wuttaweb-0.6.0/tests/libcache/bb_oruga_bulma.js +0 -0
  61. wuttaweb-0.6.0/tests/libcache/bb_vue.js +0 -0
  62. wuttaweb-0.6.0/tests/libcache/bb_vue_fontawesome.js +0 -0
  63. wuttaweb-0.6.0/tests/libcache/buefy.css +0 -0
  64. wuttaweb-0.6.0/tests/libcache/buefy.js +0 -0
  65. wuttaweb-0.6.0/tests/libcache/fontawesome.js +0 -0
  66. wuttaweb-0.6.0/tests/libcache/vue.js +0 -0
  67. wuttaweb-0.6.0/tests/libcache/vue_resource.js +0 -0
  68. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_app.py +11 -0
  69. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_subscribers.py +1 -1
  70. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_util.py +237 -2
  71. wuttaweb-0.4.0/tests/views/utils.py → wuttaweb-0.6.0/tests/util.py +39 -12
  72. wuttaweb-0.6.0/tests/views/__init__.py +0 -0
  73. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/views/test_base.py +5 -0
  74. wuttaweb-0.6.0/tests/views/test_master.py +765 -0
  75. wuttaweb-0.6.0/tests/views/test_people.py +39 -0
  76. wuttaweb-0.6.0/tests/views/test_roles.py +57 -0
  77. wuttaweb-0.6.0/tests/views/test_settings.py +56 -0
  78. wuttaweb-0.6.0/tests/views/test_users.py +57 -0
  79. wuttaweb-0.4.0/src/wuttaweb/forms/base.py +0 -476
  80. wuttaweb-0.4.0/src/wuttaweb/static/img/favicon.ico +0 -0
  81. wuttaweb-0.4.0/src/wuttaweb/static/img/logo.png +0 -0
  82. wuttaweb-0.4.0/src/wuttaweb/templates/forms/vue_template.mako +0 -58
  83. wuttaweb-0.4.0/src/wuttaweb/templates/master/index.mako +0 -13
  84. wuttaweb-0.4.0/src/wuttaweb/util.py +0 -259
  85. wuttaweb-0.4.0/src/wuttaweb/views/master.py +0 -443
  86. wuttaweb-0.4.0/src/wuttaweb/views/settings.py +0 -47
  87. wuttaweb-0.4.0/tests/forms/test_base.py +0 -273
  88. wuttaweb-0.4.0/tests/utils.py +0 -11
  89. wuttaweb-0.4.0/tests/views/test_master.py +0 -282
  90. wuttaweb-0.4.0/tests/views/test_settings.py +0 -13
  91. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/.gitignore +0 -0
  92. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/COPYING.txt +0 -0
  93. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/README.md +0 -0
  94. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/Makefile +0 -0
  95. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/_static/.keepme +0 -0
  96. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/index.rst +0 -0
  97. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/app.rst +0 -0
  98. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/auth.rst +0 -0
  99. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/db.rst +0 -0
  100. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/forms.base.rst +0 -0
  101. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/forms.rst +0 -0
  102. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/handler.rst +0 -0
  103. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/helpers.rst +0 -0
  104. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/menus.rst +0 -0
  105. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/static.rst +0 -0
  106. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/subscribers.rst +0 -0
  107. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/util.rst +0 -0
  108. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.auth.rst +0 -0
  109. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.base.rst +0 -0
  110. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.common.rst +0 -0
  111. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.essential.rst +0 -0
  112. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.master.rst +0 -0
  113. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.rst +0 -0
  114. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/api/wuttaweb/views.settings.rst +0 -0
  115. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/conf.py +0 -0
  116. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/glossary.rst +0 -0
  117. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/index.rst +0 -0
  118. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/make.bat +0 -0
  119. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/docs/narr/index.rst +0 -0
  120. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/__init__.py +0 -0
  121. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/_version.py +0 -0
  122. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/auth.py +0 -0
  123. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/db.py +0 -0
  124. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/handler.py +0 -0
  125. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/static/__init__.py +0 -0
  126. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/static/img/testing.png +0 -0
  127. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/auth/change_password.mako +0 -0
  128. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/auth/login.mako +0 -0
  129. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/base_meta.mako +0 -0
  130. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/form.mako +0 -0
  131. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/home.mako +0 -0
  132. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/templates/page.mako +0 -0
  133. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/views/__init__.py +0 -0
  134. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/src/wuttaweb/views/common.py +0 -0
  135. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tasks.py +0 -0
  136. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/__init__.py +0 -0
  137. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/forms/__init__.py +0 -0
  138. {wuttaweb-0.4.0/tests/views → wuttaweb-0.6.0/tests/grids}/__init__.py +0 -0
  139. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_auth.py +0 -0
  140. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_handler.py +0 -0
  141. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_helpers.py +0 -0
  142. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_menus.py +0 -0
  143. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/test_static.py +0 -0
  144. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/views/test___init__.py +0 -0
  145. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/views/test_auth.py +0 -0
  146. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tests/views/test_common.py +0 -0
  147. {wuttaweb-0.4.0 → wuttaweb-0.6.0}/tox.ini +0 -0
@@ -5,6 +5,39 @@ All notable changes to wuttaweb will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## v0.6.0 (2024-08-13)
9
+
10
+ ### Feat
11
+
12
+ - add basic Roles view
13
+ - add Users view; improve CRUD master for SQLAlchemy models
14
+ - add People view; improve CRUD master for SQLAlchemy models
15
+ - add basic support for SQLAlchemy model in master view
16
+ - add basic Create support for CRUD master view
17
+ - add basic Delete support for CRUD master view
18
+ - add basic Edit support for CRUD master view
19
+ - add auto-link (to "View") behavior for grid columns
20
+ - add basic support for "view" part of CRUD
21
+ - add basic `Grid` class, and /settings master view
22
+
23
+ ### Fix
24
+
25
+ - rename MasterView method to `configure_grid()`
26
+ - replace default logo, favicon images
27
+ - tweak labels for Web Libraries config
28
+
29
+ ## v0.5.0 (2024-08-06)
30
+
31
+ ### Feat
32
+
33
+ - add basic support for fanstatic / libcache
34
+ - expose Web Libraries in app info config page
35
+ - add basic configure view for appinfo
36
+
37
+ ### Fix
38
+
39
+ - bump min version for wuttjamaican
40
+
8
41
  ## v0.4.0 (2024-08-05)
9
42
 
10
43
  ### Feat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: WuttaWeb
3
- Version: 0.4.0
3
+ Version: 0.6.0
4
4
  Summary: Web App for Wutta Framework
5
5
  Project-URL: Homepage, https://wuttaproject.org/
6
6
  Project-URL: Repository, https://forgejo.wuttaproject.org/wutta/wuttaweb
@@ -24,14 +24,16 @@ Classifier: Programming Language :: Python :: 3.11
24
24
  Classifier: Topic :: Internet :: WWW/HTTP
25
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
26
  Requires-Python: >=3.8
27
+ Requires-Dist: colanderalchemy
27
28
  Requires-Dist: pyramid-beaker
28
29
  Requires-Dist: pyramid-deform
30
+ Requires-Dist: pyramid-fanstatic
29
31
  Requires-Dist: pyramid-mako
30
32
  Requires-Dist: pyramid-tm
31
33
  Requires-Dist: pyramid>=2
32
34
  Requires-Dist: waitress
33
35
  Requires-Dist: webhelpers2
34
- Requires-Dist: wuttjamaican[db]>=0.8.3
36
+ Requires-Dist: wuttjamaican[db]>=0.11.0
35
37
  Requires-Dist: zope-sqlalchemy>=1.5
36
38
  Provides-Extra: docs
37
39
  Requires-Dist: furo; extra == 'docs'
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.forms.schema``
3
+ =========================
4
+
5
+ .. automodule:: wuttaweb.forms.schema
6
+ :members:
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.forms.widgets``
3
+ ==========================
4
+
5
+ .. automodule:: wuttaweb.forms.widgets
6
+ :members:
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.grids.base``
3
+ =======================
4
+
5
+ .. automodule:: wuttaweb.grids.base
6
+ :members:
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.grids``
3
+ ==================
4
+
5
+ .. automodule:: wuttaweb.grids
6
+ :members:
@@ -12,6 +12,10 @@
12
12
  db
13
13
  forms
14
14
  forms.base
15
+ forms.schema
16
+ forms.widgets
17
+ grids
18
+ grids.base
15
19
  handler
16
20
  helpers
17
21
  menus
@@ -24,4 +28,7 @@
24
28
  views.common
25
29
  views.essential
26
30
  views.master
31
+ views.people
32
+ views.roles
27
33
  views.settings
34
+ views.users
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.views.people``
3
+ ===========================
4
+
5
+ .. automodule:: wuttaweb.views.people
6
+ :members:
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.views.roles``
3
+ ========================
4
+
5
+ .. automodule:: wuttaweb.views.roles
6
+ :members:
@@ -0,0 +1,6 @@
1
+
2
+ ``wuttaweb.views.users``
3
+ ========================
4
+
5
+ .. automodule:: wuttaweb.views.users
6
+ :members:
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
 
7
7
  [project]
8
8
  name = "WuttaWeb"
9
- version = "0.4.0"
9
+ version = "0.6.0"
10
10
  description = "Web App for Wutta Framework"
11
11
  readme = "README.md"
12
12
  authors = [{name = "Lance Edgar", email = "lance@edbob.org"}]
@@ -30,14 +30,16 @@ classifiers = [
30
30
  ]
31
31
  requires-python = ">= 3.8"
32
32
  dependencies = [
33
+ "ColanderAlchemy",
33
34
  "pyramid>=2",
34
35
  "pyramid_beaker",
35
36
  "pyramid_deform",
37
+ "pyramid_fanstatic",
36
38
  "pyramid_mako",
37
39
  "pyramid_tm",
38
40
  "waitress",
39
41
  "WebHelpers2",
40
- "WuttJamaican[db]>=0.8.3",
42
+ "WuttJamaican[db]>=0.11.0",
41
43
  "zope.sqlalchemy>=1.5",
42
44
  ]
43
45
 
@@ -110,7 +110,12 @@ def make_pyramid_config(settings):
110
110
 
111
111
  The config is initialized with certain features deemed useful for
112
112
  all apps.
113
+
114
+ :returns: Instance of
115
+ :class:`pyramid:pyramid.config.Configurator`.
113
116
  """
117
+ settings.setdefault('fanstatic.versioning', 'true')
118
+ settings.setdefault('mako.directories', ['wuttaweb:templates'])
114
119
  settings.setdefault('pyramid_deform.template_search_path',
115
120
  'wuttaweb:templates/deform')
116
121
 
@@ -119,8 +124,14 @@ def make_pyramid_config(settings):
119
124
  # configure user authorization / authentication
120
125
  pyramid_config.set_security_policy(WuttaSecurityPolicy())
121
126
 
127
+ # require CSRF token for POST
128
+ pyramid_config.set_default_csrf_options(require_csrf=True,
129
+ token='_csrf',
130
+ header='X-CSRF-TOKEN')
131
+
122
132
  pyramid_config.include('pyramid_beaker')
123
133
  pyramid_config.include('pyramid_deform')
134
+ pyramid_config.include('pyramid_fanstatic')
124
135
  pyramid_config.include('pyramid_mako')
125
136
  pyramid_config.include('pyramid_tm')
126
137
 
@@ -143,8 +154,6 @@ def main(global_config, **settings):
143
154
  will need to define their own ``main()`` function, and use that
144
155
  instead.
145
156
  """
146
- settings.setdefault('mako.directories', ['wuttaweb:templates'])
147
-
148
157
  wutta_config = make_wutta_config(settings)
149
158
  pyramid_config = make_pyramid_config(settings)
150
159
 
@@ -26,6 +26,7 @@ Forms Library
26
26
  The ``wuttaweb.forms`` namespace contains the following:
27
27
 
28
28
  * :class:`~wuttaweb.forms.base.Form`
29
+ * :class:`~wuttaweb.forms.base.FieldList`
29
30
  """
30
31
 
31
- from .base import Form
32
+ from .base import Form, FieldList