connect-cli 29.2__tar.gz → 40.0__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 (290) hide show
  1. {connect_cli-29.2 → connect_cli-40.0}/PKG-INFO +12 -9
  2. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/entrypoint.py +2 -2
  3. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/entrypoint.py +17 -2
  4. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports.json +4 -0
  5. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/clone.py +15 -0
  6. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/commands.py +11 -2
  7. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/export.py +48 -7
  8. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/__init__.py +1 -0
  9. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/items.py +1 -1
  10. connect_cli-40.0/connect/cli/plugins/product/sync/messages.py +175 -0
  11. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/constants.py +8 -0
  12. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/utils.py +7 -0
  13. {connect_cli-29.2 → connect_cli-40.0}/pyproject.toml +5 -5
  14. {connect_cli-29.2 → connect_cli-40.0}/LICENSE +0 -0
  15. {connect_cli-29.2 → connect_cli-40.0}/README.md +0 -0
  16. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/.github/workflows/build.yml +0 -0
  17. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/.gitignore +0 -0
  18. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/LICENSE +0 -0
  19. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/README.md +0 -0
  20. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/poetry.lock +0 -0
  21. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/pyproject.toml +0 -0
  22. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/__init__.py +0 -0
  23. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/Readme.md +0 -0
  24. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/__init__.py +0 -0
  25. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/templates/xlsx/template.xlsx +0 -0
  26. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/Readme.md +0 -0
  27. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/__init__.py +0 -0
  28. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/entrypoint.py +0 -0
  29. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/templates/xlsx/template.xlsx +0 -0
  30. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/Readme.md +0 -0
  31. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/__init__.py +0 -0
  32. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/entrypoint.py +0 -0
  33. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/templates/xlsx/template.xlsx +0 -0
  34. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/Readme.md +0 -0
  35. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/__init__.py +0 -0
  36. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/templates/xlsx/template.xlsx +0 -0
  37. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/Readme.md +0 -0
  38. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/__init__.py +0 -0
  39. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/constants.py +0 -0
  40. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/entrypoint.py +0 -0
  41. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/img/ClouBlue-Logo.png +0 -0
  42. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.css +0 -0
  43. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.html.j2 +0 -0
  44. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/Readme.md +0 -0
  45. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/__init__.py +0 -0
  46. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/entrypoint.py +0 -0
  47. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/templates/xlsx/template.xlsx +0 -0
  48. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/Readme.md +0 -0
  49. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/__init__.py +0 -0
  50. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/entrypoint.py +0 -0
  51. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/templates/xlsx/template.xlsx +0 -0
  52. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/Readme.md +0 -0
  53. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/__init__.py +0 -0
  54. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/entrypoint.py +0 -0
  55. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/templates/xlsx/template.xlsx +0 -0
  56. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/Readme.md +0 -0
  57. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/__init__.py +0 -0
  58. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/entrypoint.py +0 -0
  59. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/templates/xlsx/template.xlsx +0 -0
  60. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/Readme.md +0 -0
  61. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/__init__.py +0 -0
  62. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/entrypoint.py +0 -0
  63. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/templates/xlsx/template.xlsx +0 -0
  64. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/Readme.md +0 -0
  65. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/__init__.py +0 -0
  66. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/entrypoint.py +0 -0
  67. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/templates/xlsx/template.xlsx +0 -0
  68. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/Readme.md +0 -0
  69. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/__init__.py +0 -0
  70. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/entrypoint.py +0 -0
  71. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-connect-alone.png +0 -0
  72. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-logo.png +0 -0
  73. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-disabled.png +0 -0
  74. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-enabled.png +0 -0
  75. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/connect-logo.png +0 -0
  76. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cover-bg.png +0 -0
  77. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/imc-small-color.png +0 -0
  78. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-Black.png +0 -0
  79. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-White.png +0 -0
  80. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo.png +0 -0
  81. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/accordo.png +0 -0
  82. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-blue.png +0 -0
  83. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-white.png +0 -0
  84. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/adobe.jpeg +0 -0
  85. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/airtame.png +0 -0
  86. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/allyhub.png +0 -0
  87. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/alsid.png +0 -0
  88. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/anchor.png +0 -0
  89. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/australia.png +0 -0
  90. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/austria.png +0 -0
  91. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/aws.png +0 -0
  92. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/belgium.png +0 -0
  93. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/brazil.png +0 -0
  94. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/canada.png +0 -0
  95. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/chile.png +0 -0
  96. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/colombia.png +0 -0
  97. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/france.png +0 -0
  98. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/germany.png +0 -0
  99. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/hong-kong.png +0 -0
  100. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/icon.png +0 -0
  101. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/india.png +0 -0
  102. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/italy.png +0 -0
  103. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/malaysia.png +0 -0
  104. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/mexico.png +0 -0
  105. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/netherlands.png +0 -0
  106. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/new-zealand.png +0 -0
  107. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/singapore.png +0 -0
  108. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/spain.png +0 -0
  109. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/sweden.png +0 -0
  110. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/switzerland.png +0 -0
  111. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/turkey.png +0 -0
  112. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uae.png +0 -0
  113. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uk.png +0 -0
  114. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/usa.png +0 -0
  115. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.css +0 -0
  116. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.html.j2 +0 -0
  117. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/Readme.md +0 -0
  118. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/__init__.py +0 -0
  119. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/entrypoint.py +0 -0
  120. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/templates/xlsx/template.xlsx +0 -0
  121. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/Readme.md +0 -0
  122. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/__init__.py +0 -0
  123. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/entrypoint.py +0 -0
  124. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/templates/xlsx/template.xlsx +0 -0
  125. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/Readme.md +0 -0
  126. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/__init__.py +0 -0
  127. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/entrypoint.py +0 -0
  128. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/templates/xlsx/template.xlsx +0 -0
  129. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/Readme.md +0 -0
  130. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/__init__.py +0 -0
  131. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/entrypoint.py +0 -0
  132. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/templates/xlsx/template.xlsx +0 -0
  133. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/Readme.md +0 -0
  134. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/__init__.py +0 -0
  135. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/entrypoint.py +0 -0
  136. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/templates/xlsx/template.xlsx +0 -0
  137. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/utils.py +0 -0
  138. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/sonar-project.properties +0 -0
  139. {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/tox.ini +0 -0
  140. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/__init__.py +0 -0
  141. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/ccli.py +0 -0
  142. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/__init__.py +0 -0
  143. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/__init__.py +0 -0
  144. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/commands.py +0 -0
  145. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/helpers.py +0 -0
  146. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/base.py +0 -0
  147. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/config.py +0 -0
  148. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/constants.py +0 -0
  149. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/http.py +0 -0
  150. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/plugins.py +0 -0
  151. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/terminal.py +0 -0
  152. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/utils.py +0 -0
  153. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/__init__.py +0 -0
  154. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/commerce/commands.py +0 -0
  155. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/commerce/utils.py +0 -0
  156. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/__init__.py +0 -0
  157. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/commands.py +0 -0
  158. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/constants.py +0 -0
  159. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/export.py +0 -0
  160. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/sync.py +0 -0
  161. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/locale/__init__.py +0 -0
  162. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/locale/commands.py +0 -0
  163. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/__init__.py +0 -0
  164. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/commands.py +0 -0
  165. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/context.py +0 -0
  166. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/save.py +0 -0
  167. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/script.py +0 -0
  168. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/__init__.py +0 -0
  169. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/api.py +0 -0
  170. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/constants.py +0 -0
  171. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/actions.py +0 -0
  172. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/capabilities.py +0 -0
  173. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/configuration_values.py +0 -0
  174. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/general.py +0 -0
  175. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/media.py +0 -0
  176. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/params.py +0 -0
  177. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/static_resources.py +0 -0
  178. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/templates.py +0 -0
  179. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/utils.py +0 -0
  180. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/__init__.py +0 -0
  181. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/commands.py +0 -0
  182. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/__init__.py +0 -0
  183. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/constants.py +0 -0
  184. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/helpers.py +0 -0
  185. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/__init__.py.j2 +0 -0
  186. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/anvil.py.j2 +0 -0
  187. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/events.py.j2 +0 -0
  188. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/extension.json.j2 +0 -0
  189. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/schemas.py.j2 +0 -0
  190. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/static/.gitkeep.j2 +0 -0
  191. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/tfnapp.py.j2 +0 -0
  192. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/webapp.py.j2 +0 -0
  193. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.${project_slug}_dev.env.j2 +0 -0
  194. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.eslintrc.yaml.j2 +0 -0
  195. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
  196. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.github/workflows/test.yml.j2 +0 -0
  197. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
  198. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/CHANGELOG.md.j2 +0 -0
  199. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/Dockerfile.j2 +0 -0
  200. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
  201. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
  202. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
  203. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/fileMock.js.j2 +0 -0
  204. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/styleMock.js.j2 +0 -0
  205. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/babel.config.json.j2 +0 -0
  206. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/docker-compose.yml.j2 +0 -0
  207. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/jest.config.js.j2 +0 -0
  208. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/package.json.j2 +0 -0
  209. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
  210. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
  211. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
  212. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
  213. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_anvil.py.j2 +0 -0
  214. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_events.py.j2 +0 -0
  215. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_tfnapp.py.j2 +0 -0
  216. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_webapp.py.j2 +0 -0
  217. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/images/mkp.svg.j2 +0 -0
  218. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/index.html.j2 +0 -0
  219. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/settings.html.j2 +0 -0
  220. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/copy.html.j2 +0 -0
  221. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/manual.html.j2 +0 -0
  222. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/components.js.j2 +0 -0
  223. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/index.js.j2 +0 -0
  224. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/settings.js.j2 +0 -0
  225. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/copy.js.j2 +0 -0
  226. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/manual.js.j2 +0 -0
  227. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +0 -0
  228. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/utils.js.j2 +0 -0
  229. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/index.css.j2 +0 -0
  230. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/manual.css.j2 +0 -0
  231. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/components.spec.js.j2 +0 -0
  232. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/pages.spec.js.j2 +0 -0
  233. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/utils.spec.js.j2 +0 -0
  234. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/webpack.config.js.j2 +0 -0
  235. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/utils.py +0 -0
  236. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/validators.py +0 -0
  237. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/wizard.py +0 -0
  238. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/renderer.py +0 -0
  239. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/__init__.py +0 -0
  240. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/helpers.py +0 -0
  241. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/README.md.j2 +0 -0
  242. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/__init__.py.j2 +0 -0
  243. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/entrypoint.py.j2 +0 -0
  244. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
  245. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
  246. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
  247. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/README.md.j2 +0 -0
  248. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/__init__.py.j2 +0 -0
  249. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/entrypoint.py.j2 +0 -0
  250. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
  251. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
  252. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
  253. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
  254. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.github/workflows/build.yml.j2 +0 -0
  255. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
  256. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
  257. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
  258. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
  259. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
  260. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
  261. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/reports.json.j2 +0 -0
  262. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
  263. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
  264. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/test_${project_slug}.py.j2 +0 -0
  265. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/validations.py +0 -0
  266. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/wizard.py +0 -0
  267. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/utils.py +0 -0
  268. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/validators.py +0 -0
  269. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/__init__.py +0 -0
  270. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/commands.py +0 -0
  271. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/constants.py +0 -0
  272. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/helpers.py +0 -0
  273. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/utils.py +0 -0
  274. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/wizard.py +0 -0
  275. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/__init__.py +0 -0
  276. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/base.py +0 -0
  277. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/exceptions.py +0 -0
  278. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/export.py +0 -0
  279. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/sync_stats.py +0 -0
  280. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translation_attr_sync.py +0 -0
  281. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translation_sync.py +0 -0
  282. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translations_synchronizers.py +0 -0
  283. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/__init__.py +0 -0
  284. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/activate.py +0 -0
  285. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/commands.py +0 -0
  286. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/constants.py +0 -0
  287. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/export.py +0 -0
  288. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/primarize.py +0 -0
  289. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/translation_sync.py +0 -0
  290. {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/utils.py +0 -0
@@ -1,28 +1,30 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: connect-cli
3
- Version: 29.2
3
+ Version: 40.0
4
4
  Summary: CloudBlue Connect Command Line Interface
5
- Home-page: https://connect.cloudblue.com
6
5
  License: Apache-2.0
6
+ License-File: LICENSE
7
7
  Keywords: fulfillment,command,line,interface,utility,cli,vendor,connect,cloudblue
8
8
  Author: CloudBlue LLC
9
- Requires-Python: >=3.8,<4
9
+ Requires-Python: >=3.10,<4
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Operating System :: POSIX :: Linux
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.8
16
- Classifier: Programming Language :: Python :: 3.9
17
15
  Classifier: Programming Language :: Python :: 3.10
18
16
  Classifier: Programming Language :: Python :: 3.11
19
17
  Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
20
22
  Classifier: Topic :: Utilities
21
23
  Requires-Dist: Jinja2 (>=3.1.2,<4.0.0)
22
24
  Requires-Dist: click (>=8.1.3,<9.0.0)
23
- Requires-Dist: connect-eaas-core (>=28.13,<29)
25
+ Requires-Dist: connect-eaas-core (>=37.0)
24
26
  Requires-Dist: connect-markdown-renderer (>=3,<4)
25
- Requires-Dist: connect-openapi-client (>=28)
27
+ Requires-Dist: connect-openapi-client (>=29)
26
28
  Requires-Dist: connect-reports-core (==26.*)
27
29
  Requires-Dist: fs (>=2.4.12,<3.0.0)
28
30
  Requires-Dist: interrogatio (>=2.3.1,<3.0.0)
@@ -35,8 +37,9 @@ Requires-Dist: pyyaml (>=6.0,<7.0)
35
37
  Requires-Dist: requests (>=2.25.1,<3.0.0)
36
38
  Requires-Dist: rich (>=12.4.1,<13.0.0)
37
39
  Requires-Dist: toml (>=0.10.2,<0.11.0)
38
- Requires-Dist: uvloop (>=0.16.0,<0.17.0) ; sys_platform == "linux" or sys_platform == "darwin"
40
+ Requires-Dist: uvloop (>=0.22.0,<0.23.0) ; sys_platform == "linux" or sys_platform == "darwin"
39
41
  Project-URL: Documentation, https://connect.cloudblue.com/community/sdk/cli/
42
+ Project-URL: Homepage, https://connect.cloudblue.com
40
43
  Project-URL: Repository, https://github.com/cloudblue/connect-cli
41
44
  Description-Content-Type: text/markdown
42
45
 
@@ -53,8 +53,8 @@ def generate(
53
53
 
54
54
  def _get_requests(client, parameters):
55
55
  query = R()
56
- query &= R().created.ge(parameters['date']['after'])
57
- query &= R().created.le(parameters['date']['before'])
56
+ query &= R().events.created.at.ge(parameters['date']['after'])
57
+ query &= R().events.created.at.le(parameters['date']['before'])
58
58
 
59
59
  if parameters.get('product') and parameters['product']['all'] is False:
60
60
  query &= R().asset.product.id.oneof(parameters['product']['choices'])
@@ -17,6 +17,12 @@ HEADERS = (
17
17
  'Extended Information',
18
18
  )
19
19
 
20
+ TIER_TYPE = {
21
+ 'customer': ['customer'],
22
+ 'reseller': ['tier1', 'tier2'],
23
+ }
24
+ ALL_TYPE = {*TIER_TYPE['customer'], *TIER_TYPE['reseller']}
25
+
20
26
 
21
27
  def generate(
22
28
  client=None,
@@ -50,13 +56,22 @@ def generate(
50
56
 
51
57
  def _get_customers(client, parameters):
52
58
  query = R()
59
+ parameter_choices = set((parameters.get('tier_type', {}) or {}).get('choices', []))
53
60
 
54
61
  if parameters.get('date') and parameters['date'].get('after'):
55
62
  query &= R().events.created.at.ge(parameters['date']['after'])
56
63
  query &= R().events.created.at.le(parameters['date']['before'])
64
+ if parameter_choices == ALL_TYPE:
65
+ # In case all 3 scopes are present in parameter choices, is the same
66
+ # as all=True
67
+ parameters['tier_type']['all'] = True
57
68
  if parameters.get('tier_type') and parameters['tier_type']['all'] is False:
58
- query &= R().scopes.oneof(parameters['tier_type']['choices'])
59
-
69
+ # (tier1 or tier2) and customer in choices -> all (no RLQ filter for tier_type)
70
+ # one or both of tier1/2 in choices -> R().type.eq('reseller')
71
+ # only customer in choices -> R().type.eq('customer')
72
+ for t_type, choices in TIER_TYPE.items():
73
+ if not parameter_choices.difference(choices):
74
+ query &= R().type.eq(t_type)
60
75
  return client.ns('tier').accounts.filter(query).order_by('-events.created.at').limit(1000)
61
76
 
62
77
 
@@ -83,6 +83,10 @@
83
83
  {
84
84
  "value": "adjustment",
85
85
  "label": "Adjustment"
86
+ },
87
+ {
88
+ "value": "renew",
89
+ "label": "Renew"
86
90
  }
87
91
  ]
88
92
  },
@@ -12,6 +12,7 @@ from connect.cli.plugins.product.sync import (
12
12
  GeneralSynchronizer,
13
13
  ItemSynchronizer,
14
14
  MediaSynchronizer,
15
+ MessageSynchronizer,
15
16
  ParamsSynchronizer,
16
17
  TemplatesSynchronizer,
17
18
  )
@@ -134,6 +135,14 @@ class ProductCloner:
134
135
  is_clone=True,
135
136
  )
136
137
 
138
+ synchronizer = MessageSynchronizer(
139
+ self.config.active.client,
140
+ self.progress,
141
+ self.stats,
142
+ )
143
+ synchronizer.open(input_file, 'Messages')
144
+ synchronizer.sync()
145
+
137
146
  self.config.activate(self.source_account)
138
147
  except ClientError as e:
139
148
  raise ClickException(f'Error while cloning product: {str(e)}')
@@ -229,6 +238,12 @@ class ProductCloner:
229
238
  value = '-'
230
239
  for row in range(2, ws.max_row + 1):
231
240
  ws[f'C{row}'].value = value
241
+
242
+ ws = self.wb['Messages']
243
+ for row in range(2, ws.max_row + 1):
244
+ ws[f'A{row}'].value = ''
245
+ ws[f'B{row}'].value = 'create'
246
+
232
247
  self.wb.save(f'{self.fs.root_path}/{self.product_id}/{self.product_id}.xlsx')
233
248
 
234
249
  @staticmethod
@@ -21,6 +21,7 @@ from connect.cli.plugins.product.sync import (
21
21
  GeneralSynchronizer,
22
22
  ItemSynchronizer,
23
23
  MediaSynchronizer,
24
+ MessageSynchronizer,
24
25
  ParamsSynchronizer,
25
26
  StaticResourcesSynchronizer,
26
27
  TemplatesSynchronizer,
@@ -90,7 +91,7 @@ def cmd_list_products(config, query):
90
91
  help='Directory where to store the export.',
91
92
  )
92
93
  @pass_config
93
- def cmd_dump_products(config, product_id, output_file, output_path):
94
+ def cmd_export_products(config, product_id, output_file, output_path):
94
95
  with console.progress() as progress:
95
96
  outfile = dump_product(
96
97
  config.active.client,
@@ -120,7 +121,7 @@ def cmd_sync_products(config, input_file):
120
121
  product_id = synchronizer.open(input_file, 'General Information')
121
122
 
122
123
  console.confirm(
123
- 'Are you sure you want to synchronize ' f'the product {product_id} ?',
124
+ f'Are you sure you want to synchronize the product {product_id} ?',
124
125
  abort=True,
125
126
  )
126
127
  console.echo('')
@@ -148,6 +149,7 @@ def cmd_sync_products(config, input_file):
148
149
  actions_sync,
149
150
  media_sync,
150
151
  config_values_sync,
152
+ messages_sync,
151
153
  ]
152
154
  for task in sync_tasks:
153
155
  try:
@@ -324,5 +326,12 @@ def item_sync(client, progress, input_file, stats):
324
326
  synchronizer.save(input_file)
325
327
 
326
328
 
329
+ def messages_sync(client, progress, input_file, stats):
330
+ synchronizer = MessageSynchronizer(client, progress, stats)
331
+ synchronizer.open(input_file, 'Messages')
332
+ synchronizer.sync()
333
+ synchronizer.save(input_file)
334
+
335
+
327
336
  def get_group():
328
337
  return grp_product
@@ -51,6 +51,10 @@ def _build_f1_options(option_list):
51
51
  return '"{options}"'.format(options=','.join(option_list))
52
52
 
53
53
 
54
+ def _primary_translation_str(trans):
55
+ return f'{trans["locale"]["id"]} ({trans["locale"]["name"]})' if trans else ''
56
+
57
+
54
58
  def _setup_cover_sheet(ws, product, location, client, media_path):
55
59
  ws.title = 'General Information'
56
60
  ws.column_dimensions['A'].width = 50
@@ -118,9 +122,8 @@ def _setup_cover_sheet(ws, product, location, client, media_path):
118
122
  .translations.filter(context__instance_id=product['id'], primary=True)
119
123
  .first()
120
124
  )
121
- ws[
122
- 'B14'
123
- ].value = f'{ primary_translation["locale"]["id"] } ({ primary_translation["locale"]["name"] })'
125
+
126
+ ws['B14'].value = _primary_translation_str(primary_translation)
124
127
 
125
128
  categories = client.categories.all()
126
129
  unassignable_cat = ['Cloud Services', 'All Categories']
@@ -174,11 +177,12 @@ def _setup_ws_header(ws, ws_type=None): # noqa: CCR001
174
177
  elif ws_type == 'templates':
175
178
  if cel.value == 'Content':
176
179
  ws.column_dimensions[cel.column_letter].width = 100
177
- if cel.value == 'Title':
180
+ elif cel.value == 'Title':
178
181
  ws.column_dimensions[cel.column_letter].width = 50
179
- elif ws_type == '_attributes':
180
- if cel.column_letter in ['A', 'B', 'D']:
181
- ws.column_dimensions[cel.column_letter].width = 100
182
+ elif ws_type == '_attributes' and cel.column_letter in ['A', 'B', 'D']:
183
+ ws.column_dimensions[cel.column_letter].width = 100
184
+ elif ws_type == 'messages' and cel.column_letter == 'D':
185
+ ws.column_dimensions[cel.column_letter].width = 70
182
186
 
183
187
 
184
188
  def _calculate_commitment(item):
@@ -953,6 +957,42 @@ def _dump_translation_attr(wb, client, translation):
953
957
  _setup_ws_header(attr_ws, '_attributes')
954
958
 
955
959
 
960
+ def _fill_product_message_row(ws, row_idx, msg):
961
+ ws.cell(row_idx, 1, value=msg['id'])
962
+ ws.cell(row_idx, 2, value='-')
963
+ ws.cell(row_idx, 3, value=msg['external_id'])
964
+ ws.cell(row_idx, 4, value=msg['value'])
965
+ ws.cell(row_idx, 5, value=msg['auto'])
966
+
967
+
968
+ def _dump_product_messages(ws, client, product_id, progress):
969
+ _setup_ws_header(ws, 'messages')
970
+
971
+ row_idx = 2
972
+
973
+ messages = client.products[product_id].messages.all()
974
+ count = messages.count()
975
+
976
+ action_validation = DataValidation(
977
+ type='list',
978
+ formula1='"-,create,update,delete"',
979
+ allow_blank=False,
980
+ )
981
+
982
+ if count > 0:
983
+ ws.add_data_validation(action_validation)
984
+
985
+ task = progress.add_task('Processing message', total=count)
986
+
987
+ for msg in messages:
988
+ progress.update(task, description=f'Processing message {msg["id"]}', advance=1)
989
+ _fill_product_message_row(ws, row_idx, msg)
990
+ action_validation.add(f'B{row_idx}')
991
+ row_idx += 1
992
+
993
+ progress.update(task, completed=count)
994
+
995
+
956
996
  def dump_product( # noqa: CCR001
957
997
  client,
958
998
  product_id,
@@ -1019,6 +1059,7 @@ def dump_product( # noqa: CCR001
1019
1059
  _dump_actions(wb.create_sheet('Actions'), client, product_id, progress)
1020
1060
  _dump_configuration(wb.create_sheet('Configuration'), client, product_id, progress)
1021
1061
  _dump_translations(wb, client, product_id, progress)
1062
+ _dump_product_messages(wb.create_sheet('Messages'), client, product_id, progress)
1022
1063
  wb.save(output_file)
1023
1064
 
1024
1065
  except ClientError as error:
@@ -6,6 +6,7 @@ from connect.cli.plugins.product.sync.configuration_values import ( # noqa: F40
6
6
  from connect.cli.plugins.product.sync.general import GeneralSynchronizer # noqa: F401
7
7
  from connect.cli.plugins.product.sync.items import ItemSynchronizer # noqa: F401
8
8
  from connect.cli.plugins.product.sync.media import MediaSynchronizer # noqa: F401
9
+ from connect.cli.plugins.product.sync.messages import MessageSynchronizer # noqa: F401
9
10
  from connect.cli.plugins.product.sync.params import ParamsSynchronizer # noqa: F401
10
11
  from connect.cli.plugins.product.sync.static_resources import ( # noqa: F401
11
12
  StaticResourcesSynchronizer,
@@ -135,7 +135,7 @@ class ItemSynchronizer(ProductSynchronizer):
135
135
  field = 'ID' if data.id else 'MPN'
136
136
  value = data.id if data.id else data.mpn
137
137
  self._mstats.error(
138
- f'Cannot update item: item with {field} `{value}` '
138
+ f'Cannot delete item: item with {field} `{value}` '
139
139
  f'the item does not exist.',
140
140
  row_idx,
141
141
  )
@@ -0,0 +1,175 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
4
+ # Copyright (c) 2019-2024 Ingram Micro. All Rights Reserved.
5
+
6
+ from collections import namedtuple
7
+
8
+ from connect.client.rql import R
9
+ from connect.client import ClientError, R
10
+
11
+ from connect.cli.core.http import handle_http_error
12
+ from connect.cli.plugins.shared.base import ProductSynchronizer
13
+ from connect.cli.plugins.shared.constants import MESSAGES_HEADERS
14
+
15
+
16
+ fields = (v.replace(' ', '_').lower() for v in MESSAGES_HEADERS.values())
17
+
18
+ _RowData = namedtuple('RowData', fields)
19
+
20
+
21
+ class MessageSynchronizer(ProductSynchronizer):
22
+ def __init__(self, client, progress, stats):
23
+ self._mstats = stats['Messages']
24
+ super().__init__(client, progress)
25
+
26
+ def _get_message(self, message_id):
27
+ try:
28
+ res = self._client.products[self._product_id].messages[message_id].get()
29
+ except ClientError as error:
30
+ if error.status_code == 404:
31
+ return
32
+ handle_http_error(error)
33
+ return res
34
+
35
+ def _create_message(self, data):
36
+ try:
37
+ payload = {'external_id': data.external_id, 'value': data.value, 'auto': data.auto}
38
+ res = self._client.products[self._product_id].messages.create(payload)
39
+ except ClientError as error:
40
+ handle_http_error(error)
41
+ return res
42
+
43
+ def _update_message(self, data):
44
+ try:
45
+ payload = {'external_id': data.external_id, 'value': data.value, 'auto': data.auto}
46
+ res = self._client.products[self._product_id].messages[data.id].update(payload)
47
+ except ClientError as error:
48
+ handle_http_error(error)
49
+ return res
50
+
51
+ def _delete_message(self, message_id):
52
+ try:
53
+ res = self._client.products[self._product_id].messages[message_id].delete()
54
+ except ClientError as error:
55
+ handle_http_error(error)
56
+ return res
57
+
58
+ def _process_create(self, row_idx, data, task):
59
+ rql = R().external_id.eq(data.external_id)
60
+ message = self._client.products[self._product_id].messages.filter(rql).first()
61
+ if message:
62
+ self._mstats.error(
63
+ f'Cannot create message: message with external_id `{data.external_id}`'
64
+ f' already exists with ID `{message["id"]}`.',
65
+ row_idx,
66
+ )
67
+ else:
68
+ self._progress.update(
69
+ task,
70
+ description=f'Creating message {data.external_id}',
71
+ )
72
+ try:
73
+ new_message = self._create_message(data)
74
+ self._mstats.created()
75
+ self._update_sheet_row(self._ws, row_idx, new_message)
76
+ except Exception as e:
77
+ self._mstats.error(str(e), row_idx)
78
+
79
+ def _process_update(self, row_idx, data, task):
80
+ if not self._get_message(data.id):
81
+ self._mstats.error(
82
+ f'Cannot update message: message with ID `{data.id}` ' 'does not exist.',
83
+ row_idx,
84
+ )
85
+ else:
86
+ self._progress.update(
87
+ task,
88
+ description=f'Updating message {data.id}',
89
+ )
90
+ try:
91
+ updated_message = self._update_message(
92
+ data,
93
+ )
94
+ self._mstats.updated()
95
+ self._update_sheet_row(self._ws, row_idx, updated_message)
96
+ except Exception as e:
97
+ self._mstats.error(str(e), row_idx)
98
+
99
+ def _process_delete(self, row_idx, data, task):
100
+ if not self._get_message(data.id):
101
+ self._mstats.error(
102
+ f'Cannot delete message: message with ID `{data.id}` ' 'does not exist.',
103
+ row_idx,
104
+ )
105
+ else:
106
+ self._progress.update(
107
+ task,
108
+ description=f'Deleting message {data.id}',
109
+ )
110
+ try:
111
+ self._delete_message(data.id)
112
+ self._mstats.deleted()
113
+ for c in range(1, self._ws.max_column + 1):
114
+ self._ws.cell(row_idx, c, value='')
115
+ except Exception as e:
116
+ self._mstats.error(str(e), row_idx)
117
+
118
+ def sync(self): # noqa: CCR001
119
+ self._ws = self._wb['Messages']
120
+ task = self._progress.add_task('Processing messages', total=self._ws.max_row - 1)
121
+ for row_idx in range(2, self._ws.max_row + 1):
122
+ data = _RowData(*[self._ws.cell(row_idx, col_idx).value for col_idx in range(1, 6)])
123
+ self._progress.update(
124
+ task,
125
+ description=f'Processing message {data.id}',
126
+ advance=1,
127
+ )
128
+ if data.action == '-':
129
+ self._mstats.skipped()
130
+ continue
131
+
132
+ row_errors = self._validate_row(data)
133
+ if row_errors:
134
+ self._mstats.error(row_errors, row_idx)
135
+ continue
136
+
137
+ if data.action == 'create':
138
+ self._process_create(row_idx, data, task)
139
+ elif data.action == 'update':
140
+ self._process_update(row_idx, data, task)
141
+ elif data.action == 'delete':
142
+ self._process_delete(row_idx, data, task)
143
+
144
+ self._progress.update(task, completed=self._ws.max_row - 1)
145
+
146
+ def _validate_row(self, row): # noqa: CCR001
147
+ errors = []
148
+
149
+ if row.action == 'create' and row.id:
150
+ errors.append(
151
+ 'the `ID` must not be specified for the `create` action.',
152
+ )
153
+ return errors
154
+ if row.action in ('update', 'delete') and not row.id:
155
+ errors.append(
156
+ 'the `ID` must be specified for the `update` or `delete` actions.',
157
+ )
158
+ return errors
159
+ if (
160
+ row.action in ('create', 'update', 'delete')
161
+ and row.external_id is None
162
+ or row.value is None
163
+ ):
164
+ errors.append(
165
+ 'the `External ID` and `Value` must be specified for the `create`, `update` or `delete` actions.',
166
+ )
167
+ return errors
168
+
169
+ @staticmethod
170
+ def _update_sheet_row(ws, row_idx, message):
171
+ ws.cell(row_idx, 1, value=message['id'])
172
+ ws.cell(row_idx, 2, value='-')
173
+ ws.cell(row_idx, 3, value=message['external_id'])
174
+ ws.cell(row_idx, 4, value=message['value'])
175
+ ws.cell(row_idx, 5, value=message['auto'])
@@ -113,3 +113,11 @@ TRANSLATION_HEADERS = {
113
113
  'M': 'Created',
114
114
  'N': 'Updated',
115
115
  }
116
+
117
+ MESSAGES_HEADERS = {
118
+ 'A': 'ID',
119
+ 'B': 'Action',
120
+ 'C': 'External ID',
121
+ 'D': 'Value',
122
+ 'E': 'Auto',
123
+ }
@@ -19,6 +19,7 @@ from connect.cli.plugins.shared.constants import (
19
19
  CONFIGURATION_HEADERS,
20
20
  ITEMS_COLS_HEADERS,
21
21
  MEDIA_COLS_HEADERS,
22
+ MESSAGES_HEADERS,
22
23
  PARAMS_COLS_HEADERS,
23
24
  STATIC_LINK_HEADERS,
24
25
  TEMPLATES_HEADERS,
@@ -47,6 +48,8 @@ def get_col_limit_by_ws_type(ws_type):
47
48
  return 'N'
48
49
  elif ws_type == '_attributes':
49
50
  return 'F'
51
+ elif ws_type == 'messages':
52
+ return 'E'
50
53
  return 'Z'
51
54
 
52
55
 
@@ -73,6 +76,8 @@ def get_ws_type_by_worksheet_name(ws_name):
73
76
  return 'actions'
74
77
  elif ws_name == 'Translations':
75
78
  return 'translations'
79
+ elif ws_name == 'Messages':
80
+ return 'messages'
76
81
  return None
77
82
 
78
83
 
@@ -95,6 +100,8 @@ def get_col_headers_by_ws_type(ws_type):
95
100
  return ACTIONS_HEADERS
96
101
  elif ws_type == 'translations':
97
102
  return TRANSLATION_HEADERS
103
+ elif ws_type == 'messages':
104
+ return MESSAGES_HEADERS
98
105
 
99
106
 
100
107
  def wait_for_autotranslation(client, progress, translation, wait_seconds=1, max_counts=5):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "connect-cli"
3
- version = "29.2"
3
+ version = "40.0"
4
4
  description = "CloudBlue Connect Command Line Interface"
5
5
  authors = ["CloudBlue LLC"]
6
6
  license = "Apache-2.0"
@@ -55,10 +55,10 @@ ccli = 'connect.cli.ccli:main'
55
55
 
56
56
 
57
57
  [tool.poetry.dependencies]
58
- python = ">=3.8,<4"
58
+ python = ">=3.10,<4"
59
59
  click = "^8.1.3"
60
60
  openpyxl = "^3.0.7"
61
- connect-openapi-client = ">=28"
61
+ connect-openapi-client = ">=29"
62
62
  interrogatio = "^2.3.1"
63
63
  connect-markdown-renderer = ">=3,<4"
64
64
  iso3166 = "^1.0.1"
@@ -68,10 +68,10 @@ requests = "^2.25.1"
68
68
  toml = "^0.10.2"
69
69
  Jinja2 = "^3.1.2"
70
70
  jinja2-time = "^0.2.0"
71
- connect-eaas-core = ">=28.13,<29"
71
+ connect-eaas-core = ">=37.0"
72
72
  rich = "^12.4.1"
73
73
  poetry-core = "^1.3.0"
74
- uvloop = { version = "^0.16.0", markers = "sys_platform == \"linux\" or sys_platform == \"darwin\"" }
74
+ uvloop = { version = "^0.22.0", markers = "sys_platform == \"linux\" or sys_platform == \"darwin\"" }
75
75
  fs = "^2.4.12"
76
76
  pyyaml = "^6.0"
77
77
 
File without changes
File without changes