cherrypy-foundation 1.0.0a4__tar.gz → 1.0.0a5__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 (136) hide show
  1. {cherrypy_foundation-1.0.0a4/src/cherrypy_foundation.egg-info → cherrypy_foundation-1.0.0a5}/PKG-INFO +1 -1
  2. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/templates/test_url.html +3 -2
  3. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/test_url.py +23 -15
  4. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/url.py +5 -3
  5. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5/src/cherrypy_foundation.egg-info}/PKG-INFO +1 -1
  6. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/.gitignore +0 -0
  7. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/.gitlab-ci.yml +0 -0
  8. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/LICENSE.md +0 -0
  9. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/README.md +0 -0
  10. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/pyproject.toml +0 -0
  11. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/setup.cfg +0 -0
  12. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/sonar-project.properties +0 -0
  13. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/__init__.py +0 -0
  14. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/ColorModes.jinja +0 -0
  15. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Datatable.css +0 -0
  16. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Datatable.jinja +0 -0
  17. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Datatable.js +0 -0
  18. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Field.css +0 -0
  19. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Field.jinja +0 -0
  20. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Field.js +0 -0
  21. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Fields.jinja +0 -0
  22. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Icon.jinja +0 -0
  23. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/SideBySideMultiSelect.css +0 -0
  24. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/SideBySideMultiSelect.jinja +0 -0
  25. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/SideBySideMultiSelect.js +0 -0
  26. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Typeahead.css +0 -0
  27. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Typeahead.jinja +0 -0
  28. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/Typeahead.js +0 -0
  29. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/__init__.py +0 -0
  30. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/tests/__init__.py +0 -0
  31. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/tests/test_static.py +0 -0
  32. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  33. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +0 -0
  34. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  35. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  36. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +0 -0
  37. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +0 -0
  38. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +0 -0
  39. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +0 -0
  40. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +0 -0
  41. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +0 -0
  42. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +0 -0
  43. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +0 -0
  44. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +0 -0
  45. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +0 -0
  46. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +0 -0
  47. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
  48. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
  49. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
  50. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
  51. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
  52. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.js +0 -0
  53. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +0 -0
  54. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +0 -0
  55. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.min.css +0 -0
  56. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +0 -0
  57. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.min.js +0 -0
  58. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +0 -0
  59. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.min.js +0 -0
  60. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +0 -0
  61. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.min.css +0 -0
  62. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +0 -0
  63. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.min.js +0 -0
  64. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +0 -0
  65. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +0 -0
  66. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +0 -0
  67. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.min.css +0 -0
  68. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +0 -0
  69. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.min.js +0 -0
  70. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +0 -0
  71. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +0 -0
  72. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +0 -0
  73. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +0 -0
  74. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.min.css +0 -0
  75. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +0 -0
  76. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.min.js +0 -0
  77. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/jquery/jquery.min.js +0 -0
  78. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/multi/LICENSE +0 -0
  79. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/multi/README.md +0 -0
  80. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/multi/multi.css +0 -0
  81. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/multi/multi.js +0 -0
  82. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/popper/popper.js +0 -0
  83. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/popper/popper.min.js +0 -0
  84. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +0 -0
  85. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +0 -0
  86. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/error_page.py +0 -0
  87. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/flash.py +0 -0
  88. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/form.py +0 -0
  89. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/logging.py +0 -0
  90. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/passwd.py +0 -0
  91. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/__init__.py +0 -0
  92. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/db.py +0 -0
  93. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/ldap.py +0 -0
  94. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/restapi.py +0 -0
  95. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/scheduler.py +0 -0
  96. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/smtp.py +0 -0
  97. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/tests/__init__.py +0 -0
  98. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/tests/test_db.py +0 -0
  99. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/tests/test_ldap.py +0 -0
  100. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/tests/test_scheduler.py +0 -0
  101. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/plugins/tests/test_smtp.py +0 -0
  102. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/__init__.py +0 -0
  103. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/templates/test_form.html +0 -0
  104. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/test_error_page.py +0 -0
  105. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/test_form.py +0 -0
  106. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tests/test_passwd.py +0 -0
  107. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/__init__.py +0 -0
  108. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/auth.py +0 -0
  109. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/auth_mfa.py +0 -0
  110. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/errors.py +0 -0
  111. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/i18n.py +0 -0
  112. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/jinja2.py +0 -0
  113. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/ratelimit.py +0 -0
  114. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/secure_headers.py +0 -0
  115. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/sessions_timeout.py +0 -0
  116. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/__init__.py +0 -0
  117. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/components/Button.jinja +0 -0
  118. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.mo +0 -0
  119. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.po +0 -0
  120. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
  121. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +0 -0
  122. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/locales/messages.pot +0 -0
  123. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/templates/test_jinja2.html +0 -0
  124. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/templates/test_jinja2_i18n.html +0 -0
  125. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/templates/test_jinjax.html +0 -0
  126. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/test_auth.py +0 -0
  127. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/test_auth_mfa.py +0 -0
  128. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/test_i18n.py +0 -0
  129. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/test_jinja2.py +0 -0
  130. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/tools/tests/test_ratelimit.py +0 -0
  131. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation/widgets.py +0 -0
  132. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation.egg-info/SOURCES.txt +0 -0
  133. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation.egg-info/dependency_links.txt +0 -0
  134. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation.egg-info/requires.txt +0 -0
  135. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/src/cherrypy_foundation.egg-info/top_level.txt +0 -0
  136. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cherrypy-foundation
