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.
- {connect_cli-29.2 → connect_cli-40.0}/PKG-INFO +12 -9
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/entrypoint.py +2 -2
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/entrypoint.py +17 -2
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports.json +4 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/clone.py +15 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/commands.py +11 -2
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/export.py +48 -7
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/__init__.py +1 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/items.py +1 -1
- connect_cli-40.0/connect/cli/plugins/product/sync/messages.py +175 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/constants.py +8 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/utils.py +7 -0
- {connect_cli-29.2 → connect_cli-40.0}/pyproject.toml +5 -5
- {connect_cli-29.2 → connect_cli-40.0}/LICENSE +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/README.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/.github/workflows/build.yml +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/.gitignore +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/LICENSE +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/README.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/poetry.lock +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/pyproject.toml +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/billing_requests_line_item/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/img/ClouBlue-Logo.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.css +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.html.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_failed/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/helpdesk/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/listing_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-connect-alone.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-logo.png +0 -0
- {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
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/connect-logo.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cover-bg.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/imc-small-color.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-Black.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-White.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/accordo.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-blue.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-white.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/adobe.jpeg +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/airtame.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/allyhub.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/alsid.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/anchor.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/australia.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/austria.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/aws.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/belgium.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/brazil.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/canada.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/chile.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/colombia.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/france.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/germany.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/hong-kong.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/icon.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/india.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/italy.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/malaysia.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/mexico.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/netherlands.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/new-zealand.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/singapore.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/spain.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/sweden.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/switzerland.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/turkey.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uae.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uk.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/usa.png +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.css +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.html.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/sla/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/subscription_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/tier_configuration_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/Readme.md +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/entrypoint.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/usage_in_subscription/templates/xlsx/template.xlsx +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/sonar-project.properties +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/tox.ini +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/ccli.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/account/helpers.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/base.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/config.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/http.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/plugins.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/terminal.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/core/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/commerce/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/commerce/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/export.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/customer/sync.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/locale/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/locale/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/context.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/save.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/play/script.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/api.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/actions.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/capabilities.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/configuration_values.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/general.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/media.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/params.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/static_resources.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/sync/templates.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/product/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/helpers.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/__init__.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/anvil.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/events.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/extension.json.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/schemas.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/static/.gitkeep.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/tfnapp.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/webapp.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.${project_slug}_dev.env.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.eslintrc.yaml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.github/workflows/test.yml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/CHANGELOG.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/Dockerfile.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/fileMock.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/styleMock.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/babel.config.json.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/docker-compose.yml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/jest.config.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/package.json.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_anvil.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_events.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_tfnapp.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_webapp.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/images/mkp.svg.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/index.html.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/settings.html.j2 +0 -0
- {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
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/components.js.j2 +0 -0
- {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
- {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
- {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
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/utils.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/index.css.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/manual.css.j2 +0 -0
- {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
- {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
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/webpack.config.js.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/validators.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/extension/wizard.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/renderer.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/helpers.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/README.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/__init__.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/entrypoint.py.j2 +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.github/workflows/build.yml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/reports.json.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
- {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
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/validations.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/report/wizard.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/project/validators.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/helpers.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/utils.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/report/wizard.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/base.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/exceptions.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/export.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/sync_stats.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translation_attr_sync.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translation_sync.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/shared/translations_synchronizers.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/__init__.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/activate.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/commands.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/constants.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/export.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/primarize.py +0 -0
- {connect_cli-29.2 → connect_cli-40.0}/connect/cli/plugins/translation/translation_sync.py +0 -0
- {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
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: connect-cli
|
|
3
|
-
Version:
|
|
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.
|
|
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 (>=
|
|
25
|
+
Requires-Dist: connect-eaas-core (>=37.0)
|
|
24
26
|
Requires-Dist: connect-markdown-renderer (>=3,<4)
|
|
25
|
-
Requires-Dist: connect-openapi-client (>=
|
|
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.
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
122
|
-
|
|
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
|
-
|
|
180
|
+
elif cel.value == 'Title':
|
|
178
181
|
ws.column_dimensions[cel.column_letter].width = 50
|
|
179
|
-
elif ws_type == '_attributes':
|
|
180
|
-
|
|
181
|
-
|
|
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
|
|
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'])
|
|
@@ -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 = "
|
|
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.
|
|
58
|
+
python = ">=3.10,<4"
|
|
59
59
|
click = "^8.1.3"
|
|
60
60
|
openpyxl = "^3.0.7"
|
|
61
|
-
connect-openapi-client = ">=
|
|
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 = ">=
|
|
71
|
+
connect-eaas-core = ">=37.0"
|
|
72
72
|
rich = "^12.4.1"
|
|
73
73
|
poetry-core = "^1.3.0"
|
|
74
|
-
uvloop = { version = "^0.
|
|
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
|
{connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/.github/workflows/build.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/contract_list/Readme.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{connect_cli-29.2 → connect_cli-40.0}/connect/.data/connect_reports/reports/customers_list/Readme.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|