cherrypy-foundation 1.0.0a4__tar.gz → 1.0.0a6__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.0a6}/PKG-INFO +1 -1
  2. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/templates/test_url.html +3 -2
  3. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/test_url.py +23 -19
  4. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/url.py +7 -11
  5. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6/src/cherrypy_foundation.egg-info}/PKG-INFO +1 -1
  6. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/.gitignore +0 -0
  7. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/.gitlab-ci.yml +0 -0
  8. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/LICENSE.md +0 -0
  9. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/README.md +0 -0
  10. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/pyproject.toml +0 -0
  11. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/setup.cfg +0 -0
  12. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/sonar-project.properties +0 -0
  13. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/__init__.py +0 -0
  14. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/ColorModes.jinja +0 -0
  15. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Datatable.css +0 -0
  16. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Datatable.jinja +0 -0
  17. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Datatable.js +0 -0
  18. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Field.css +0 -0
  19. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Field.jinja +0 -0
  20. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Field.js +0 -0
  21. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Fields.jinja +0 -0
  22. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Icon.jinja +0 -0
  23. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/SideBySideMultiSelect.css +0 -0
  24. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/SideBySideMultiSelect.jinja +0 -0
  25. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/SideBySideMultiSelect.js +0 -0
  26. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Typeahead.css +0 -0
  27. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Typeahead.jinja +0 -0
  28. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/Typeahead.js +0 -0
  29. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/__init__.py +0 -0
  30. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/tests/__init__.py +0 -0
  31. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/tests/test_static.py +0 -0
  32. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  33. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +0 -0
  34. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  35. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  36. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +0 -0
  37. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +0 -0
  38. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +0 -0
  39. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +0 -0
  40. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +0 -0
  41. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +0 -0
  42. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +0 -0
  43. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +0 -0
  44. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +0 -0
  45. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +0 -0
  46. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +0 -0
  47. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
  48. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
  49. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
  50. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
  51. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
  52. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.js +0 -0
  53. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +0 -0
  54. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +0 -0
  55. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +0 -0
  57. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +0 -0
  59. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +0 -0
  61. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +0 -0
  63. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +0 -0
  65. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +0 -0
  66. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +0 -0
  67. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +0 -0
  69. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +0 -0
  71. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +0 -0
  72. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +0 -0
  73. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +0 -0
  74. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +0 -0
  76. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6}/src/cherrypy_foundation/components/vendor/jquery/jquery.min.js +0 -0
  78. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/multi/LICENSE +0 -0
  79. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/multi/README.md +0 -0
  80. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/multi/multi.css +0 -0
  81. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/multi/multi.js +0 -0
  82. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/popper/popper.js +0 -0
  83. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/popper/popper.min.js +0 -0
  84. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +0 -0
  85. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +0 -0
  86. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/error_page.py +0 -0
  87. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/flash.py +0 -0
  88. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/form.py +0 -0
  89. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/logging.py +0 -0
  90. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/passwd.py +0 -0
  91. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/__init__.py +0 -0
  92. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/db.py +0 -0
  93. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/ldap.py +0 -0
  94. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/restapi.py +0 -0
  95. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/scheduler.py +0 -0
  96. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/smtp.py +0 -0
  97. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/tests/__init__.py +0 -0
  98. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/tests/test_db.py +0 -0
  99. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/tests/test_ldap.py +0 -0
  100. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/tests/test_scheduler.py +0 -0
  101. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/plugins/tests/test_smtp.py +0 -0
  102. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/__init__.py +0 -0
  103. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/templates/test_form.html +0 -0
  104. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/test_error_page.py +0 -0
  105. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/test_form.py +0 -0
  106. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tests/test_passwd.py +0 -0
  107. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/__init__.py +0 -0
  108. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/auth.py +0 -0
  109. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/auth_mfa.py +0 -0
  110. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/errors.py +0 -0
  111. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/i18n.py +0 -0
  112. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/jinja2.py +0 -0
  113. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/ratelimit.py +0 -0
  114. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/secure_headers.py +0 -0
  115. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/sessions_timeout.py +0 -0
  116. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/__init__.py +0 -0
  117. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/components/Button.jinja +0 -0
  118. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.mo +0 -0
  119. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.po +0 -0
  120. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
  121. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +0 -0
  122. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/locales/messages.pot +0 -0
  123. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/templates/test_jinja2.html +0 -0
  124. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/templates/test_jinja2_i18n.html +0 -0
  125. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/templates/test_jinjax.html +0 -0
  126. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/test_auth.py +0 -0
  127. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/test_auth_mfa.py +0 -0
  128. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/test_i18n.py +0 -0
  129. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/test_jinja2.py +0 -0
  130. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/tools/tests/test_ratelimit.py +0 -0
  131. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation/widgets.py +0 -0
  132. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation.egg-info/SOURCES.txt +0 -0
  133. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation.egg-info/dependency_links.txt +0 -0
  134. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation.egg-info/requires.txt +0 -0
  135. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/src/cherrypy_foundation.egg-info/top_level.txt +0 -0
  136. {cherrypy_foundation-1.0.0a4 → cherrypy_foundation-1.0.0a6}/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.0a6
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):
@@ -71,10 +74,6 @@ class UrlTest(helper.CPWebCase):
71
74
  # Outside a request, relative url doesn't make alot of sens.