3
- Version: 1.0.0a4
3
+ Version: 1.0.0a5
4
4
  Summary: CherryPy Foundation
5
5
  Author-email: Patrik Dufresne <patrik@ikus-soft.com>
6
6
  License: GPLv3
@@ -3,11 +3,12 @@
3
3
  <title>test-url</title>
4
4
  </head>
5
5
  <body>
6
- Empty: {{ url_for(".", **kwargs) }}<br/>
6
+ Empty: {{ url_for("", **kwargs) }}<br/>
7
7
  Dot: {{ url_for(".", **kwargs) }}<br/>
8
+ Dot page: {{ url_for(".", "my-page", **kwargs) }}<br/>
8
9
  Slash: {{ url_for("/", **kwargs) }}<br/>
9
10
  Page: {{ url_for("my-page", **kwargs) }}<br/>
10
- Absolute page: {{ url_for("/my-page", **kwargs) }}<br/>
11
+ Slash page: {{ url_for("/my-page", **kwargs) }}<br/>
11
12
  Query: {{ url_for("my-page", foo='1', bar='test with space', **kwargs) }}<br/>
12
13
  </body>
13
14
  </html>
@@ -34,7 +34,8 @@ class SubPage:
34
34
  @cherrypy.expose
35
35
  @cherrypy.tools.jinja2(template='test_url.html')
36
36
  def index(self, **kwargs):
37
- return {'kwargs': kwargs}
37
+ _relative = cherrypy.request.headers.get('-Relative')
38
+ return {'kwargs': {'_relative': _relative or None}}
38
39
 
39
40
 
40
41
  @cherrypy.tools.proxy(base='https://www.example.com')
@@ -43,7 +44,8 @@ class ProxiedPage:
43
44
  @cherrypy.expose
44
45
  @cherrypy.tools.jinja2(template='test_url.html')
45
46
  def index(self, **kwargs):
46
- return {'kwargs': kwargs}
47
+ _relative = cherrypy.request.headers.get('-Relative')
48
+ return {'kwargs': {'_relative': _relative or None}}
47
49
 
48
50
 
49
51
  @cherrypy.tools.jinja2(env=env)
@@ -54,7 +56,8 @@ class Root:
54
56
  @cherrypy.expose
55
57
  @cherrypy.tools.jinja2(template='test_url.html')
56
58
  def index(self, **kwargs):
57
- return {'kwargs': kwargs}
59
+ _relative = cherrypy.request.headers.get('-Relative')
60
+ return {'kwargs': {'_relative': _relative or None}}
58
61
 
59
62
 
60
63
  class UrlTest(helper.CPWebCase):
@@ -87,15 +90,16 @@ class UrlTest(helper.CPWebCase):
87
90
  # 2. Check user field
88
91
  self.assertInBody(f'Empty: http://{self.HOST}:{self.PORT}/')
89
92
  self.assertInBody(f'Dot: http://{self.HOST}:{self.PORT}/')
93
+ self.assertInBody(f'Dot page: http://{self.HOST}:{self.PORT}/my-page')
90
94
  self.assertInBody(f'Slash: http://{self.HOST}:{self.PORT}/')
91
95
  self.assertInBody(f'Page: http://{self.HOST}:{self.PORT}/my-page')
92
- self.assertInBody(f'Absolute page: http://{self.HOST}:{self.PORT}/my-page')
96
+ self.assertInBody(f'Slash page: http://{self.HOST}:{self.PORT}/my-page')
93
97
  self.assertInBody(f'Query: http://{self.HOST}:{self.PORT}/my-page?bar=test+with+space&amp;foo=1')
94
98
 
95
99
  def test_get_page_relative_true(self):
96
100
  # Given a form
97
101
  # When querying the page that include this form
98
- self.getPage("/?_relative=1")
102
+ self.getPage("/", headers=[('_relative', '1')])
99
103
  self.assertStatus(200)
100
104
  # Then each field is render properly.
101
105
  # 1. Check title
@@ -103,15 +107,16 @@ class UrlTest(helper.CPWebCase):
103
107
  # 2. Check user field
104
108
  self.assertInBody('Empty: <br/>')
105
109
  self.assertInBody('Dot: <br/>')
110
+ self.assertInBody('Dot page: my-page<br/>')
106
111
  self.assertInBody('Slash: <br/>')
107
112
  self.assertInBody('Page: my-page<br/>')
108
- self.assertInBody('Absolute page: my-page<br/>')
113
+ self.assertInBody('Slash page: my-page<br/>')
109
114
  self.assertInBody('Query: my-page?bar=test+with+space&amp;foo=1<br/>')
110
115
 
111
116
  def test_get_page_relative_server(self):
