imio.smartweb.common 1.2.26__tar.gz → 1.2.28__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 (165) hide show
  1. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/CHANGES.rst +19 -1
  2. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/PKG-INFO +37 -3
  3. imio_smartweb_common-1.2.28/requirements-6.1.txt +1 -0
  4. imio_smartweb_common-1.2.28/requirements-coverage.txt +2 -0
  5. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/setup.py +4 -1
  6. imio_smartweb_common-1.2.28/src/imio/smartweb/common/adapters.py +46 -0
  7. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/adapters.zcml +6 -0
  8. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/collective_taxonomy_controlpanel.py +0 -3
  9. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/cropping.py +4 -5
  10. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/configure.zcml +1 -0
  11. imio_smartweb_common-1.2.28/src/imio/smartweb/common/tests/test_widgets.py +120 -0
  12. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/utils.py +26 -0
  13. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/PKG-INFO +37 -3
  14. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/SOURCES.txt +2 -1
  15. imio_smartweb_common-1.2.26/requirements-coverage.txt +0 -2
  16. imio_smartweb_common-1.2.26/src/imio/smartweb/common/adapters.py +0 -19
  17. imio_smartweb_common-1.2.26/src/imio/smartweb/common/tests/test_widgets.py +0 -61
  18. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/CONTRIBUTORS.rst +0 -0
  19. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/DEVELOP.rst +0 -0
  20. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/LICENSE.GPL +0 -0
  21. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/LICENSE.rst +0 -0
  22. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/MANIFEST.in +0 -0
  23. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/README.rst +0 -0
  24. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/docs/conf.py +0 -0
  25. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/docs/index.rst +0 -0
  26. /imio_smartweb_common-1.2.26/requirements.txt → /imio_smartweb_common-1.2.28/requirements-6.0.txt +0 -0
  27. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/setup.cfg +0 -0
  28. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/__init__.py +0 -0
  29. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/__init__.py +0 -0
  30. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/__init__.py +0 -0
  31. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/behaviors/__init__.py +0 -0
  32. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/behaviors/configure.zcml +0 -0
  33. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/behaviors/iam.py +0 -0
  34. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/behaviors/topics.py +0 -0
  35. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/__init__.py +0 -0
  36. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/configure.zcml +0 -0
  37. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/description.pt +0 -0
  38. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/description.py +0 -0
  39. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/edit_taxonomy_data.pt +0 -0
  40. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/forms.py +0 -0
  41. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/overrides/plone.app.z3cform.templates.widget.pt +0 -0
  42. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/privacy/__init__.py +0 -0
  43. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/privacy/configure.zcml +0 -0
  44. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/privacy/form.py +0 -0
  45. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/privacy/utils.py +0 -0
  46. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/privacy/views.py +0 -0
  47. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/scaling.py +0 -0
  48. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/Makefile +0 -0
  49. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/package.json +0 -0
  50. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/smartweb-common-edit-compiled.css +0 -0
  51. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/smartweb-common-edit-compiled.js +0 -0
  52. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/smartweb-common-view-compiled.css +0 -0
  53. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/smartweb-common-view-compiled.js +0 -0
  54. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/src/edit.js +0 -0
  55. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/src/edit.less +0 -0
  56. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/src/view.js +0 -0
  57. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/src/view.less +0 -0
  58. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/static/webpack.config.js +0 -0
  59. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/browser/vocabulary.py +0 -0
  60. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/caching.py +0 -0
  61. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/caching_overrides.zcml +0 -0
  62. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/config.py +0 -0
  63. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/contact_utils.py +0 -0
  64. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/faceted/__init__.py +0 -0
  65. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/faceted/configure.zcml +0 -0
  66. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/faceted/utils.py +0 -0
  67. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/faceted/widget.pt +0 -0
  68. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/faceted/widget.py +0 -0
  69. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/indexers.py +0 -0
  70. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/indexers.zcml +0 -0
  71. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/interfaces.py +0 -0
  72. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/permissions.zcml +0 -0
  73. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/privacy.py +0 -0
  74. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/privacy.zcml +0 -0
  75. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/actions.xml +0 -0
  76. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/browserlayer.xml +0 -0
  77. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/catalog.xml +0 -0
  78. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/metadata.xml +0 -0
  79. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/registry.xml +0 -0
  80. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/default/rolemap.xml +0 -0
  81. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/catalog.xml +0 -0
  82. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/metadata.xml +0 -0
  83. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/registry.xml +0 -0
  84. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/types/Collection.xml +0 -0
  85. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/types/Document.xml +0 -0
  86. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/testing/types/Folder.xml +0 -0
  87. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles/uninstall/browserlayer.xml +0 -0
  88. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/profiles.zcml +0 -0
  89. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/rest/__init__.py +0 -0
  90. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/rest/configure.zcml +0 -0
  91. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/rest/odwb.py +0 -0
  92. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/rest/search_filters.py +0 -0
  93. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/rest/utils.py +0 -0
  94. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/setuphandlers.py +0 -0
  95. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/sharing/__init__.py +0 -0
  96. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/sharing/configure.zcml +0 -0
  97. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/sharing/localroles.py +0 -0
  98. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/sharing/permissions.py +0 -0
  99. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/sharing/permissions.zcml +0 -0
  100. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/subscribers.py +0 -0
  101. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/subscribers.zcml +0 -0
  102. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/testing.py +0 -0
  103. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/testing.zcml +0 -0
  104. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/__init__.py +0 -0
  105. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/resources/image.png +0 -0
  106. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/resources/image_1400x800.png +0 -0
  107. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/resources/image_1800x700.png +0 -0
  108. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/robot/test_example.robot +0 -0
  109. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_cropping.py +0 -0
  110. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_description.py +0 -0
  111. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_forms.py +0 -0
  112. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_indexes.py +0 -0
  113. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_local_roles.py +0 -0
  114. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_permissions.py +0 -0
  115. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_privacy.py +0 -0
  116. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_rest.py +0 -0
  117. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_robot.py +0 -0
  118. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_setup.py +0 -0
  119. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_subscribers.py +0 -0
  120. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_taxonomy.py +0 -0
  121. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_text.py +0 -0
  122. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_utils.py +0 -0
  123. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_viewlets.py +0 -0
  124. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_vocabularies.py +0 -0
  125. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/tests/test_vocabulary.py +0 -0
  126. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/__init__.py +0 -0
  127. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/configure.zcml +0 -0
  128. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1007_to_1008/rolemap.xml +0 -0
  129. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1008_to_1009/actions.xml +0 -0
  130. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1009_to_1010/registry/tiny_nonbreakingspace.xml +0 -0
  131. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/resources.xml +0 -0
  132. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/scales.xml +0 -0
  133. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/tinymce.xml +0 -0
  134. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1011_to_1012/registry/bundles.xml +0 -0
  135. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1013_to_1014/registry/tinymce.xml +0 -0
  136. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1014_to_1015/registry/syndication.xml +0 -0
  137. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1015_to_1016/registry/patched-faceted-jquery.xml +0 -0
  138. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1016_to_1017/registry/scales.xml +0 -0
  139. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1017_to_1018/registry.xml +0 -0
  140. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1018_to_1019/registry/scales.xml +0 -0
  141. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1022_to_1023/registry/scales.xml +0 -0
  142. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1023_to_1024/registry/scales.xml +0 -0
  143. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1025_to_1026/registry/scales.xml +0 -0
  144. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1027_to_1028/restored-faceted-jquery.xml +0 -0
  145. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1028_to_1029/registry.xml +0 -0
  146. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/profiles/1029_to_1030/registry.xml +0 -0
  147. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/upgrades/upgrades.py +0 -0
  148. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/__init__.py +0 -0
  149. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/analytics.pt +0 -0
  150. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/colophon.pt +0 -0
  151. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/colophon.py +0 -0
  152. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/configure.zcml +0 -0
  153. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/privacy.pt +0 -0
  154. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/privacy.py +0 -0
  155. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/skip_to_content.pt +0 -0
  156. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/viewlets/skip_to_content.py +0 -0
  157. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/vocabularies.py +0 -0
  158. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/vocabularies.zcml +0 -0
  159. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/widgets/__init__.py +0 -0
  160. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio/smartweb/common/widgets/select.py +0 -0
  161. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/dependency_links.txt +0 -0
  162. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/namespace_packages.txt +0 -0
  163. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/not-zip-safe +0 -0
  164. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/requires.txt +0 -0
  165. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.28}/src/imio.smartweb.common.egg-info/top_level.txt +0 -0
