cherrypy-foundation 1.0.0a11__tar.gz → 1.0.0a12__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 (152) hide show
  1. {cherrypy_foundation-1.0.0a11/src/cherrypy_foundation.egg-info → cherrypy_foundation-1.0.0a12}/PKG-INFO +1 -1
  2. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/ldap.py +1 -1
  3. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/test_ldap.py +75 -2
  4. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12/src/cherrypy_foundation.egg-info}/PKG-INFO +1 -1
  5. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/.gitignore +0 -0
  6. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/.gitlab-ci.yml +0 -0
  7. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/LICENSE.md +0 -0
  8. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/README.md +0 -0
  9. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/TODO +0 -0
  10. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/changelog +0 -0
  11. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/control +0 -0
  12. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/copyright +0 -0
  13. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/python3-cherrypy-foundation.docs +0 -0
  14. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/python3-cherrypy-foundation.links +0 -0
  15. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/rules +0 -0
  16. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/source/format +0 -0
  17. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/source/options +0 -0
  18. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/debian/upstream/metadata +0 -0
  19. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/pyproject.toml +0 -0
  20. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/setup.cfg +0 -0
  21. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/sonar-project.properties +0 -0
  22. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/__init__.py +0 -0
  23. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/ColorModes.jinja +0 -0
  24. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Datatable.css +0 -0
  25. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Datatable.jinja +0 -0
  26. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Datatable.js +0 -0
  27. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Field.css +0 -0
  28. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Field.jinja +0 -0
  29. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Field.js +0 -0
  30. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Fields.jinja +0 -0
  31. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Flash.jinja +0 -0
  32. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Icon.jinja +0 -0
  33. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/SideBySideMultiSelect.css +0 -0
  34. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/SideBySideMultiSelect.jinja +0 -0
  35. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/SideBySideMultiSelect.js +0 -0
  36. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Typeahead.css +0 -0
  37. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Typeahead.jinja +0 -0
  38. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/Typeahead.js +0 -0
  39. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/__init__.py +0 -0
  40. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/tests/__init__.py +0 -0
  41. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/tests/test_static.py +0 -0
  42. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  43. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +0 -0
  44. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  45. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  46. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +0 -0
  47. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +0 -0
  48. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +0 -0
  49. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +0 -0
  50. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +0 -0
  51. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +0 -0
  52. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +0 -0
  53. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +0 -0
  54. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +0 -0
  55. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +0 -0
  56. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +0 -0
  57. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
  58. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
  59. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
  60. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
  61. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
  62. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.js +0 -0
  63. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +0 -0
  64. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +0 -0
  65. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.min.css +0 -0
  66. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +0 -0
  67. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.min.js +0 -0
  68. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +0 -0
  69. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.min.js +0 -0
  70. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +0 -0
  71. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.min.css +0 -0
  72. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +0 -0
  73. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.min.js +0 -0
  74. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +0 -0
  75. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +0 -0
  76. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +0 -0
  77. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.min.css +0 -0
  78. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +0 -0
  79. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.min.js +0 -0
  80. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +0 -0
  81. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +0 -0
  82. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +0 -0
  83. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +0 -0
  84. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.min.css +0 -0
  85. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +0 -0
  86. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.min.js +0 -0
  87. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/jquery/jquery.min.js +0 -0
  88. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/multi/LICENSE +0 -0
  89. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/multi/README.md +0 -0
  90. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/multi/multi.css +0 -0
  91. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/multi/multi.js +0 -0
  92. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/popper/popper.js +0 -0
  93. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/popper/popper.min.js +0 -0
  94. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +0 -0
  95. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +0 -0
  96. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/error_page.py +0 -0
  97. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/flash.py +0 -0
  98. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/form.py +0 -0
  99. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/logging.py +0 -0
  100. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/passwd.py +0 -0
  101. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/__init__.py +0 -0
  102. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/db.py +0 -0
  103. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/restapi.py +0 -0
  104. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/scheduler.py +0 -0
  105. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/smtp.py +0 -0
  106. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/__init__.py +0 -0
  107. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/test_db.py +0 -0
  108. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/test_scheduler.py +0 -0
  109. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/test_scheduler_db.py +0 -0
  110. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/plugins/tests/test_smtp.py +0 -0
  111. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/__init__.py +0 -0
  112. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/templates/test_flash.html +0 -0
  113. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/templates/test_form.html +0 -0
  114. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/templates/test_url.html +0 -0
  115. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/test_error_page.py +0 -0
  116. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/test_flash.py +0 -0
  117. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/test_form.py +0 -0
  118. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/test_passwd.py +0 -0
  119. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tests/test_url.py +0 -0
  120. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/__init__.py +0 -0
  121. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/auth.py +0 -0
  122. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/auth_mfa.py +0 -0
  123. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/errors.py +0 -0
  124. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/i18n.py +0 -0
  125. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/jinja2.py +0 -0
  126. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/ratelimit.py +0 -0
  127. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/secure_headers.py +0 -0
  128. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/sessions_timeout.py +0 -0
  129. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/__init__.py +0 -0
  130. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/components/Button.jinja +0 -0
  131. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo +0 -0
  132. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po +0 -0
  133. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.mo +0 -0
  134. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/en/LC_MESSAGES/messages.po +0 -0
  135. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
  136. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +0 -0
  137. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/locales/messages.pot +0 -0
  138. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/templates/test_jinja2.html +0 -0
  139. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/templates/test_jinja2_i18n.html +0 -0
  140. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/templates/test_jinjax.html +0 -0
  141. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/test_auth.py +0 -0
  142. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/test_auth_mfa.py +0 -0
  143. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/test_i18n.py +0 -0
  144. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/test_jinja2.py +0 -0
  145. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/tools/tests/test_ratelimit.py +0 -0
  146. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/url.py +0 -0
  147. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation/widgets.py +0 -0
  148. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation.egg-info/SOURCES.txt +0 -0
  149. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation.egg-info/dependency_links.txt +0 -0
  150. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation.egg-info/requires.txt +0 -0
  151. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/src/cherrypy_foundation.egg-info/top_level.txt +0 -0
  152. {cherrypy_foundation-1.0.0a11 → cherrypy_foundation-1.0.0a12}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cherrypy-foundation
