cherrypy-foundation 1.0.0a7__tar.gz → 1.0.0a9__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.
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/.gitlab-ci.yml +23 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation.egg-info → cherrypy_foundation-1.0.0a9}/PKG-INFO +1 -1
- cherrypy_foundation-1.0.0a9/debian/TODO +1 -0
- cherrypy_foundation-1.0.0a9/debian/changelog +5 -0
- cherrypy_foundation-1.0.0a9/debian/control +61 -0
- cherrypy_foundation-1.0.0a9/debian/copyright +27 -0
- cherrypy_foundation-1.0.0a9/debian/python3-cherrypy-foundation.docs +1 -0
- cherrypy_foundation-1.0.0a9/debian/rules +23 -0
- cherrypy_foundation-1.0.0a9/debian/source/format +1 -0
- cherrypy_foundation-1.0.0a9/debian/source/options +25 -0
- cherrypy_foundation-1.0.0a9/debian/upstream/metadata +5 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Field.jinja +2 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Fields.jinja +0 -2
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/error_page.py +1 -1
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/test_error_page.py +6 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/test_flash.py +0 -1
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/test_form.py +4 -4
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/i18n.py +14 -8
- cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools/tests/__init__.py +0 -0
- cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo +0 -0
- cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po +15 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/test_i18n.py +46 -3
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation.egg-info}/PKG-INFO +1 -1
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation.egg-info/SOURCES.txt +12 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/tox.ini +0 -1
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/.gitignore +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/LICENSE.md +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/README.md +0 -0
- /cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/__init__.py → /cherrypy_foundation-1.0.0a9/debian/python3-cherrypy-foundation.links +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/pyproject.toml +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/setup.cfg +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/sonar-project.properties +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/components/tests → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation}/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/ColorModes.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Datatable.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Datatable.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Datatable.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Field.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Field.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Flash.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Icon.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/SideBySideMultiSelect.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/SideBySideMultiSelect.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/SideBySideMultiSelect.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Typeahead.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Typeahead.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/Typeahead.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/plugins → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/components/tests}/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/tests/test_static.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/jquery/jquery.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/multi/LICENSE +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/multi/README.md +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/multi/multi.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/multi/multi.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/popper/popper.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/popper/popper.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/flash.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/form.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/logging.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/passwd.py +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/plugins/tests → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/plugins}/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/db.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/ldap.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/restapi.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/scheduler.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/smtp.py +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/plugins}/tests/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/tests/test_db.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/tests/test_ldap.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/tests/test_scheduler.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/tests/test_smtp.py +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/tools → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tests}/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/templates/test_flash.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/templates/test_form.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/templates/test_url.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/test_passwd.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tests/test_url.py +0 -0
- {cherrypy_foundation-1.0.0a7/src/cherrypy_foundation/tools/tests → cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools}/__init__.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/auth.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/auth_mfa.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/errors.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/jinja2.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/ratelimit.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/secure_headers.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/sessions_timeout.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/components/Button.jinja +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.mo +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.po +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/locales/messages.pot +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/templates/test_jinja2.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/templates/test_jinja2_i18n.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/templates/test_jinjax.html +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/test_auth.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/test_auth_mfa.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/test_jinja2.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/tests/test_ratelimit.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/url.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/widgets.py +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation.egg-info/dependency_links.txt +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation.egg-info/requires.txt +0 -0
- {cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation.egg-info/top_level.txt +0 -0
|
@@ -58,6 +58,29 @@ package:py3:
|
|
|
58
58
|
- dist/*.tar.gz
|
|
59
59
|
expire_in: 1 day
|
|
60
60
|
|
|
61
|
+
package:deb:
|
|
62
|
+
stage: package
|
|
63
|
+
needs: []
|
|
64
|
+
image: buildpack-deps:$DIST
|
|
65
|
+
parallel:
|
|
66
|
+
matrix:
|
|
67
|
+
- DIST: [trixie]
|
|
68
|
+
script: |
|
|
69
|
+
set -x
|
|
70
|
+
set -e
|
|
71
|
+
apt update
|
|
72
|
+
apt -y --no-install-recommends install devscripts lintian
|
|
73
|
+
apt build-dep -y .
|
|
74
|
+
export DEBEMAIL=$CI_COMMIT_AUTHOR
|
|
75
|
+
dch -v "$(python3 -m setuptools_scm)" "automated build"
|
|
76
|
+
dpkg-buildpackage -b
|
|
77
|
+
lintian
|
|
78
|
+
mkdir -p ./dist/$DIST
|
|
79
|
+
mv ../*.deb ./dist/$DIST/
|
|
80
|
+
artifacts:
|
|
81
|
+
paths:
|
|
82
|
+
- ./dist/*
|
|
83
|
+
|
|
61
84
|
publish:sonar:
|
|
62
85
|
allow_failure: true
|
|
63
86
|
image: sonarsource/sonar-scanner-cli
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
symlink for all vendor files - bootstrap, jquery, etc.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Source: cherrypy-foundation
|
|
2
|
+
Section: web
|
|
3
|
+
Priority: optional
|
|
4
|
+
Maintainer: Patrik Dufresne <patrik@ikus-soft.com>
|
|
5
|
+
Build-Depends:
|
|
6
|
+
chromium-driver,
|
|
7
|
+
debhelper-compat (= 13),
|
|
8
|
+
dh-python,
|
|
9
|
+
dh-sequence-python3,
|
|
10
|
+
pybuild-plugin-pyproject,
|
|
11
|
+
python3,
|
|
12
|
+
python3-all-dev,
|
|
13
|
+
python3-apscheduler,
|
|
14
|
+
python3-argon2,
|
|
15
|
+
python3-babel,
|
|
16
|
+
python3-cherrypy3,
|
|
17
|
+
python3-jinja2,
|
|
18
|
+
python3-jinjax,
|
|
19
|
+
python3-ldap3,
|
|
20
|
+
python3-oauthlib,
|
|
21
|
+
python3-parameterized,
|
|
22
|
+
python3-pip,
|
|
23
|
+
python3-pytest,
|
|
24
|
+
python3-requests,
|
|
25
|
+
python3-requests-oauthlib,
|
|
26
|
+
python3-responses,
|
|
27
|
+
python3-selenium,
|
|
28
|
+
python3-setuptools,
|
|
29
|
+
python3-setuptools-scm,
|
|
30
|
+
python3-sqlalchemy,
|
|
31
|
+
python3-tz,
|
|
32
|
+
python3-wtforms,
|
|
33
|
+
Rules-Requires-Root: no
|
|
34
|
+
Standards-Version: 4.7.0
|
|
35
|
+
Homepage: https://gitlab.com/ikus-soft/cherrypy-foundation
|
|
36
|
+
Vcs-Git: https://gitlab.com/ikus-soft/cherrypy-foundation.git
|
|
37
|
+
Vcs-Browser: https://gitlab.com/ikus-soft/cherrypy-foundation
|
|
38
|
+
|
|
39
|
+
Package: python3-cherrypy-foundation
|
|
40
|
+
Architecture: all
|
|
41
|
+
Depends:
|
|
42
|
+
libjs-bootstrap5,
|
|
43
|
+
libjs-jquery,
|
|
44
|
+
libjs-jquery-datatables,
|
|
45
|
+
libjs-jquery-datatables-extensions,
|
|
46
|
+
${python3:Depends},
|
|
47
|
+
${misc:Depends},
|
|
48
|
+
Suggests:
|
|
49
|
+
python3-apscheduler,
|
|
50
|
+
python3-argon2,
|
|
51
|
+
python3-jinja2,
|
|
52
|
+
python3-jinjax,
|
|
53
|
+
python3-ldap3,
|
|
54
|
+
python3-oauthlib,
|
|
55
|
+
python3-requests-oauthlib,
|
|
56
|
+
Description: Common utilities and integrations for building CherryPy web applications
|
|
57
|
+
This project provides a collection of reusable utilities that simplify
|
|
58
|
+
building web applications with CherryPy. It offers built-in integrations
|
|
59
|
+
with SQLAlchemy for database access, Jinja2 for templating, WTForms for
|
|
60
|
+
form handling, and Bootstrap for UI components, helping streamline
|
|
61
|
+
application development.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
|
2
|
+
Upstream-Name: cherrypy-foundation
|
|
3
|
+
Upstream-Contact: Patrik Dufresne <patrik@ikus-soft.com>
|
|
4
|
+
Source: https://gitlab.com/ikus-soft/cherrypy-foundation/-/tags
|
|
5
|
+
Files-Excluded:
|
|
6
|
+
src/cherrypy_foundation/components/vendor
|
|
7
|
+
|
|
8
|
+
Files: *
|
|
9
|
+
Copyright: 2019-2025 Patrik Dufresne <patrik@ikus-soft.com>
|
|
10
|
+
License: GPL-3+
|
|
11
|
+
|
|
12
|
+
License: GPL-3+
|
|
13
|
+
This program is free software: you can redistribute it and/or modify
|
|
14
|
+
it under the terms of the GNU General Public License as published by
|
|
15
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
16
|
+
(at your option) any later version.
|
|
17
|
+
.
|
|
18
|
+
This program is distributed in the hope that it will be useful,
|
|
19
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21
|
+
GNU General Public License for more details.
|
|
22
|
+
.
|
|
23
|
+
You should have received a copy of the GNU General Public License
|
|
24
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
25
|
+
.
|
|
26
|
+
The full text of the GNU General Public License version 3
|
|
27
|
+
can be found in the file /usr/share/common-licenses/GPL-3.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
README.md
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/make -f
|
|
2
|
+
|
|
3
|
+
include /usr/share/dpkg/pkg-info.mk
|
|
4
|
+
|
|
5
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_RDIFFWEB := $(DEB_VERSION_UPSTREAM)
|
|
6
|
+
|
|
7
|
+
# Force use of pyproject.toml
|
|
8
|
+
export PYBUILD_SYSTEM=pyproject
|
|
9
|
+
|
|
10
|
+
# For testing, we need a timezone
|
|
11
|
+
export TZ=UTC
|
|
12
|
+
|
|
13
|
+
%:
|
|
14
|
+
dh $@ --buildsystem=pybuild --test-tox
|
|
15
|
+
|
|
16
|
+
execute_before_dh_auto_clean:
|
|
17
|
+
rm -rf *.egg-info
|
|
18
|
+
|
|
19
|
+
# Generate orig.tar.gz
|
|
20
|
+
gentarball: SOURCE=cherrypy-foundation
|
|
21
|
+
gentarball:
|
|
22
|
+
git archive --format=tar HEAD --prefix=$(SOURCE)-$(DEB_VERSION_UPSTREAM)/ | gzip -9 > ../$(SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
|
|
23
|
+
mk-origtargz --compression gzip ../$(SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.0 (quilt)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Ignore excluded files in d/copyright
|
|
2
|
+
extend-diff-ignore = "extras"
|
|
3
|
+
extend-diff-ignore = "rdiffweb/static/css/bootstrap.min.css"
|
|
4
|
+
extend-diff-ignore = "rdiffweb/static/css/bootstrap.min.css.map"
|
|
5
|
+
extend-diff-ignore = "rdiffweb/static/css/font-awesome.css.map"
|
|
6
|
+
extend-diff-ignore = "rdiffweb/static/css/font-awesome.min.css"
|
|
7
|
+
extend-diff-ignore = "rdiffweb/static/css/jquery.dataTables.min.css"
|
|
8
|
+
extend-diff-ignore = "rdiffweb/static/css/responsive.dataTables.min.css"
|
|
9
|
+
extend-diff-ignore = "rdiffweb/static/fonts/fontawesome-webfont.eot"
|
|
10
|
+
extend-diff-ignore = "rdiffweb/static/fonts/fontawesome-webfont.svg"
|
|
11
|
+
extend-diff-ignore = "rdiffweb/static/fonts/fontawesome-webfont.woff"
|
|
12
|
+
extend-diff-ignore = "rdiffweb/static/fonts/fontawesome-webfont.woff2"
|
|
13
|
+
extend-diff-ignore = "rdiffweb/static/images/sort_asc.png"
|
|
14
|
+
extend-diff-ignore = "rdiffweb/static/images/sort_asc_disabled.png"
|
|
15
|
+
extend-diff-ignore = "rdiffweb/static/images/sort_both.png"
|
|
16
|
+
extend-diff-ignore = "rdiffweb/static/images/sort_desc.png"
|
|
17
|
+
extend-diff-ignore = "rdiffweb/static/images/sort_desc_disabled.png"
|
|
18
|
+
extend-diff-ignore = "rdiffweb/static/js/bootstrap.bundle.js.map"
|
|
19
|
+
extend-diff-ignore = "rdiffweb/static/js/bootstrap.bundle.min.js"
|
|
20
|
+
extend-diff-ignore = "rdiffweb/static/js/chartkick.min.js"
|
|
21
|
+
extend-diff-ignore = "rdiffweb/static/js/chart.min.js"
|
|
22
|
+
extend-diff-ignore = "rdiffweb/static/js/dataTables.buttons.min.js"
|
|
23
|
+
extend-diff-ignore = "rdiffweb/static/js/dataTables.responsive.min.js"
|
|
24
|
+
extend-diff-ignore = "rdiffweb/static/js/jquery.dataTables.min.js"
|
|
25
|
+
extend-diff-ignore = "rdiffweb/static/js/jquery.min.js"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Name: rdiffweb
|
|
2
|
+
Bug-Database: https://gitlab.com/ikus-soft/cherrypy-foundation/-/issues
|
|
3
|
+
Contact: https://gitlab.com/ikus-soft/cherrypy-foundation/-/project_members
|
|
4
|
+
Repository: git://git@gitlab.com:ikus-soft/cherrypy-foundation.git
|
|
5
|
+
Repository-Browse: https://gitlab.com/ikus-soft/cherrypy-foundation/
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
{# def field, floating=False #}
|
|
2
|
+
{#css vendor/bootstrap5/css/bootstrap.min.css #}
|
|
3
|
+
{#js vendor/jquery/jquery.min.js, vendor/popper/popper.min.js, vendor/bootstrap5/js/bootstrap.min.js #}
|
|
2
4
|
{# djlint:off #}
|
|
3
5
|
{% set bootstrap_class_table = {
|
|
4
6
|
"CheckboxInput": ("form-check-input", "form-check-label", False, True),
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
{# def form, floating=False #}
|
|
2
|
-
{#css vendor/bootstrap5/css/bootstrap.min.css #}
|
|
3
|
-
{#js vendor/jquery/jquery.min.js, vendor/popper/popper.min.js, vendor/bootstrap5/js/bootstrap.min.js #}
|
|
4
2
|
<div class="row">
|
|
5
3
|
{% for id, field in form._fields.items() %}<Field field={{ field }} floating={{ floating }} />{% endfor %}
|
|
6
4
|
</div>
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/error_page.py
RENAMED
|
@@ -63,7 +63,7 @@ def error_page(status='', message='', traceback='', version=''):
|
|
|
63
63
|
)
|
|
64
64
|
|
|
65
65
|
# Replace message by generic one for 404. Default implementation leak path info.
|
|
66
|
-
if status == '404 Not Found':
|
|
66
|
+
if status == '404 Not Found' and cherrypy.serving.request.path_info in message:
|
|
67
67
|
message = 'Nothing matches the given URI'
|
|
68
68
|
|
|
69
69
|
# Check expected response type.
|
|
@@ -29,6 +29,10 @@ class Root:
|
|
|
29
29
|
|
|
30
30
|
@cherrypy.expose
|
|
31
31
|
def not_found(self):
|
|
32
|
+
raise cherrypy.NotFound()
|
|
33
|
+
|
|
34
|
+
@cherrypy.expose
|
|
35
|
+
def not_found_custom(self):
|
|
32
36
|
raise cherrypy.HTTPError(404, message='My error message')
|
|
33
37
|
|
|
34
38
|
@cherrypy.expose
|
|
@@ -60,6 +64,8 @@ class ErrorPageTest(helper.CPWebCase):
|
|
|
60
64
|
|
|
61
65
|
@parameterized.expand(
|
|
62
66
|
[
|
|
67
|
+
('/not_found', '<p>Nothing matches the given URI</p>'),
|
|
68
|
+
('/not_found_custom', '<p>My error message</p>'),
|
|
63
69
|
('/html_error', '<p>My error message</p>'),
|
|
64
70
|
('/json_error', '{"message": "json error message", "status": "400 Bad Request"}'),
|
|
65
71
|
('/text_error', 'text error message'),
|
|
@@ -57,6 +57,5 @@ class FormTest(helper.CPWebCase):
|
|
|
57
57
|
self.assertStatus(200)
|
|
58
58
|
# Then page display the message.
|
|
59
59
|
self.assertInBody('test-flash')
|
|
60
|
-
self.assertInBody('<div class="mb-2 flash-messages" style="min-height:100px">')
|
|
61
60
|
self.assertInBody('<div class="alert alert-info alert-dismissible fade show"')
|
|
62
61
|
self.assertInBody('default flash message')
|
|
@@ -109,8 +109,8 @@ class FormTest(helper.CPWebCase):
|
|
|
109
109
|
'<input class="form-check-input" container-class="col-sm-6" id="persistent" label-attr="FOO" name="persistent" type="checkbox" value="y">'
|
|
110
110
|
)
|
|
111
111
|
self.assertInBody('<label attr="FOO" class="form-check-label" for="persistent">Remember me</label>')
|
|
112
|
-
# 5. check submit button
|
|
113
|
-
self.assertInBody('<div attr="BAR"
|
|
114
|
-
self.
|
|
115
|
-
'<input class="btn-primary float-end btn" container-attr="BAR" container-class="col-sm-6" id="submit" name="submit" type="submit" value="Login">'
|
|
112
|
+
# 5. check submit button (regex matches because class could have different order with jinjax<=0.57)
|
|
113
|
+
self.assertInBody('<div attr="BAR"')
|
|
114
|
+
self.assertMatchesBody(
|
|
115
|
+
'<input class="(btn-primary ?|float-end ?|btn ?){3}" container-attr="BAR" container-class="col-sm-6" id="submit" name="submit" type="submit" value="Login">'
|
|
116
116
|
)
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/i18n.py
RENAMED
|
@@ -162,7 +162,7 @@ def preferred_timezone(timezone):
|
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
@lru_cache(maxsize=10)
|
|
165
|
-
def _search_translation(dirname, domain, *
|
|
165
|
+
def _search_translation(dirname, domain, *locales):
|
|
166
166
|
"""
|
|
167
167
|
Loads the first existing translations for known locale.
|
|
168
168
|
|
|
@@ -177,15 +177,19 @@ def _search_translation(dirname, domain, *langs):
|
|
|
177
177
|
|
|
178
178
|
:returns: Translations, the corresponding Locale object.
|
|
179
179
|
"""
|
|
180
|
-
if not isinstance(
|
|
181
|
-
|
|
182
|
-
t = Translations.load(dirname,
|
|
180
|
+
if not isinstance(locales, (list, tuple)):
|
|
181
|
+
locales = [locales]
|
|
182
|
+
t = Translations.load(dirname, locales, domain)
|
|
183
183
|
# Ignore null translation
|
|
184
184
|
if t.__class__ is NullTranslations:
|
|
185
185
|
return None
|
|
186
|
-
#
|
|
187
|
-
|
|
188
|
-
|
|
186
|
+
# Assign prefered local to this translation to know the current locale.
|
|
187
|
+
trans_locale = Locale.parse(t.files[0].split('/')[-3])
|
|
188
|
+
for locale in locales:
|
|
189
|
+
locale = Locale.parse(locale)
|
|
190
|
+
if trans_locale == locale or trans_locale.language == locale.language:
|
|
191
|
+
t.locale = locale
|
|
192
|
+
break
|
|
189
193
|
return t
|
|
190
194
|
|
|
191
195
|
|
|
@@ -424,7 +428,9 @@ def _set_content_language(**kwargs):
|
|
|
424
428
|
language of `cherrypy.response.i18n.locale`.
|
|
425
429
|
"""
|
|
426
430
|
if 'Content-Language' not in cherrypy.response.headers:
|
|
427
|
-
|
|
431
|
+
locale = get_translation().locale
|
|
432
|
+
language_tag = f"{locale.language}-{locale.territory}" if locale.territory else locale.language
|
|
433
|
+
cherrypy.response.headers['Content-Language'] = language_tag
|
|
428
434
|
|
|
429
435
|
|
|
430
436
|
class I18nTool(cherrypy.Tool):
|
|
File without changes
|
cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo
ADDED
|
Binary file
|
cherrypy_foundation-1.0.0a9/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
msgid ""
|
|
2
|
+
msgstr ""
|
|
3
|
+
"Project-Id-Version: \n"
|
|
4
|
+
"POT-Creation-Date: \n"
|
|
5
|
+
"PO-Revision-Date: \n"
|
|
6
|
+
"Last-Translator: \n"
|
|
7
|
+
"Language-Team: \n"
|
|
8
|
+
"Language: de\n"
|
|
9
|
+
"MIME-Version: 1.0\n"
|
|
10
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
11
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
12
|
+
"X-Generator: Poedit 3.6\n"
|
|
13
|
+
|
|
14
|
+
msgid "Some text to translate"
|
|
15
|
+
msgstr "Einige zu übersetzende Texte"
|
|
@@ -83,6 +83,13 @@ class AbstractI18nTest(helper.CPWebCase):
|
|
|
83
83
|
|
|
84
84
|
class TestI18nWebCase(AbstractI18nTest):
|
|
85
85
|
|
|
86
|
+
def test_language_with_invalid(self):
|
|
87
|
+
# Query the page without login-in
|
|
88
|
+
self.getPage("/", headers=[("Accept-Language", "invalid")])
|
|
89
|
+
self.assertStatus('200 OK')
|
|
90
|
+
self.assertHeaderItemValue("Content-Language", "en")
|
|
91
|
+
self.assertInBody(TEXT_EN)
|
|
92
|
+
|
|
86
93
|
def test_language_with_unknown(self):
|
|
87
94
|
# Query the page without login-in
|
|
88
95
|
self.getPage("/", headers=[("Accept-Language", "it")])
|
|
@@ -93,13 +100,13 @@ class TestI18nWebCase(AbstractI18nTest):
|
|
|
93
100
|
def test_language_en(self):
|
|
94
101
|
self.getPage("/", headers=[("Accept-Language", "en-US,en;q=0.8")])
|
|
95
102
|
self.assertStatus('200 OK')
|
|
96
|
-
self.assertHeaderItemValue("Content-Language", "en")
|
|
103
|
+
self.assertHeaderItemValue("Content-Language", "en-US")
|
|
97
104
|
self.assertInBody(TEXT_EN)
|
|
98
105
|
|
|
99
106
|
def test_language_en_fr(self):
|
|
100
107
|
self.getPage("/", headers=[("Accept-Language", "en-US,en;q=0.8,fr-CA;q=0.8")])
|
|
101
108
|
self.assertStatus('200 OK')
|
|
102
|
-
self.assertHeaderItemValue("Content-Language", "en")
|
|
109
|
+
self.assertHeaderItemValue("Content-Language", "en-US")
|
|
103
110
|
self.assertInBody(TEXT_EN)
|
|
104
111
|
|
|
105
112
|
def test_language_fr(self):
|
|
@@ -107,7 +114,7 @@ class TestI18nWebCase(AbstractI18nTest):
|
|
|
107
114
|
self.assertInBody(TEXT_EN)
|
|
108
115
|
self.getPage("/", headers=[("Accept-Language", "fr-CA;q=0.8,fr;q=0.6")])
|
|
109
116
|
self.assertStatus('200 OK')
|
|
110
|
-
self.assertHeaderItemValue("Content-Language", "fr")
|
|
117
|
+
self.assertHeaderItemValue("Content-Language", "fr-CA")
|
|
111
118
|
self.assertInBody(TEXT_FR)
|
|
112
119
|
|
|
113
120
|
def test_with_preferred_lang(self):
|
|
@@ -125,6 +132,42 @@ class TestI18nWebCase(AbstractI18nTest):
|
|
|
125
132
|
self.assertEqual(TEXT_EN, i18n.ugettext(TEXT_EN))
|
|
126
133
|
self.assertIn('March', i18n.format_datetime(date, format='long'))
|
|
127
134
|
|
|
135
|
+
def test_format_datetime_locales(self):
|
|
136
|
+
date = datetime.fromtimestamp(1680111611, timezone.utc)
|
|
137
|
+
with i18n.preferred_timezone('utc'):
|
|
138
|
+
with i18n.preferred_lang('fr'):
|
|
139
|
+
self.assertEqual('29 mars 2023, 17:40:11 TU', i18n.format_datetime(date, format='long'))
|
|
140
|
+
with i18n.preferred_lang('en'):
|
|
141
|
+
self.assertEqual('March 29, 2023, 5:40:11\u202fPM UTC', i18n.format_datetime(date, format='long'))
|
|
142
|
+
with i18n.preferred_lang('en_US'):
|
|
143
|
+
self.assertEqual('March 29, 2023, 5:40:11\u202fPM UTC', i18n.format_datetime(date, format='long'))
|
|
144
|
+
with i18n.preferred_lang('en_GB'):
|
|
145
|
+
self.assertEqual('29 March 2023, 17:40:11 UTC', i18n.format_datetime(date, format='long'))
|
|
146
|
+
with i18n.preferred_lang('en_CH'):
|
|
147
|
+
self.assertEqual('29 March 2023, 17:40:11 UTC', i18n.format_datetime(date, format='long'))
|
|
148
|
+
with i18n.preferred_lang('de'):
|
|
149
|
+
self.assertEqual('29. März 2023, 17:40:11 UTC', i18n.format_datetime(date, format='long'))
|
|
150
|
+
with i18n.preferred_lang('de_CH'):
|
|
151
|
+
self.assertEqual('29. März 2023, 17:40:11 UTC', i18n.format_datetime(date, format='long'))
|
|
152
|
+
|
|
153
|
+
with i18n.preferred_timezone('CET'):
|
|
154
|
+
with i18n.preferred_lang('fr'):
|
|
155
|
+
self.assertEqual('29 mars 2023, 19:40:11 +0200', i18n.format_datetime(date, format='long'))
|
|
156
|
+
with i18n.preferred_lang('fr_CH'):
|
|
157
|
+
self.assertEqual('29 mars 2023, 19:40:11 +0200', i18n.format_datetime(date, format='long'))
|
|
158
|
+
with i18n.preferred_lang('en'):
|
|
159
|
+
self.assertEqual('March 29, 2023, 7:40:11\u202fPM +0200', i18n.format_datetime(date, format='long'))
|
|
160
|
+
with i18n.preferred_lang('en_US'):
|
|
161
|
+
self.assertEqual('March 29, 2023, 7:40:11\u202fPM +0200', i18n.format_datetime(date, format='long'))
|
|
162
|
+
with i18n.preferred_lang('en_GB'):
|
|
163
|
+
self.assertEqual('29 March 2023, 19:40:11 CEST', i18n.format_datetime(date, format='long'))
|
|
164
|
+
with i18n.preferred_lang('en_CH'):
|
|
165
|
+
self.assertEqual('29 March 2023, 19:40:11 CEST', i18n.format_datetime(date, format='long'))
|
|
166
|
+
with i18n.preferred_lang('de'):
|
|
167
|
+
self.assertEqual('29. März 2023, 19:40:11 MESZ', i18n.format_datetime(date, format='long'))
|
|
168
|
+
with i18n.preferred_lang('de_CH'):
|
|
169
|
+
self.assertEqual('29. März 2023, 19:40:11 MESZ', i18n.format_datetime(date, format='long'))
|
|
170
|
+
|
|
128
171
|
|
|
129
172
|
class TestI18nDefaultLangWebCase(AbstractI18nTest):
|
|
130
173
|
default_lang = 'FR'
|
|
@@ -5,6 +5,16 @@ README.md
|
|
|
5
5
|
pyproject.toml
|
|
6
6
|
sonar-project.properties
|
|
7
7
|
tox.ini
|
|
8
|
+
debian/TODO
|
|
9
|
+
debian/changelog
|
|
10
|
+
debian/control
|
|
11
|
+
debian/copyright
|
|
12
|
+
debian/python3-cherrypy-foundation.docs
|
|
13
|
+
debian/python3-cherrypy-foundation.links
|
|
14
|
+
debian/rules
|
|
15
|
+
debian/source/format
|
|
16
|
+
debian/source/options
|
|
17
|
+
debian/upstream/metadata
|
|
8
18
|
src/cherrypy_foundation/__init__.py
|
|
9
19
|
src/cherrypy_foundation/error_page.py
|
|
10
20
|
src/cherrypy_foundation/flash.py
|
|
@@ -128,6 +138,8 @@ src/cherrypy_foundation/tools/tests/test_jinja2.py
|
|
|
128
138
|
src/cherrypy_foundation/tools/tests/test_ratelimit.py
|
|
129
139
|
src/cherrypy_foundation/tools/tests/components/Button.jinja
|
|
130
140
|
src/cherrypy_foundation/tools/tests/locales/messages.pot
|
|
141
|
+
src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo
|
|
142
|
+
src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po
|
|
131
143
|
src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.mo
|
|
132
144
|
src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.po
|
|
133
145
|
src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo
|
|
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
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/flash.py
RENAMED
|
File without changes
|
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/logging.py
RENAMED
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/passwd.py
RENAMED
|
File without changes
|
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/db.py
RENAMED
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/ldap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/plugins/smtp.py
RENAMED
|
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
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/errors.py
RENAMED
|
File without changes
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/tools/jinja2.py
RENAMED
|
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
|
{cherrypy_foundation-1.0.0a7 → cherrypy_foundation-1.0.0a9}/src/cherrypy_foundation/widgets.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|