@@ -2,6 +2,23 @@ Changelog
2
2
  =========
3
3
 
4
4
 
5
+ 1.2.28 (2025-04-30)
6
+ -------------------
7
+
8
+ - Upgrade dev environment to Plone 6.1-latest
9
+ [remdub]
10
+
11
+ - Add tests for Plone 6.1-latest and add Python 3.13
12
+ [remdub]
13
+
14
+
15
+ 1.2.27 (2025-03-19)
16
+ -------------------
17
+
18
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
19
+ [boulch]
20
+
21
+
5
22
  1.2.26 (2025-03-12)
6
23
  -------------------
7
24
 
@@ -58,7 +75,8 @@ Changelog
58
75
  1.2.19 (2025-01-09)
59
76
  -------------------
60
77
 
61
- - Nothing changed yet.
78
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
79
+ [remdub]
62
80
 
63
81
 
64
82
  1.2.18 (2024-07-01)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: imio.smartweb.common
3
- Version: 1.2.26
3
+ Version: 1.2.28
4
4
  Summary: Common utilities, vocabularies, taxonomies for imio.smartweb & co products
5
5
  Home-page: https://github.com/imio/imio.smartweb.common
6
6
  Author: iMio
@@ -15,10 +15,13 @@ Classifier: Environment :: Web Environment
15
15
  Classifier: Framework :: Plone
