WuttaWeb 0.20.4__tar.gz → 0.20.5__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.
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/CHANGELOG.md +10 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/PKG-INFO +2 -2
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/pyproject.toml +2 -2
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/forms/base.py +3 -2
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/grids/base.py +7 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/base.mako +6 -1
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/grids/vue_template.mako +12 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/page.mako +1 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/master.py +8 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/grids/test_base.py +2 -2
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/.gitignore +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/COPYING.txt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/README.md +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/Makefile +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/_static/.keepme +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.app.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.auth.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.cli.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.cli.webapp.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.conf.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.db.continuum.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.db.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.db.sess.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.emails.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.forms.base.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.forms.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.forms.schema.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.forms.widgets.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.grids.base.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.grids.filters.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.grids.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.handler.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.helpers.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.menus.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.progress.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.static.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.subscribers.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.util.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.auth.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.base.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.batch.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.common.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.email.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.essential.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.master.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.people.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.progress.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.reports.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.roles.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.settings.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.upgrades.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/api/wuttaweb.views.users.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/conf.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/glossary.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/index.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/make.bat +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/cli/builtin.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/cli/index.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/templates/base.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/templates/index.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/templates/lookup.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/docs/narr/templates/overview.rst +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/_version.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/app.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/auth.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/cli/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/cli/webapp.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/conf.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/db/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/db/continuum.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/db/sess.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/email-templates/feedback.html.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/email-templates/feedback.txt.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/emails.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/forms/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/forms/schema.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/forms/widgets.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/grids/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/grids/filters.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/handler.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/helpers.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/menus.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/progress.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/static/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/static/img/favicon.ico +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/static/img/logo.png +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/static/img/testing.png +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/subscribers.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/appinfo/configure.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/appinfo/index.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/auth/change_password.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/auth/login.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/base_meta.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/batch/view.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/configure.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/checkbox.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/checkbox_choice.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/checked_password.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/dateinput.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/datetimeinput.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/moneyinput.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/password.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/permissions.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/checkbox.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/email_recips.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/filedownload.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/notes.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/objectref.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/permissions.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/readonly/rolerefs.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/select.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/textarea.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/deform/textinput.pt +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/email/settings/view.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/forbidden.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/form.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/forms/vue_template.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/grids/table_element.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/home.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/configure.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/create.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/delete.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/edit.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/form.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/index.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/master/view.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/notfound.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/people/view_profile.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/progress.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/reports/view.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/setup.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/upgrade.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/upgrades/configure.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/upgrades/view.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/templates/wutta-components.mako +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/testing.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/util.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/auth.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/base.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/batch.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/common.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/email.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/essential.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/people.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/progress.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/reports.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/roles.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/settings.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/upgrades.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/src/wuttaweb/views/users.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tasks.py +0 -0
- {wuttaweb-0.20.4/tests/views → wuttaweb-0.20.5/tests}/__init__.py +0 -0
- {wuttaweb-0.20.4/tests/grids → wuttaweb-0.20.5/tests/cli}/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/cli/test_webapp.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/db/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/db/test_continuum.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/forms/test_base.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/forms/test_schema.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/forms/test_widgets.py +0 -0
- {wuttaweb-0.20.4/tests/cli → wuttaweb-0.20.5/tests/grids}/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/grids/test_filters.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_fontawesome_svg_core.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_free_solid_svg_icons.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_oruga.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_oruga_bulma.css +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_oruga_bulma.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_vue.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/bb_vue_fontawesome.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/buefy.css +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/buefy.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/fontawesome.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/vue.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/libcache/vue_resource.js +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_app.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_auth.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_emails.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_handler.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_helpers.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_menus.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_progress.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_static.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_subscribers.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/test_util.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/util.py +0 -0
- {wuttaweb-0.20.4/tests → wuttaweb-0.20.5/tests/views}/__init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test___init__.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_auth.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_base.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_batch.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_common.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_email.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_essential.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_master.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_people.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_progress.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_reports.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_roles.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_settings.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_upgrades.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tests/views/test_users.py +0 -0
- {wuttaweb-0.20.4 → wuttaweb-0.20.5}/tox.ini +0 -0
|
@@ -5,6 +5,16 @@ 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.20.5 (2025-01-23)
|
|
9
|
+
|
|
10
|
+
### Fix
|
|
11
|
+
|
|
12
|
+
- improve styling for grid tools section
|
|
13
|
+
- add basic checkbox support for grids
|
|
14
|
+
- add WuttaRequestMixin for ThisPage component
|
|
15
|
+
- avoid literal `None` when rendering form field value
|
|
16
|
+
- let header title be even wider
|
|
17
|
+
|
|
8
18
|
## v0.20.4 (2025-01-15)
|
|
9
19
|
|
|
10
20
|
### Fix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: WuttaWeb
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.5
|
|
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
|
|
@@ -39,7 +39,7 @@ Requires-Dist: pyramid-tm
|
|
|
39
39
|
Requires-Dist: pyramid>=2
|
|
40
40
|
Requires-Dist: waitress
|
|
41
41
|
Requires-Dist: webhelpers2
|
|
42
|
-
Requires-Dist: wuttjamaican[db]>=0.20.
|
|
42
|
+
Requires-Dist: wuttjamaican[db]>=0.20.2
|
|
43
43
|
Requires-Dist: zope-sqlalchemy>=1.5
|
|
44
44
|
Provides-Extra: continuum
|
|
45
45
|
Requires-Dist: wutta-continuum; extra == 'continuum'
|
|
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "WuttaWeb"
|
|
9
|
-
version = "0.20.
|
|
9
|
+
version = "0.20.5"
|
|
10
10
|
description = "Web App for Wutta Framework"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
authors = [{name = "Lance Edgar", email = "lance@wuttaproject.org"}]
|
|
@@ -44,7 +44,7 @@ dependencies = [
|
|
|
44
44
|
"pyramid_tm",
|
|
45
45
|
"waitress",
|
|
46
46
|
"WebHelpers2",
|
|
47
|
-
"WuttJamaican[db]>=0.20.
|
|
47
|
+
"WuttJamaican[db]>=0.20.2",
|
|
48
48
|
"zope.sqlalchemy>=1.5",
|
|
49
49
|
]
|
|
50
50
|
|
|
@@ -1033,12 +1033,13 @@ class Form:
|
|
|
1033
1033
|
# render static text if field not in deform/schema
|
|
1034
1034
|
# TODO: need to abstract this somehow
|
|
1035
1035
|
if self.model_instance:
|
|
1036
|
-
|
|
1036
|
+
value = self.model_instance[fieldname]
|
|
1037
|
+
html = str(value) if value is not None else ''
|
|
1037
1038
|
else:
|
|
1038
1039
|
html = ''
|
|
1039
1040
|
|
|
1040
1041
|
# mark all that as safe
|
|
1041
|
-
html = HTML.literal(html)
|
|
1042
|
+
html = HTML.literal(html or ' ')
|
|
1042
1043
|
|
|
1043
1044
|
# render field label
|
|
1044
1045
|
label = self.get_label(fieldname)
|
|
@@ -118,6 +118,11 @@ class Grid:
|
|
|
118
118
|
See also :meth:`set_renderer()` and
|
|
119
119
|
:meth:`set_default_renderers()`.
|
|
120
120
|
|
|
121
|
+
.. attribute:: checkable
|
|
122
|
+
|
|
123
|
+
Boolean indicating whether the grid should expose per-row
|
|
124
|
+
checkboxes.
|
|
125
|
+
|
|
121
126
|
.. attribute:: row_class
|
|
122
127
|
|
|
123
128
|
This represents the CSS ``class`` attribute for a row within
|
|
@@ -362,6 +367,7 @@ class Grid:
|
|
|
362
367
|
data=None,
|
|
363
368
|
labels={},
|
|
364
369
|
renderers={},
|
|
370
|
+
checkable=False,
|
|
365
371
|
row_class=None,
|
|
366
372
|
actions=[],
|
|
367
373
|
linked_columns=[],
|
|
@@ -388,6 +394,7 @@ class Grid:
|
|
|
388
394
|
self.key = key
|
|
389
395
|
self.data = data
|
|
390
396
|
self.labels = labels or {}
|
|
397
|
+
self.checkable = checkable
|
|
391
398
|
self.row_class = row_class
|
|
392
399
|
self.actions = actions or []
|
|
393
400
|
self.linked_columns = linked_columns or []
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
#content-title h1 {
|
|
158
|
-
max-width:
|
|
158
|
+
max-width: 95%;
|
|
159
159
|
overflow: hidden;
|
|
160
160
|
padding-left: 0.5rem;
|
|
161
161
|
text-overflow: ellipsis;
|
|
@@ -186,6 +186,11 @@
|
|
|
186
186
|
width: 100%;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
.wutta-grid-tools-wrapper {
|
|
190
|
+
display: flex;
|
|
191
|
+
gap: 0.5rem;
|
|
192
|
+
}
|
|
193
|
+
|
|
189
194
|
##############################
|
|
190
195
|
## forms
|
|
191
196
|
##############################
|
|
@@ -116,6 +116,13 @@
|
|
|
116
116
|
hoverable
|
|
117
117
|
icon-pack="fas"
|
|
118
118
|
|
|
119
|
+
## checkboxes
|
|
120
|
+
% if grid.checkable:
|
|
121
|
+
checkable
|
|
122
|
+
checkbox-position="right"
|
|
123
|
+
:checked-rows.sync="checkedRows"
|
|
124
|
+
% endif
|
|
125
|
+
|
|
119
126
|
## sorting
|
|
120
127
|
% if grid.sortable:
|
|
121
128
|
## nb. buefy/oruga only support *one* default sorter
|
|
@@ -267,6 +274,11 @@
|
|
|
267
274
|
shareLink: null,
|
|
268
275
|
% endif
|
|
269
276
|
|
|
277
|
+
## checkboxes
|
|
278
|
+
% if grid.checkable:
|
|
279
|
+
checkedRows: [],
|
|
280
|
+
% endif
|
|
281
|
+
|
|
270
282
|
## filtering
|
|
271
283
|
% if grid.filterable:
|
|
272
284
|
filters: ${json.dumps(grid.get_vue_filters())|n},
|
|
@@ -189,6 +189,12 @@ class MasterView(View):
|
|
|
189
189
|
|
|
190
190
|
This is optional; see also :meth:`get_grid_columns()`.
|
|
191
191
|
|
|
192
|
+
.. attribute:: checkable
|
|
193
|
+
|
|
194
|
+
Boolean indicating whether the grid should expose per-row
|
|
195
|
+
checkboxes. This is passed along to set
|
|
196
|
+
:attr:`~wuttaweb.grids.base.Grid.checkable` on the grid.
|
|
197
|
+
|
|
192
198
|
.. method:: grid_row_class(obj, data, i)
|
|
193
199
|
|
|
194
200
|
This method is *not* defined on the ``MasterView`` base class;
|
|
@@ -395,6 +401,7 @@ class MasterView(View):
|
|
|
395
401
|
# features
|
|
396
402
|
listable = True
|
|
397
403
|
has_grid = True
|
|
404
|
+
checkable = False
|
|
398
405
|
filterable = True
|
|
399
406
|
filter_defaults = None
|
|
400
407
|
sortable = True
|
|
@@ -1992,6 +1999,7 @@ class MasterView(View):
|
|
|
1992
1999
|
|
|
1993
2000
|
kwargs['tools'] = tools
|
|
1994
2001
|
|
|
2002
|
+
kwargs.setdefault('checkable', self.checkable)
|
|
1995
2003
|
if hasattr(self, 'grid_row_class'):
|
|
1996
2004
|
kwargs.setdefault('row_class', self.grid_row_class)
|
|
1997
2005
|
kwargs.setdefault('filterable', self.filterable)
|
|
@@ -1433,7 +1433,7 @@ class TestGrid(WebTestCase):
|
|
|
1433
1433
|
# null
|
|
1434
1434
|
obj = MagicMock(dt=None)
|
|
1435
1435
|
result = grid.render_date(obj, 'dt', None)
|
|
1436
|
-
self.
|
|
1436
|
+
self.assertEqual(result, '')
|
|
1437
1437
|
|
|
1438
1438
|
# typical
|
|
1439
1439
|
dt = datetime.date(2025, 1, 13)
|
|
@@ -1446,7 +1446,7 @@ class TestGrid(WebTestCase):
|
|
|
1446
1446
|
|
|
1447
1447
|
obj = MagicMock(dt=None)
|
|
1448
1448
|
result = grid.render_datetime(obj, 'dt', None)
|
|
1449
|
-
self.
|
|
1449
|
+
self.assertEqual(result, '')
|
|
1450
1450
|
|
|
1451
1451
|
dt = datetime.datetime(2024, 12, 12, 13, 44, tzinfo=datetime.timezone.utc)
|
|
1452
1452
|
obj = MagicMock(dt=dt)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|