112
117
  # Given a form
113
118
  # When querying the page that include this form
114
- self.getPage("/?_relative=server")
119
+ self.getPage("/", headers=[('_relative', 'server')])
115
120
  self.assertStatus(200)
116
121
  # Then each field is render properly.
117
122
  # 1. Check title
@@ -119,9 +124,10 @@ class UrlTest(helper.CPWebCase):
119
124
  # 2. Check user field
120
125
  self.assertInBody('Empty: /<br/>')
121
126
  self.assertInBody('Dot: /<br/>')
127
+ self.assertInBody('Dot page: /my-page<br/>')
122
128
  self.assertInBody('Slash: /<br/>')
123
129
  self.assertInBody('Page: /my-page<br/>')
124
- self.assertInBody('Absolute page: /my-page<br/>')
130
+ self.assertInBody('Slash page: /my-page<br/>')
125
131
  self.assertInBody('Query: /my-page?bar=test+with+space&amp;foo=1<br/>')
126
132
 
127
133
  def test_get_page_proxied(self):
@@ -133,12 +139,13 @@ class UrlTest(helper.CPWebCase):
133
139
  # 1. Check title
134
140
  self.assertInBody('test-url')
135
141
  # 2. Check user field
136
- self.assertInBody('Empty: https://www.example.com/proxied/')
142
+ self.assertInBody('Empty: https://www.example.com/')
137
143
  self.assertInBody('Dot: https://www.example.com/proxied/')
144
+ self.assertInBody('Dot page: https://www.example.com/proxied/my-page<br/>')
138
145
  self.assertInBody('Slash: https://www.example.com/')
139
- self.assertInBody('Page: https://www.example.com/proxied/my-page')
140
- self.assertInBody('Absolute page: https://www.example.com/my-page')
141
- self.assertInBody('Query: https://www.example.com/proxied/my-page?bar=test+with+space&amp;foo=1')
146
+ self.assertInBody('Page: https://www.example.com/my-page')
147
+ self.assertInBody('Slash page: https://www.example.com/my-page')
148
+ self.assertInBody('Query: https://www.example.com/my-page?bar=test+with+space&amp;foo=1')
142
149
 
143
150
  def test_get_sub_page(self):
144
151
  # Given a form
@@ -151,7 +158,8 @@ class UrlTest(helper.CPWebCase):
151
158
  # 2. Check user field
152
159
  self.assertInBody(f'Empty: http://{self.HOST}:{self.PORT}/sub-page/')
153
160
  self.assertInBody(f'Dot: http://{self.HOST}:{self.PORT}/sub-page/')
161
+ self.assertInBody(f'Dot page: http://{self.HOST}:{self.PORT}/sub-page/my-page')
154
162
  self.assertInBody(f'Slash: http://{self.HOST}:{self.PORT}/')
155
- self.assertInBody(f'Page: http://{self.HOST}:{self.PORT}/sub-page/my-page')
156
- self.assertInBody(f'Absolute page: http://{self.HOST}:{self.PORT}/my-page')
157
- self.assertInBody(f'Query: http://{self.HOST}:{self.PORT}/sub-page/my-page?bar=test+with+space&amp;foo=1')
163
+ self.assertInBody(f'Page: http://{self.HOST}:{self.PORT}/my-page')
164
+ self.assertInBody(f'Slash page: http://{self.HOST}:{self.PORT}/my-page')
165
+ self.assertInBody(f'Query: http://{self.HOST}:{self.PORT}/my-page?bar=test+with+space&amp;foo=1')
@@ -35,6 +35,9 @@ def url_for(*args, _relative=None, _base=None, **kwargs):
35
35
  - Integers are appended as path segments.
36
36
  - When path == "", existing request query parameters are merged (kwargs win).
37
37
  """
38
+ # Handle query-string
39
+ qs = [(k, v) for k, v in sorted(kwargs.items()) if v is not None]
40
+
38
41
  path = []
39
42
  for chunk in args:
40
43
  if hasattr(chunk, '__url_for__') and callable(chunk.__url_for__):
@@ -54,11 +57,10 @@ def url_for(*args, _relative=None, _base=None, **kwargs):
54
57
  params = cherrypy.request.params.copy()
55
58
  params.update(kwargs)
56
59
  qs = [(k, v) for k, v in sorted(params.items()) if v is not None]
57
- else:
58
- qs = [(k, v) for k, v in sorted(kwargs.items()) if v is not None]
60
+ elif not path.startswith('.'):
61
+ path = urljoin('/', path)
59
62
  # Outside a request, use cherrypy.tools.proxy config
60
63
  if not cherrypy.request.app:
61
- path = urljoin('/', path)
62
64
  if _base is None:
63
65
  _base = cherrypy.config.get('tools.proxy.base', None)
64
66
  # Use cherrypy to build the URL
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cherrypy-foundation
3
- Version: 1.0.0a4
3
+ Version: 1.0.0a5
4
4
  Summary: CherryPy Foundation
5
5
  Author-email: Patrik Dufresne <patrik@ikus-soft.com>
6
6
  License: GPLv3