16
16
  Classifier: Framework :: Plone :: Addon
17
17
  Classifier: Framework :: Plone :: 6.0
18
+ Classifier: Framework :: Plone :: 6.1
18
19
  Classifier: Programming Language :: Python
19
20
  Classifier: Programming Language :: Python :: 3
20
21
  Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
21
23
  Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
22
25
  Classifier: Operating System :: OS Independent
23
26
  Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
24
27
  Requires-Python: >=3.10
@@ -51,6 +54,19 @@ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
51
54
  Requires-Dist: plone.restapi[test]; extra == "test"
52
55
  Requires-Dist: freezegun; extra == "test"
53
56
  Requires-Dist: mock; extra == "test"
57
+ Dynamic: author
58
+ Dynamic: author-email
59
+ Dynamic: classifier
60
+ Dynamic: description
61
+ Dynamic: home-page
62
+ Dynamic: keywords
63
+ Dynamic: license
64
+ Dynamic: license-file
65
+ Dynamic: project-url
66
+ Dynamic: provides-extra
67
+ Dynamic: requires-dist
68
+ Dynamic: requires-python
69
+ Dynamic: summary
54
70
 
55
71
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
56
72
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -162,6 +178,23 @@ Changelog
162
178
  =========
163
179
 
164
180
 
181
+ 1.2.28 (2025-04-30)
182
+ -------------------
183
+
184
+ - Upgrade dev environment to Plone 6.1-latest
185
+ [remdub]
186
+
187
+ - Add tests for Plone 6.1-latest and add Python 3.13
188
+ [remdub]
189
+
190
+
191
+ 1.2.27 (2025-03-19)
192
+ -------------------
193
+
194
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
195
+ [boulch]
196
+
197
+
165
198
  1.2.26 (2025-03-12)
166
199
  -------------------
167
200
 
@@ -218,7 +251,8 @@ Changelog
218
251
  1.2.19 (2025-01-09)
219
252
  -------------------
220
253
 
221
- - Nothing changed yet.
254
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
255
+ [remdub]
222
256
 
223
257
 
224
258
  1.2.18 (2024-07-01)