72
75
  self.assertEqual(url_for("foo", "bar", _relative=1), '127.0.0.1:54583/foo/bar')
73
76
  self.assertEqual(url_for("foo", "bar", _base='http://test.com'), 'http://test.com/foo/bar')
74
- self.assertEqual(
75
- url_for("mailto:myuser@test.com", subject='Enter you subject', _base=''),
76
- 'mailto:myuser@test.com?subject=Enter%20you%20subject',
77
- )
78
77
 
79
78
  def test_get_page(self):
80
79
  # Given a form
@@ -87,15 +86,16 @@ class UrlTest(helper.CPWebCase):
87
86
  # 2. Check user field
88
87
  self.assertInBody(f'Empty: http://{self.HOST}:{self.PORT}/')
89
88
  self.assertInBody(f'Dot: http://{self.HOST}:{self.PORT}/')
89
+ self.assertInBody(f'Dot page: http://{self.HOST}:{self.PORT}/my-page')
90
90
  self.assertInBody(f'Slash: http://{self.HOST}:{self.PORT}/')
91
91
  self.assertInBody(f'Page: http://{self.HOST}:{self.PORT}/my-page')
92
- self.assertInBody(f'Absolute page: http://{self.HOST}:{self.PORT}/my-page')
92
+ self.assertInBody(f'Slash page: http://{self.HOST}:{self.PORT}/my-page')
93
93
  self.assertInBody(f'Query: http://{self.HOST}:{self.PORT}/my-page?bar=test+with+space&amp;foo=1')
94
94
 
95
95
  def test_get_page_relative_true(self):
96
96
  # Given a form
97
97
  # When querying the page that include this form
98
- self.getPage("/?_relative=1")
98
+ self.getPage("/", headers=[('_relative', '1')])
99
99
  self.assertStatus(200)
100
100
  # Then each field is render properly.
101
101
  # 1. Check title
@@ -103,15 +103,16 @@ class UrlTest(helper.CPWebCase):
103
103
  # 2. Check user field
104
104
  self.assertInBody('Empty: <br/>')
105
105
  self.assertInBody('Dot: <br/>')
106
+ self.assertInBody('Dot page: my-page<br/>')
106
107
  self.assertInBody('Slash: <br/>')
107
108
  self.assertInBody('Page: my-page<br/>')