3
- Version: 1.0.0a11
3
+ Version: 1.0.0a12
4
4
  Summary: CherryPy Foundation
5
5
  Author-email: Patrik Dufresne <patrik@ikus-soft.com>
6
6
  License: GPLv3
@@ -63,7 +63,7 @@ def first_attribute(attributes, keys, default=None):
63
63
  value = attributes[attr]
64
64
  if isinstance(value, list):
65
65
  if len(value) == 0:
66
- pass
66
+ continue
67
67
  return value[0]
68
68
  else:
69
69
  return value
@@ -19,13 +19,13 @@ Created on Oct 17, 2015
19
19
  @author: Patrik Dufresne <patrik@ikus-soft.com>
20
20
  """
21
21
  import os
22
- from unittest import mock, skipUnless
22
+ from unittest import TestCase, mock, skipUnless
23
23
 
24
24
  import cherrypy
25
25
  import ldap3
26
26
  from cherrypy.test import helper
27
27
 
28
- from .. import ldap # noqa
28
+ from ..ldap import all_attribute, first_attribute # noqa
29
29
 
30
30
  original_connection = ldap3.Connection
31
31
 
@@ -35,6 +35,79 @@ def mock_ldap_connection(*args, **kwargs):
35
35
  return original_connection(*args, client_strategy=ldap3.MOCK_ASYNC, **kwargs)
36
36
 
37
37
 
38
+ class LdapFirstAttributeTest(TestCase):
39
+
40
+ def test_no_keys_returns_default(self):
41
+ attributes = {"cn": ["John Doe"]}
42
+ self.assertIsNone(first_attribute(attributes, None))
43
+ self.assertEqual(first_attribute(attributes, [], default="fallback"), "fallback")
44
+
45
+ def test_single_key_with_scalar_value(self):
46
+ attributes = {"uid": "jdoe"}
47
+ self.assertEqual(first_attribute(attributes, "uid"), "jdoe")
48
+
49
+ def test_single_key_with_list_value(self):
50
+ attributes = {"mail": ["john@example.com", "alt@example.com"]}
51
+ self.assertEqual(first_attribute(attributes, "mail"), "john@example.com")
52
+
53
+ def test_empty_list_value_is_skipped(self):
54
+ attributes = {
55
+ "mail": [],
56
+ "uid": ["jdoe"],
57
+ }
58
+ self.assertEqual(first_attribute(attributes, ["mail", "uid"]), "jdoe")
59
+
60
+ def test_missing_first_key_uses_next_key(self):
61
+ attributes = {"cn": ["John Doe"]}
62
+ self.assertEqual(first_attribute(attributes, ["sn", "cn"]), "John Doe")
63
+
64
+ def test_all_keys_missing_returns_default(self):
65
+ attributes = {"cn": ["John Doe"]}
66
+ self.assertEqual(first_attribute(attributes, ["sn", "uid"], default="unknown"), "unknown")
67
+
68
+ def test_key_not_found_without_default_returns_none(self):
69
+ attributes = {"cn": ["John Doe"]}
70
+ self.assertIsNone(first_attribute(attributes, "uid"))
71
+
72
+
73
+ class LdapAllAttributeTest(TestCase):
74
+
75
+ def test_no_keys_returns_default(self):
76
+ attributes = {"cn": ["John Doe"]}
77
+ self.assertIsNone(all_attribute(attributes, None))
78
+ self.assertEqual(all_attribute(attributes, [], default="fallback"), "fallback")
79
+
80
+ def test_single_key_with_scalar_value(self):
81
+ attributes = {"uid": "jdoe"}
82
+ self.assertEqual(all_attribute(attributes, "uid"), ["jdoe"])
83
+
84
+ def test_single_key_with_list_value(self):
85
+ attributes = {"mail": ["john@example.com", "alt@example.com"]}
86
+ self.assertEqual(all_attribute(attributes, "mail"), ["john@example.com"])
87
+
88
+ def test_multiple_keys_collect_values(self):
89
+ attributes = {
90
+ "uid": "jdoe",
91
+ "cn": ["John Doe"],
92
+ }
93
+ self.assertEqual(all_attribute(attributes, ["uid", "cn"]), ["jdoe", "John Doe"])
94
+
95
+ def test_missing_keys_are_skipped(self):
96
+ attributes = {"cn": ["John Doe"]}
97
+ self.assertEqual(all_attribute(attributes, ["sn", "cn", "uid"]), ["John Doe"])
98
+
99
+ def test_all_keys_missing_returns_default(self):
100
+ attributes = {"cn": ["John Doe"]}
101
+ self.assertEqual(all_attribute(attributes, ["sn", "uid"], default=[]), [])
102
+
103
+ def test_empty_list_value_is_appended_as_empty_list(self):
104
+ attributes = {
105
+ "mail": [],
106
+ "uid": "jdoe",
107
+ }
108
+ self.assertEqual(all_attribute(attributes, ["mail", "uid"]), [[], "jdoe"])
109
+
110
+
38
111
  class LdapPluginTest(helper.CPWebCase):
39
112
 
40
113
  @classmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cherrypy-foundation
3
- Version: 1.0.0a11
3
+ Version: 1.0.0a12
4
4
  Summary: CherryPy Foundation
5
5
  Author-email: Patrik Dufresne <patrik@ikus-soft.com>
6
6
  License: GPLv3