@@ -0,0 +1 @@
1
+ -r https://dist.plone.org/release/6.1-latest/requirements.txt
@@ -0,0 +1,2 @@
1
+ -r requirements-6.0.txt
2
+ coveralls==3.2.0
@@ -16,7 +16,7 @@ long_description = "\n\n".join(
16
16
 
17
17
  setup(
18
18
  name="imio.smartweb.common",
19
- version="1.2.26",
19
+ version="1.2.28",
20
20
  description="Common utilities, vocabularies, taxonomies for imio.smartweb & co products",
21
21
  long_description=long_description,
22
22
  # Get more from https://pypi.org/classifiers/
@@ -26,10 +26,13 @@ setup(
26
26
  "Framework :: Plone",
27
27
  "Framework :: Plone :: Addon",
28
28
  "Framework :: Plone :: 6.0",
29
+ "Framework :: Plone :: 6.1",
29
30
  "Programming Language :: Python",
30
31
  "Programming Language :: Python :: 3",
31
32
  "Programming Language :: Python :: 3.10",
33
+ "Programming Language :: Python :: 3.11",
32
34
  "Programming Language :: Python :: 3.12",
35
+ "Programming Language :: Python :: 3.13",
33
36
  "Operating System :: OS Independent",
34
37
  "License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
35
38
  ],
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from imio.smartweb.common.utils import get_image_format
4
+ from plone.namedfile.interfaces import IAvailableSizes
5
+ from plone.namedfile.interfaces import INamedImageField
6
+ from plone.namedfile.field import InvalidImageFile
7
+ from zope.component import adapter
8
+ from zope.component import getUtility
9
+ from zope.interface import Interface
10
+
11
+
12
+ class BaseCroppingProvider(object):
13
+ def __init__(self, context):
14
+ self.context = context
15
+
16
+ def get_scales(self, fieldname, request=None):
17
+ if self.context.portal_type == "Image":
18
+ # imio.smartweb.core override get_scales.
19
+ # so this is only available for authentic sources
20
+ return []
21
+ allowed_sizes = getUtility(IAvailableSizes)()
22
+ scales = list(allowed_sizes.keys())
23
+ scales.remove("banner")
24
+ return scales
25
+
26
+
27
+ @adapter(INamedImageField, Interface)
28
+ class ImageContenttypeValidator:
29
+ def __init__(self, field, value):
30
+ self.field = field
31
+ self.value = value
32
+
33
+ def __call__(self):
34
+ if self.value is None:
35
+ return
36
+ mimetype = get_image_format(self.value)
37
+
38
+ valid_mimetypes = [
39
+ "image/gif",
40
+ "image/jpeg",
41
+ "image/png",
42
+ "image/svg+xml",
43
+ "image/webp",
44
+ ]
45
+ if mimetype not in valid_mimetypes:
46
+ raise InvalidImageFile(mimetype, self.field.__name__)
@@ -7,4 +7,10 @@
7
7
  factory=".adapters.BaseCroppingProvider"
8
8
  />
9
9
 
10
+ <adapter
11
+ factory=".adapters.ImageContenttypeValidator"
12
+ provides="plone.namedfile.field.IPluggableImageFieldValidation"
13
+ name="smartweb_image_contenttype"
14
+ />
15
+
10
16
  </configure>
@@ -2,11 +2,8 @@
2
2
 
3
3
  from collective.taxonomy.interfaces import ITaxonomy
4
4
  from collective.taxonomy.jsonimpl import EditTaxonomyData as baseEditTaxonomyData
5
- from imio.smartweb.locales import SmartwebMessageFactory as _
6
5
  from plone import api
7
6
  from zope.component import queryUtility
8
- from zope.component import queryUtility
9
- from plone import api
10
7
  from Products.Five import BrowserView
11
8
 
12
9
 
@@ -51,11 +51,10 @@ class SmartwebCroppingImageScalingFactory(CroppingImageScalingFactory):
51
51
  ):
52
52
  storage = Storage(self.context)
53
53
  self.box = storage.read(fieldname, scale)
54
- if scale is not None:
55
- if "portrait" in scale or "paysage" in scale or "carre" in scale:
56
- orientation = scale.split("_")[0]
57
- # take cropping box from "affiche" scale
58
- self.box = storage.read(fieldname, f"{orientation}_affiche")
54
+ if scale and ("portrait" in scale or "paysage" in scale or "carre" in scale):
55
+ orientation = scale.split("_")[0]
56
+ # take cropping box from "affiche" scale
57
+ self.box = storage.read(fieldname, f"{orientation}_affiche")
59
58
  if self.box:
60
59
  mode = "contain"
61
60
  else:
@@ -1,6 +1,7 @@
1
1
  <configure
2
2
  xmlns="http://namespaces.zope.org/zope">
3
3
 
4
+ <include package="z3c.unconfigure" file="meta.zcml" />
4
5
  <include package="collective.taxonomy" />
5
6
  <include package="eea.facetednavigation" />
6
7
  <include package="eea.facetednavigation" file="meta.zcml" />
@@ -0,0 +1,120 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from imio.smartweb.common.testing import IMIO_SMARTWEB_COMMON_INTEGRATION_TESTING
4
+ from imio.smartweb.common.widgets.select import TranslatedAjaxSelectWidget
5
+ from importlib.metadata import version
6
+ from plone.api import portal as portal_api
7
+ from zope.publisher.browser import TestRequest
8
+
9
+
10
+ import mock
11
+ import unittest
12
+
13
+
14
+ class TestVocabulary(unittest.TestCase):
15
+ layer = IMIO_SMARTWEB_COMMON_INTEGRATION_TESTING
16
+
17
+ def setUp(self):
18
+ """Custom shared utility setup for tests"""
19
+ self.request = TestRequest()
20
+
21
+ def test_translated_ajax_select(self):
22
+ portal_api.get_current_language = mock.Mock(return_value="fr")
23
+ widget = TranslatedAjaxSelectWidget(self.request)
24
+ widget.update()
25
+ # __import__("pdb").set_trace()
26
+ if version("plone.app.z3cform") < "4.4.0":
27
+ self.assertEqual(
28
+ {
29
+ "name": None,
30
+ "value": "",
31
+ "pattern": "select2",
32
+ "pattern_options": {"separator": ";"},
33
+ },
34
+ widget._base_args(),
35
+ )
36
+ widget.vocabulary = "imio.smartweb.vocabulary.Topics"
37
+ self.assertEqual(
38
+ widget._base_args(),
39
+ {
40
+ "name": None,
41
+ "value": "",
42
+ "pattern": "select2",
43
+ "pattern_options": {
44
+ "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
45
+ "separator": ";",
46
+ },
47
+ },
48
+ )
49
+ widget.value = "entertainment"
50
+ self.assertEqual(
51
+ widget._base_args(),
52
+ {
53
+ "name": None,
54
+ "value": "entertainment",
55
+ "pattern": "select2",
56
+ "pattern_options": {
57
+ "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
58
+ "initialValues": {
59
+ "entertainment": "Activités et divertissement",
60
+ },
61
+ "separator": ";",
62
+ },
63
+ },
64
+ )
65
+ else:
66
+ # _base.args has been removed
67
+ # see https://github.com/plone/plone.app.z3cform/commit/5de30e9b117885859680dfe3861f134a667cea9c
68
+ self.assertEqual(
69
+ {
70
+ "name": None,
71
+ "value": None,
72
+ "pattern": "select2",
73
+ "pattern_options": {"separator": ";"},
74
+ },
75
+ {
76
+ "name": widget.name,
77
+ "value": widget.value,
78
+ "pattern": widget.pattern,
79
+ "pattern_options": widget.get_pattern_options(),
80
+ },
81
+ )
82
+ widget.vocabulary = "imio.smartweb.vocabulary.Topics"
83
+ self.assertEqual(
84
+ {
85
+ "name": None,
86
+ "value": None,
87
+ "pattern": "select2",
88
+ "pattern_options": {
89
+ "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
90
+ "separator": ";",
91
+ },
92
+ },
93
+ {
94
+ "name": widget.name,
95
+ "value": widget.value,
96
+ "pattern": widget.pattern,
97
+ "pattern_options": widget.get_pattern_options(),
98
+ },
99
+ )
100
+ widget.value = "entertainment"
101
+ self.assertEqual(
102
+ {
103
+ "name": None,
104
+ "value": "entertainment",
105
+ "pattern": "select2",
106
+ "pattern_options": {
107
+ "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
108
+ "initialValues": {
109
+ "entertainment": "Activités et divertissement",
110
+ },
111
+ "separator": ";",
112
+ },
113
+ },
114
+ {
115
+ "name": widget.name,
116
+ "value": widget.value,
117
+ "pattern": widget.pattern,
118
+ "pattern_options": widget.get_pattern_options(),
119
+ },
120
+ )
@@ -1,9 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  from Acquisition import aq_parent
4
+ from io import BytesIO
4
5
  from imio.smartweb.common.config import TRANSLATED_VOCABULARIES
5
6
  from imio.smartweb.common.interfaces import ICropping
6
7
  from imio.smartweb.locales import SmartwebMessageFactory as _
8
+ from PIL import Image
7
9
  from plone import api
8
10
  from plone.app.imagecropping.storage import Storage
9
11
  from plone.dexterity.utils import iterSchemata
@@ -203,3 +205,27 @@ def get_parent_of_type(context, content_type):
203
205
  return parent
204
206
  parent = aq_parent(parent)
205
207
  return None
208
+
209
+
210
+ def _get_pil_mimetype(pil_image):
211
+ """Retourne le MIME type d'une image PIL."""
212
+ format_to_mime = {
213
+ "JPEG": "image/jpeg",
214
+ "PNG": "image/png",
215
+ "GIF": "image/gif",
216
+ "BMP": "image/bmp",
217
+ "TIFF": "image/tiff",
218
+ "WEBP": "image/webp",
219
+ "SVG": "image/svg+xml",
220
+ }
221
+ return format_to_mime.get(pil_image.format, "application/octet-stream")
222
+
223
+
224
+ def get_image_format(named_blob_image):
225
+ """Détecte le format d'une image à partir de son contenu binaire."""
226
+ if named_blob_image and named_blob_image.data:
227
+ try:
228
+ with Image.open(BytesIO(named_blob_image.data)) as img:
229
+ return _get_pil_mimetype(img)
230
+ except Exception:
231
+ return None
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: imio.smartweb.common
3
- Version: 1.2.26
3
+ Version: 1.2.28
4
4
  Summary: Common utilities, vocabularies, taxonomies for imio.smartweb & co products
5
5
  Home-page: https://github.com/imio/imio.smartweb.common
6
6
  Author: iMio
@@ -15,10 +15,13 @@ Classifier: Environment :: Web Environment
15
15
  Classifier: Framework :: Plone
16
16
  Classifier: Framework :: Plone :: Addon
17
17
  Classifier: Framework :: Plone :: 6.0
18
+ Classifier: Framework :: Plone :: 6.1
18
19
  Classifier: Programming Language :: Python
19
20
  Classifier: Programming Language :: Python :: 3
20
21
  Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
21
23
  Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
22
25
  Classifier: Operating System :: OS Independent
23
26
  Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
24
27
  Requires-Python: >=3.10
@@ -51,6 +54,19 @@ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
51
54
  Requires-Dist: plone.restapi[test]; extra == "test"
52
55
  Requires-Dist: freezegun; extra == "test"
53
56
  Requires-Dist: mock; extra == "test"
57
+ Dynamic: author
58
+ Dynamic: author-email
59
+ Dynamic: classifier
60
+ Dynamic: description
61
+ Dynamic: home-page
62
+ Dynamic: keywords
63
+ Dynamic: license
64
+ Dynamic: license-file
65
+ Dynamic: project-url
66
+ Dynamic: provides-extra
67
+ Dynamic: requires-dist
68
+ Dynamic: requires-python
69
+ Dynamic: summary
54
70
 
55
71
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
56
72
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -162,6 +178,23 @@ Changelog
162
178
  =========
163
179
 
164
180
 
181
+ 1.2.28 (2025-04-30)
182
+ -------------------
183
+
184
+ - Upgrade dev environment to Plone 6.1-latest
185
+ [remdub]
186
+
187
+ - Add tests for Plone 6.1-latest and add Python 3.13
188
+ [remdub]
189
+
190
+
191
+ 1.2.27 (2025-03-19)
192
+ -------------------
193
+
194
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
195
+ [boulch]
196
+
197
+
165
198
  1.2.26 (2025-03-12)
166
199
  -------------------
167
200
 
@@ -218,7 +251,8 @@ Changelog
218
251
  1.2.19 (2025-01-09)
219
252
  -------------------
220
253
 
221
- - Nothing changed yet.
254
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
255
+ [remdub]
222
256
 
223
257
 
224
258
  1.2.18 (2024-07-01)
@@ -5,8 +5,9 @@ LICENSE.GPL
5
5
  LICENSE.rst
6
6
  MANIFEST.in
7
7
  README.rst
8
+ requirements-6.0.txt
9
+ requirements-6.1.txt
8
10
  requirements-coverage.txt
9
- requirements.txt
10
11
  setup.cfg
11
12
  setup.py
12
13
  docs/conf.py
@@ -1,2 +0,0 @@
1
- -r requirements.txt
2
- coveralls==3.2.0
@@ -1,19 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- from plone.namedfile.interfaces import IAvailableSizes
4
- from zope.component import getUtility
5
-
6
-
7
- class BaseCroppingProvider(object):
8
- def __init__(self, context):
9
- self.context = context
10
-
11
- def get_scales(self, fieldname, request=None):
12
- if self.context.portal_type == "Image":
13
- # imio.smartweb.core override get_scales.
14
- # so this is only available for authentic sources
15
- return []
16
- allowed_sizes = getUtility(IAvailableSizes)()
17
- scales = list(allowed_sizes.keys())
18
- scales.remove("banner")
19
- return scales
@@ -1,61 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- from imio.smartweb.common.testing import IMIO_SMARTWEB_COMMON_INTEGRATION_TESTING
4
- from imio.smartweb.common.widgets.select import TranslatedAjaxSelectWidget
5
- from plone.api import portal as portal_api
6
- from zope.publisher.browser import TestRequest
7
-
8
- import mock
9
- import unittest
10
-
11
-
12
- class TestVocabulary(unittest.TestCase):
13
- layer = IMIO_SMARTWEB_COMMON_INTEGRATION_TESTING
14
-
15
- def setUp(self):
16
- """Custom shared utility setup for tests"""
17
- self.request = TestRequest()
18
-
19
- def test_translated_ajax_select(self):
20
- portal_api.get_current_language = mock.Mock(return_value="fr")
21
- widget = TranslatedAjaxSelectWidget(self.request)
22
- widget.update()
23
- self.assertEqual(
24
- {
25
- "name": None,
26
- "value": "",
27
- "pattern": "select2",
28
- "pattern_options": {"separator": ";"},
29
- },
30
- widget._base_args(),
31
- )
32
-
33
- widget.vocabulary = "imio.smartweb.vocabulary.Topics"
34
- self.assertEqual(
35
- widget._base_args(),
36
- {
37
- "name": None,
38
- "value": "",
39
- "pattern": "select2",
40
- "pattern_options": {
41
- "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
42
- "separator": ";",
43
- },
44
- },
45
- )
46
- widget.value = "entertainment"
47
- self.assertEqual(
48
- widget._base_args(),
49
- {
50
- "name": None,
51
- "value": "entertainment",
52
- "pattern": "select2",
53
- "pattern_options": {
54
- "vocabularyUrl": "http://nohost/plone/@@getVocabulary?name=imio.smartweb.vocabulary.Topics",
55
- "initialValues": {
56
- "entertainment": "Activités et divertissement",
57
- },
58
- "separator": ";",
59
- },
60
- },
61
- )