108
- self.assertInBody('Absolute page: my-page<br/>')
109
+ self.assertInBody('Slash page: my-page<br/>')
109
110
  self.assertInBody('Query: my-page?bar=test+with+space&amp;foo=1<br/>')
110
111
 
111
112
  def test_get_page_relative_server(self):
112
113
  # Given a form
113
114
  # When querying the page that include this form
114
- self.getPage("/?_relative=server")
115
+ self.getPage("/", headers=[('_relative', 'server')])
115
116
  self.assertStatus(200)
116
117
  # Then each field is render properly.
117
118
  # 1. Check title
@@ -119,9 +120,10 @@ class UrlTest(helper.CPWebCase):
119
120
  # 2. Check user field
120
121
  self.assertInBody('Empty: /<br/>')
121
122
  self.assertInBody('Dot: /<br/>')
123
+ self.assertInBody('Dot page: /my-page<br/>')
122
124
  self.assertInBody('Slash: /<br/>')
123
125
  self.assertInBody('Page: /my-page<br/>')
124
- self.assertInBody('Absolute page: /my-page<br/>')
126
+ self.assertInBody('Slash page: /my-page<br/>')
125
127
  self.assertInBody('Query: /my-page?bar=test+with+space&amp;foo=1<br/>')
126
128
 
127
129
  def test_get_page_proxied(self):
@@ -133,12 +135,13 @@ class UrlTest(helper.CPWebCase):
133
135
  # 1. Check title
134
136
  self.assertInBody('test-url')
135
137
  # 2. Check user field
136
- self.assertInBody('Empty: https://www.example.com/proxied/')
138
+ self.assertInBody('Empty: https://www.example.com/')
137
139
  self.assertInBody('Dot: https://www.example.com/proxied/')
140
+ self.assertInBody('Dot page: https://www.example.com/proxied/my-page<br/>')
138
141
  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')
142
+ self.assertInBody('Page: https://www.example.com/my-page')
143
+ self.assertInBody('Slash page: https://www.example.com/my-page')
144
+ self.assertInBody('Query: https://www.example.com/my-page?bar=test+with+space&amp;foo=1')
142
145
 
143
146
  def test_get_sub_page(self):
144
147
  # Given a form
@@ -151,7 +154,8 @@ class UrlTest(helper.CPWebCase):
151
154
  # 2. Check user field
152
155
  self.assertInBody(f'Empty: http://{self.HOST}:{self.PORT}/sub-page/')
153
156
  self.assertInBody(f'Dot: http://{self.HOST}:{self.PORT}/sub-page/')
157
+ self.assertInBody(f'Dot page: http://{self.HOST}:{self.PORT}/sub-page/my-page')
154
158
  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')
159
+ self.assertInBody(f'Page: http://{self.HOST}:{self.PORT}/my-page')
160
+ self.assertInBody(f'Slash page: http://{self.HOST}:{self.PORT}/my-page')
161
+ self.assertInBody(f'Query: http://{self.HOST}:{self.PORT}/my-page?bar=test+with+space&amp;foo=1')
@@ -14,7 +14,7 @@
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
- from urllib.parse import quote, urlencode, urljoin
17
+ from urllib.parse import urljoin
18
18
 
19
19
  import cherrypy
20
20
 
@@ -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,18 +57,11 @@ 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
65
- url = cherrypy.url(path=path, relative=_relative, base=_base)
66
- # Append the query string
67
- if qs and url.startswith('mailto:'):
68
- return url + '?' + urlencode(qs, quote_via=quote)
69
- elif qs:
70
- return url + '?' + urlencode(qs)
71
- return url
67
+ return cherrypy.url(path=path, qs=qs, relative=_relative, base=_base)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cherrypy-foundation
3
- Version: 1.0.0a4
3
+ Version: 1.0.0a6
4
4
  Summary: CherryPy Foundation
5
5
  Author-email: Patrik Dufresne <patrik@ikus-soft.com>
6
6
  License: GPLv3