connect-cli 26.15__tar.gz → 27.1__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-26.15 → connect_cli-27.1}/PKG-INFO +8 -3
- {connect_cli-26.15 → connect_cli-27.1}/README.md +6 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/ccli.py +9 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/commands.py +1 -5
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/constants.py +0 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/terminal.py +12 -8
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/constants.py +0 -8
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/sync.py +4 -6
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/script.py +2 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/api.py +2 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/export.py +5 -11
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/__init__.py +6 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/actions.py +4 -4
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/items.py +6 -8
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/media.py +5 -4
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/params.py +2 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/templates.py +4 -2
- connect_cli-27.1/connect/cli/plugins/project/extension/constants.py +15 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/helpers.py +30 -5
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/tfnapp.py.j2 +50 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/webapp.py.j2 +78 -5
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/docker-compose.yml.j2 +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/pyproject.toml.j2 +4 -1
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_tfnapp.py.j2 +40 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_webapp.py.j2 +113 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/copy.html.j2 +26 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/manual.html.j2 +56 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/components.js.j2 +2 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/copy.js.j2 +14 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/manual.js.j2 +15 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +342 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/utils.js.j2 +13 -0
- connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/manual.css.j2 +40 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/components.spec.js.j2 +8 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/webpack.config.js.j2 +16 -3
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/utils.py +20 -5
- connect_cli-27.1/connect/cli/plugins/project/extension/validators.py +29 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/wizard.py +14 -5
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/validations.py +8 -11
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/wizard.py +1 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/validators.py +20 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/commands.py +1 -5
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/helpers.py +8 -8
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/export.py +3 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translation_attr_sync.py +3 -6
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translation_sync.py +4 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/activate.py +2 -5
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/constants.py +0 -7
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/export.py +1 -4
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/primarize.py +2 -6
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/translation_sync.py +2 -5
- {connect_cli-26.15 → connect_cli-27.1}/pyproject.toml +37 -4
- connect_cli-26.15/connect/cli/plugins/project/extension/constants.py +0 -100
- connect_cli-26.15/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +0 -76
- {connect_cli-26.15 → connect_cli-27.1}/LICENSE +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/.github/workflows/build.yml +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/.gitignore +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/LICENSE +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/README.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/poetry.lock +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/pyproject.toml +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/constants.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/img/ClouBlue-Logo.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.css +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.html.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-connect-alone.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-logo.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-disabled.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-enabled.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/connect-logo.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cover-bg.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/imc-small-color.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-Black.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-White.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/accordo.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-blue.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-white.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/adobe.jpeg +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/airtame.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/allyhub.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/alsid.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/anchor.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/australia.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/austria.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/aws.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/belgium.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/brazil.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/canada.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/chile.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/colombia.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/france.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/germany.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/hong-kong.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/icon.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/india.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/italy.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/malaysia.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/mexico.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/netherlands.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/new-zealand.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/singapore.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/spain.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/sweden.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/switzerland.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/turkey.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uae.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uk.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/usa.png +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.css +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.html.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/Readme.md +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/entrypoint.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/templates/xlsx/template.xlsx +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/utils.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports.json +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/sonar-project.properties +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/tox.ini +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/helpers.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/base.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/config.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/http.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/plugins.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/utils.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/commands.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/export.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/locale/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/locale/commands.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/__init__.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/commands.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/context.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/save.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/clone.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/commands.py +4 -4
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/constants.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/capabilities.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/configuration_values.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/general.py +3 -3
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/static_resources.py +2 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/utils.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/commands.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/__init__.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/anvil.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/events.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/extension.json.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/schemas.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/static/.gitkeep.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.${project_slug}_dev.env.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.eslintrc.yaml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.github/workflows/test.yml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/CHANGELOG.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/Dockerfile.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/fileMock.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/styleMock.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/babel.config.json.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/jest.config.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/package.json.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_anvil.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_events.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/images/mkp.svg.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/index.html.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/settings.html.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/index.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/settings.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/index.css.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/pages.spec.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/utils.spec.js.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/renderer.py +3 -3
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/helpers.py +3 -3
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/README.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/__init__.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/entrypoint.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/README.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/__init__.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/entrypoint.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.github/workflows/build.yml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/reports.json.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/test_${project_slug}.py.j2 +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/utils.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/constants.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/utils.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/wizard.py +3 -3
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/base.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/constants.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/exceptions.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/sync_stats.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translations_synchronizers.py +2 -2
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/utils.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/__init__.py +0 -0
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/commands.py +1 -1
- {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: connect-cli
|
|
3
|
-
Version:
|
|
3
|
+
Version: 27.1
|
|
4
4
|
Summary: CloudBlue Connect Command Line Interface
|
|
5
5
|
Home-page: https://connect.cloudblue.com
|
|
6
6
|
License: Apache-2.0
|
|
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
22
22
|
Classifier: Topic :: Utilities
|
|
23
23
|
Requires-Dist: Jinja2 (>=3.1.2,<4.0.0)
|
|
24
24
|
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
25
|
-
Requires-Dist: connect-eaas-core (>=
|
|
25
|
+
Requires-Dist: connect-eaas-core (>=27.13,<28)
|
|
26
26
|
Requires-Dist: connect-markdown-renderer (>=2.0.1,<3)
|
|
27
27
|
Requires-Dist: connect-openapi-client (>=25.15)
|
|
28
28
|
Requires-Dist: connect-reports-core (>=26.0.0,<27.0.0)
|
|
@@ -43,7 +43,7 @@ Description-Content-Type: text/markdown
|
|
|
43
43
|
|
|
44
44
|
# CloudBlue Connect Command Line Interface
|
|
45
45
|
|
|
46
|
-
 [](https://pypi.org/project/connect-cli/)    [](https://pypi.org/project/connect-cli/)    [](https://sonarcloud.io/summary/new_code?id=connect-cli) [](https://sonarcloud.io/summary/new_code?id=connect-cli)
|
|
47
47
|
|
|
48
48
|
## Introduction
|
|
49
49
|
|
|
@@ -113,6 +113,11 @@ You can download its zip file from the [Github Releases](https://github.com/clou
|
|
|
113
113
|
* [Projects](docs/project_usage.md)
|
|
114
114
|
|
|
115
115
|
|
|
116
|
+
## Development
|
|
117
|
+
We use `isort` library to order and format our imports, and we check it using `flake8-isort` library (automatically on `flake8` run).
|
|
118
|
+
For convenience you may run `poetry run isort .` to order imports.
|
|
119
|
+
|
|
120
|
+
|
|
116
121
|
## Run tests
|
|
117
122
|
|
|
118
123
|
`connect-cli` uses [poetry](https://python-poetry.org/) for dependencies management and packaging.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CloudBlue Connect Command Line Interface
|
|
2
2
|
|
|
3
|
-
 [](https://pypi.org/project/connect-cli/)    [](https://pypi.org/project/connect-cli/)    [](https://sonarcloud.io/summary/new_code?id=connect-cli) [](https://sonarcloud.io/summary/new_code?id=connect-cli)
|
|
4
4
|
|
|
5
5
|
## Introduction
|
|
6
6
|
|
|
@@ -70,6 +70,11 @@ You can download its zip file from the [Github Releases](https://github.com/clou
|
|
|
70
70
|
* [Projects](docs/project_usage.md)
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
## Development
|
|
74
|
+
We use `isort` library to order and format our imports, and we check it using `flake8-isort` library (automatically on `flake8` run).
|
|
75
|
+
For convenience you may run `poetry run isort .` to order imports.
|
|
76
|
+
|
|
77
|
+
|
|
73
78
|
## Run tests
|
|
74
79
|
|
|
75
80
|
`connect-cli` uses [poetry](https://python-poetry.org/) for dependencies management and packaging.
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
|
|
4
4
|
# Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
|
|
5
|
+
import io
|
|
6
|
+
import sys
|
|
7
|
+
|
|
5
8
|
import click
|
|
6
9
|
|
|
7
10
|
from connect.cli.core.base import cli
|
|
@@ -10,6 +13,7 @@ from connect.cli.core.plugins import load_plugins
|
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
def main():
|
|
16
|
+
_set_stdout_unbuffered()
|
|
13
17
|
_ignore_openpyxl_warnings()
|
|
14
18
|
try:
|
|
15
19
|
import uvloop
|
|
@@ -44,5 +48,10 @@ def _ignore_openpyxl_warnings():
|
|
|
44
48
|
warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl.worksheet._reader')
|
|
45
49
|
|
|
46
50
|
|
|
51
|
+
def _set_stdout_unbuffered(): # pragma: no cover
|
|
52
|
+
if 'pytest' not in sys.modules:
|
|
53
|
+
sys.stdout = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True)
|
|
54
|
+
|
|
55
|
+
|
|
47
56
|
if __name__ == '__main__':
|
|
48
57
|
main() # pragma: no cover
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
import click
|
|
7
7
|
from click import ClickException
|
|
8
8
|
|
|
9
|
-
from connect.cli.core.account.helpers import
|
|
10
|
-
activate_account,
|
|
11
|
-
add_account,
|
|
12
|
-
remove_account,
|
|
13
|
-
)
|
|
9
|
+
from connect.cli.core.account.helpers import activate_account, add_account, remove_account
|
|
14
10
|
from connect.cli.core.config import pass_config
|
|
15
11
|
from connect.cli.core.constants import DEFAULT_ENDPOINT
|
|
16
12
|
from connect.cli.core.terminal import console
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
# Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
|
|
5
5
|
|
|
6
6
|
DEFAULT_ENDPOINT = 'https://api.connect.cloudblue.com/public/v1'
|
|
7
|
-
DEFAULT_USER_AGENT = 'CloudBlue Connect CLI/'
|
|
8
|
-
DEFAULT_BAR_FORMAT = '{desc:<70.69}{percentage:3.0f}%|{bar:30}{r_bar}'
|
|
9
7
|
|
|
10
8
|
CAIRO_NOT_FOUND_ERROR = """Connect CLI depends on Cairo which is not present on the system.
|
|
11
9
|
If so, please follow the instructions to install it at https://github.com/cloudblue/connect-cli
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import os
|
|
2
1
|
import contextlib
|
|
2
|
+
import os
|
|
3
3
|
|
|
4
4
|
from click.exceptions import Abort
|
|
5
|
+
from connect.utils.terminal.markdown import render
|
|
5
6
|
from rich import box
|
|
6
7
|
from rich.console import Console as _Console, Group
|
|
7
8
|
from rich.live import Live
|
|
8
|
-
from rich.status import Status as _Status
|
|
9
|
-
from rich.style import Style
|
|
10
9
|
from rich.panel import Panel
|
|
11
|
-
from rich.prompt import Confirm
|
|
12
10
|
from rich.progress import (
|
|
13
|
-
BarColumn,
|
|
14
|
-
|
|
11
|
+
BarColumn,
|
|
12
|
+
MofNCompleteColumn,
|
|
13
|
+
Progress,
|
|
14
|
+
SpinnerColumn,
|
|
15
|
+
TaskProgressColumn,
|
|
16
|
+
TextColumn,
|
|
17
|
+
TimeElapsedColumn,
|
|
15
18
|
)
|
|
19
|
+
from rich.prompt import Confirm
|
|
20
|
+
from rich.status import Status as _Status
|
|
21
|
+
from rich.style import Style
|
|
16
22
|
from rich.table import Table
|
|
17
23
|
from rich.text import Text
|
|
18
24
|
|
|
19
|
-
from connect.utils.terminal.markdown import render
|
|
20
|
-
|
|
21
25
|
|
|
22
26
|
def get_style(
|
|
23
27
|
fg=None,
|
|
@@ -20,11 +20,3 @@ COL_HEADERS = {
|
|
|
20
20
|
'S': 'Technical Contact Email',
|
|
21
21
|
'T': 'Technical Contact Phone',
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
SYNC_RESULT_OUTPUT = """
|
|
25
|
-
# Results of synchronization
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
| Module | Processed | Created | Updated | Deleted | Skipped | Errors |
|
|
29
|
-
|:--------|--------:| --------:|--------:|----------:|----------:|----------:|
|
|
30
|
-
"""
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import uuid
|
|
2
2
|
from collections import namedtuple
|
|
3
|
+
from zipfile import BadZipFile
|
|
3
4
|
|
|
4
5
|
import phonenumbers
|
|
5
6
|
from click import ClickException
|
|
6
|
-
|
|
7
7
|
from connect.client import ClientError, R
|
|
8
|
-
|
|
9
|
-
from zipfile import BadZipFile
|
|
10
|
-
|
|
11
8
|
from openpyxl import load_workbook
|
|
12
9
|
from openpyxl.utils.exceptions import InvalidFileException
|
|
13
10
|
|
|
14
11
|
from connect.cli.core.terminal import console
|
|
15
|
-
from connect.cli.plugins.shared.sync_stats import SynchronizerStatsSingleModule
|
|
16
|
-
from connect.cli.plugins.shared.exceptions import SheetNotFoundError
|
|
17
12
|
from connect.cli.plugins.customer.constants import COL_HEADERS
|
|
13
|
+
from connect.cli.plugins.shared.exceptions import SheetNotFoundError
|
|
14
|
+
from connect.cli.plugins.shared.sync_stats import SynchronizerStatsSingleModule
|
|
15
|
+
|
|
18
16
|
|
|
19
17
|
fields = (v.replace(' ', '_').lower() for v in COL_HEADERS.values())
|
|
20
18
|
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
import re
|
|
6
6
|
from typing import List
|
|
7
7
|
|
|
8
|
-
from connect.cli.plugins.play.context import Context
|
|
9
8
|
from connect.client import ConnectClient
|
|
10
9
|
|
|
10
|
+
from connect.cli.plugins.play.context import Context
|
|
11
|
+
|
|
11
12
|
|
|
12
13
|
class OptionWrapper:
|
|
13
14
|
def __init__(self, *args, **kwargs):
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
# This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
|
|
4
4
|
# Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
|
|
5
5
|
|
|
6
|
-
from connect.cli.core.http import handle_http_error
|
|
7
6
|
from connect.client import ClientError, R
|
|
8
7
|
|
|
8
|
+
from connect.cli.core.http import handle_http_error
|
|
9
|
+
|
|
9
10
|
|
|
10
11
|
def create_unit(client, data):
|
|
11
12
|
try:
|
|
@@ -3,38 +3,32 @@
|
|
|
3
3
|
# This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
|
|
4
4
|
# Copyright (c) 2019-2022 Ingram Micro. All Rights Reserved.
|
|
5
5
|
|
|
6
|
-
import os
|
|
7
6
|
import copy
|
|
8
7
|
import json
|
|
8
|
+
import os
|
|
9
9
|
from datetime import datetime
|
|
10
10
|
from urllib import parse
|
|
11
11
|
|
|
12
12
|
import requests
|
|
13
13
|
from click import ClickException
|
|
14
|
+
from connect.client import ClientError, R
|
|
14
15
|
from openpyxl import Workbook
|
|
15
16
|
from openpyxl.styles import Alignment, Font, PatternFill
|
|
16
|
-
from openpyxl.styles.colors import
|
|
17
|
+
from openpyxl.styles.colors import WHITE, Color
|
|
17
18
|
from openpyxl.utils import quote_sheetname
|
|
18
19
|
from openpyxl.worksheet.datavalidation import DataValidation
|
|
19
20
|
|
|
20
|
-
from connect.cli.core.http import
|
|
21
|
-
format_http_status,
|
|
22
|
-
handle_http_error,
|
|
23
|
-
)
|
|
21
|
+
from connect.cli.core.http import format_http_status, handle_http_error
|
|
24
22
|
from connect.cli.core.utils import validate_output_options
|
|
25
23
|
from connect.cli.plugins.product.constants import PARAM_TYPES
|
|
26
24
|
from connect.cli.plugins.product.utils import get_json_object_for_param
|
|
27
|
-
from connect.cli.plugins.shared.export import
|
|
28
|
-
alter_attributes_sheet,
|
|
29
|
-
get_translation_workbook,
|
|
30
|
-
)
|
|
25
|
+
from connect.cli.plugins.shared.export import alter_attributes_sheet, get_translation_workbook
|
|
31
26
|
from connect.cli.plugins.shared.utils import (
|
|
32
27
|
fill_translation_row,
|
|
33
28
|
get_col_headers_by_ws_type,
|
|
34
29
|
get_col_limit_by_ws_type,
|
|
35
30
|
setup_locale_data_validation,
|
|
36
31
|
)
|
|
37
|
-
from connect.client import ClientError, R
|
|
38
32
|
|
|
39
33
|
|
|
40
34
|
def _setup_locales_list(ws, client):
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
from connect.cli.plugins.product.sync.actions import ActionsSynchronizer # noqa: F401
|
|
2
2
|
from connect.cli.plugins.product.sync.capabilities import CapabilitiesSynchronizer # noqa: F401
|
|
3
|
-
from connect.cli.plugins.product.sync.configuration_values import
|
|
3
|
+
from connect.cli.plugins.product.sync.configuration_values import ( # noqa: F401
|
|
4
|
+
ConfigurationValuesSynchronizer,
|
|
5
|
+
)
|
|
4
6
|
from connect.cli.plugins.product.sync.general import GeneralSynchronizer # noqa: F401
|
|
5
7
|
from connect.cli.plugins.product.sync.items import ItemSynchronizer # noqa: F401
|
|
6
8
|
from connect.cli.plugins.product.sync.media import MediaSynchronizer # noqa: F401
|
|
7
9
|
from connect.cli.plugins.product.sync.params import ParamsSynchronizer # noqa: F401
|
|
8
|
-
from connect.cli.plugins.product.sync.static_resources import
|
|
10
|
+
from connect.cli.plugins.product.sync.static_resources import ( # noqa: F401
|
|
11
|
+
StaticResourcesSynchronizer,
|
|
12
|
+
)
|
|
9
13
|
from connect.cli.plugins.product.sync.templates import TemplatesSynchronizer # noqa: F401
|
|
@@ -7,12 +7,12 @@ import re
|
|
|
7
7
|
from collections import namedtuple
|
|
8
8
|
from functools import partial
|
|
9
9
|
|
|
10
|
-
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
11
|
-
from connect.cli.plugins.shared.constants import (
|
|
12
|
-
ACTIONS_HEADERS,
|
|
13
|
-
)
|
|
14
10
|
from connect.client import ClientError
|
|
15
11
|
|
|
12
|
+
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
13
|
+
from connect.cli.plugins.shared.constants import ACTIONS_HEADERS
|
|
14
|
+
|
|
15
|
+
|
|
16
16
|
fields = (v.replace(' ', '_').lower() for v in ACTIONS_HEADERS.values())
|
|
17
17
|
|
|
18
18
|
_RowData = namedtuple('RowData', fields)
|
|
@@ -5,13 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
from collections import namedtuple
|
|
7
7
|
|
|
8
|
-
from connect.
|
|
9
|
-
|
|
10
|
-
COMMITMENT,
|
|
11
|
-
PRECISIONS,
|
|
12
|
-
)
|
|
13
|
-
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
14
|
-
from connect.cli.plugins.shared.constants import ITEMS_COLS_HEADERS
|
|
8
|
+
from connect.client.rql import R
|
|
9
|
+
|
|
15
10
|
from connect.cli.plugins.product.api import (
|
|
16
11
|
create_item,
|
|
17
12
|
create_unit,
|
|
@@ -20,7 +15,10 @@ from connect.cli.plugins.product.api import (
|
|
|
20
15
|
get_item_by_mpn,
|
|
21
16
|
update_item,
|
|
22
17
|
)
|
|
23
|
-
from connect.
|
|
18
|
+
from connect.cli.plugins.product.constants import BILLING_PERIOD, COMMITMENT, PRECISIONS
|
|
19
|
+
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
20
|
+
from connect.cli.plugins.shared.constants import ITEMS_COLS_HEADERS
|
|
21
|
+
|
|
24
22
|
|
|
25
23
|
fields = (v.replace(' ', '_').lower() for v in ITEMS_COLS_HEADERS.values())
|
|
26
24
|
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
# This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
|
|
4
4
|
# Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
|
|
5
|
+
import json
|
|
5
6
|
import os
|
|
6
7
|
from collections import namedtuple
|
|
7
|
-
from urllib.parse import urlparse
|
|
8
|
-
import json
|
|
9
8
|
from mimetypes import guess_type
|
|
9
|
+
from urllib.parse import urlparse
|
|
10
10
|
|
|
11
|
-
from connect.cli.plugins.shared.constants import MEDIA_COLS_HEADERS
|
|
12
|
-
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
13
11
|
from connect.client import ClientError
|
|
14
12
|
|
|
13
|
+
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
14
|
+
from connect.cli.plugins.shared.constants import MEDIA_COLS_HEADERS
|
|
15
|
+
|
|
15
16
|
|
|
16
17
|
fields = (v.replace(' ', '_').lower() for v in MEDIA_COLS_HEADERS.values())
|
|
17
18
|
|
|
@@ -7,13 +7,13 @@ import re
|
|
|
7
7
|
from collections import namedtuple
|
|
8
8
|
from json.decoder import JSONDecodeError
|
|
9
9
|
|
|
10
|
+
from connect.client import ClientError
|
|
10
11
|
from openpyxl.styles import Alignment
|
|
11
12
|
|
|
12
13
|
from connect.cli.plugins.product.constants import PARAM_TYPES
|
|
14
|
+
from connect.cli.plugins.product.utils import ParamSwitchNotSupported, get_json_object_for_param
|
|
13
15
|
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
14
16
|
from connect.cli.plugins.shared.constants import PARAMS_COLS_HEADERS
|
|
15
|
-
from connect.cli.plugins.product.utils import get_json_object_for_param, ParamSwitchNotSupported
|
|
16
|
-
from connect.client import ClientError
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
fields = (v.replace(' ', '_').lower() for v in PARAMS_COLS_HEADERS.values())
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
from collections import namedtuple
|
|
7
7
|
|
|
8
|
-
from connect.cli.plugins.shared.constants import TEMPLATES_HEADERS
|
|
9
|
-
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
10
8
|
from connect.client import ClientError
|
|
11
9
|
|
|
10
|
+
from connect.cli.plugins.shared.base import ProductSynchronizer
|
|
11
|
+
from connect.cli.plugins.shared.constants import TEMPLATES_HEADERS
|
|
12
|
+
|
|
13
|
+
|
|
12
14
|
fields = (v.replace(' ', '_').lower() for v in TEMPLATES_HEADERS.values())
|
|
13
15
|
|
|
14
16
|
_RowData = namedtuple('RowData', fields)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright © 2021 CloudBlue. All rights reserved.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
PYPI_EXTENSION_RUNNER_URL = 'https://pypi.org/pypi/connect-extension-runner/json'
|
|
5
|
+
|
|
6
|
+
PRE_COMMIT_HOOK = """#! /bin/sh
|
|
7
|
+
|
|
8
|
+
set -e
|
|
9
|
+
|
|
10
|
+
if [ -f /usr/local/bin/extension-check-static ]; then
|
|
11
|
+
exec /usr/local/bin/extension-check-static {package_name}
|
|
12
|
+
else
|
|
13
|
+
exec docker-compose run -T {project_slug}_bash /usr/local/bin/extension-check-static {package_name}
|
|
14
|
+
fi
|
|
15
|
+
"""
|
|
@@ -4,12 +4,11 @@ import os
|
|
|
4
4
|
|
|
5
5
|
import yaml
|
|
6
6
|
from click.exceptions import ClickException
|
|
7
|
+
from connect.eaas.core.validation.validators import get_validators
|
|
7
8
|
from interrogatio.core.dialog import dialogus
|
|
8
9
|
|
|
9
10
|
from connect.cli import get_version
|
|
10
11
|
from connect.cli.core.terminal import console
|
|
11
|
-
from connect.cli.plugins.project.utils import show_validation_result_table
|
|
12
|
-
from connect.cli.plugins.project.renderer import BoilerplateRenderer
|
|
13
12
|
from connect.cli.plugins.project.extension.utils import (
|
|
14
13
|
get_event_definitions,
|
|
15
14
|
get_pypi_runner_version,
|
|
@@ -20,7 +19,9 @@ from connect.cli.plugins.project.extension.wizard import (
|
|
|
20
19
|
get_questions,
|
|
21
20
|
get_summary,
|
|
22
21
|
)
|
|
23
|
-
from connect.
|
|
22
|
+
from connect.cli.plugins.project.renderer import BoilerplateRenderer
|
|
23
|
+
from connect.cli.plugins.project.utils import show_validation_result_table
|
|
24
|
+
from connect.cli.plugins.project.validators import ProjectDirValidator
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def bootstrap_extension_project( # noqa: CCR001
|
|
@@ -53,6 +54,12 @@ def bootstrap_extension_project( # noqa: CCR001
|
|
|
53
54
|
except Exception as e:
|
|
54
55
|
raise ClickException(f'Can not load or parse answers from {load_answers}: {e}')
|
|
55
56
|
|
|
57
|
+
if not overwrite:
|
|
58
|
+
for q in questions:
|
|
59
|
+
if q['name'] == 'project_slug':
|
|
60
|
+
q['validators'].append(ProjectDirValidator(output_dir))
|
|
61
|
+
break
|
|
62
|
+
|
|
56
63
|
answers = dialogus(
|
|
57
64
|
questions,
|
|
58
65
|
'Extension project bootstrap',
|
|
@@ -92,6 +99,8 @@ def bootstrap_extension_project( # noqa: CCR001
|
|
|
92
99
|
if answers['use_github_actions'] == 'n':
|
|
93
100
|
exclude.extend(['.github', '.github/**/*'])
|
|
94
101
|
|
|
102
|
+
application_types = answers.get('application_types', [])
|
|
103
|
+
|
|
95
104
|
if answers.get('webapp_supports_ui') != 'y':
|
|
96
105
|
exclude.extend([
|
|
97
106
|
os.path.join('${package_name}', 'static', '.gitkeep'),
|
|
@@ -106,9 +115,25 @@ def bootstrap_extension_project( # noqa: CCR001
|
|
|
106
115
|
'jest.config.js.j2',
|
|
107
116
|
])
|
|
108
117
|
|
|
109
|
-
|
|
118
|
+
elif 'tfnapp' not in application_types:
|
|
119
|
+
exclude.extend([
|
|
120
|
+
'ui/pages/transformations',
|
|
121
|
+
'ui/pages/transformations/*',
|
|
122
|
+
'ui/src/pages/transformations',
|
|
123
|
+
'ui/src/pages/transformations/*',
|
|
124
|
+
'ui/styles/manual.css.j2',
|
|
125
|
+
])
|
|
126
|
+
else:
|
|
127
|
+
exclude.extend([
|
|
128
|
+
'ui/pages/index.html.j2',
|
|
129
|
+
'ui/pages/settings.html.j2',
|
|
130
|
+
'ui/src/pages/index.js.j2',
|
|
131
|
+
'ui/src/pages/settings.js.j2',
|
|
132
|
+
'ui/tests/pages.spec.js.j2',
|
|
133
|
+
'ui/tests/utils.spec.js.j2',
|
|
134
|
+
])
|
|
110
135
|
|
|
111
|
-
for app_type in ['anvil', 'events', 'webapp']:
|
|
136
|
+
for app_type in ['anvil', 'events', 'webapp', 'tfnapp']:
|
|
112
137
|
if app_type not in application_types:
|
|
113
138
|
exclude.append(
|
|
114
139
|
os.path.join(
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) {% now 'utc', '%Y' %}, {{ author }}
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
from connect.eaas.core.decorators import manual_transformation, transformation{% if include_variables_example == 'y' -%}, variables{% endif %}
|
|
7
|
+
from connect.eaas.core.extension import TransformationsApplicationBase
|
|
8
|
+
from connect.eaas.core.responses import RowTransformationResponse
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
{% if include_variables_example == 'y' -%}
|
|
12
|
+
@variables([{
|
|
13
|
+
'name': 'VAR_NAME_1',
|
|
14
|
+
'initial_value': 'VAR_VALUE_1',
|
|
15
|
+
'secure': False,
|
|
16
|
+
}])
|
|
17
|
+
{% endif -%}
|
|
18
|
+
class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}TransformationsApplication(TransformationsApplicationBase):
|
|
19
|
+
@transformation(
|
|
20
|
+
name='Manual transformation',
|
|
21
|
+
description=(
|
|
22
|
+
'This transformation function allows to describe a manual '
|
|
23
|
+
'procedure to be done.'
|
|
24
|
+
),
|
|
25
|
+
edit_dialog_ui='/static/transformations/manual.html',
|
|
26
|
+
)
|
|
27
|
+
@manual_transformation()
|
|
28
|
+
{% if use_asyncio == 'y' %}async {% endif %}def manual_transformation(self, row: dict):
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
@transformation(
|
|
32
|
+
name='Copy Column(s)',
|
|
33
|
+
description=(
|
|
34
|
+
'This transformation function allows copy values from Input to Output columns, '
|
|
35
|
+
'which can be used in case of change column name in the output data or '
|
|
36
|
+
'create a copy of values in table.'
|
|
37
|
+
),
|
|
38
|
+
edit_dialog_ui='/static/transformations/copy.html',
|
|
39
|
+
)
|
|
40
|
+
def copy_columns(self, row: dict):
|
|
41
|
+
tfn_settings = (
|
|
42
|
+
self.transformation_request['transformation']['settings']
|
|
43
|
+
)
|
|
44
|
+
result = {}
|
|
45
|
+
|
|
46
|
+
for setting in tfn_settings:
|
|
47
|
+
result[setting['to']] = row[setting['from']]
|
|
48
|
+
|
|
49
|
+
return RowTransformationResponse.done(result)
|
|
50
|
+
|
|
@@ -3,11 +3,19 @@
|
|
|
3
3
|
# Copyright (c) {% now 'utc', '%Y' %}, {{ author }}
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
|
+
{%- if extension_type == 'transformations' %}
|
|
7
|
+
from connect.eaas.core.decorators import (
|
|
8
|
+
router,
|
|
9
|
+
web_app,
|
|
10
|
+
)
|
|
11
|
+
from connect.eaas.core.extension import WebApplicationBase
|
|
12
|
+
from fastapi.responses import JSONResponse
|
|
13
|
+
{%- else %}
|
|
6
14
|
from typing import List
|
|
7
15
|
|
|
8
16
|
from connect.client import {% if use_asyncio == 'y' %}Async{% endif %}ConnectClient{% if extension_type == 'multiaccount' %}, R{% endif %}
|
|
9
17
|
from connect.eaas.core.decorators import (
|
|
10
|
-
{%- if webapp_supports_ui == 'y'
|
|
18
|
+
{%- if webapp_supports_ui == 'y'%}
|
|
11
19
|
account_settings_page,
|
|
12
20
|
module_pages,
|
|
13
21
|
{%- endif %}
|
|
@@ -35,6 +43,7 @@ from connect.eaas.core.inject.synchronous import get_extension_client
|
|
|
35
43
|
from fastapi import Depends
|
|
36
44
|
|
|
37
45
|
from {{ package_name }}.schemas import Marketplace{% if extension_type == 'multiaccount' %}, Settings{% endif %}
|
|
46
|
+
{%- endif %}
|
|
38
47
|
|
|
39
48
|
|
|
40
49
|
{% if include_variables_example == 'y' -%}
|
|
@@ -52,13 +61,13 @@ from {{ package_name }}.schemas import Marketplace{% if extension_type == 'multi
|
|
|
52
61
|
])
|
|
53
62
|
{% endif -%}
|
|
54
63
|
@web_app(router)
|
|
55
|
-
{% if webapp_supports_ui == 'y' -%}
|
|
64
|
+
{% if webapp_supports_ui == 'y' and extension_type != 'transformations' -%}
|
|
56
65
|
@account_settings_page('Chart settings', '/static/settings.html')
|
|
57
66
|
@module_pages('Chart', '/static/index.html')
|
|
58
67
|
{% endif -%}
|
|
59
68
|
class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(WebApplicationBase):
|
|
60
69
|
|
|
61
|
-
@router.get(
|
|
70
|
+
{% if extension_type != 'transformations' -%}@router.get(
|
|
62
71
|
'/marketplaces',
|
|
63
72
|
summary='List all available marketplaces',
|
|
64
73
|
response_model=List[Marketplace],
|
|
@@ -77,7 +86,7 @@ class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(
|
|
|
77
86
|
{% if extension_type == 'multiaccount' -%}
|
|
78
87
|
@router.get(
|
|
79
88
|
'/settings',
|
|
80
|
-
summary='
|
|
89
|
+
summary='Retrieve charts settings',
|
|
81
90
|
response_model=Settings,
|
|
82
91
|
)
|
|
83
92
|
{% if use_asyncio == 'y' %}async {% endif %}def retrieve_settings(
|
|
@@ -132,4 +141,68 @@ class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(
|
|
|
132
141
|
],
|
|
133
142
|
},
|
|
134
143
|
}
|
|
135
|
-
{
|
|
144
|
+
{%- endif %}
|
|
145
|
+
|
|
146
|
+
{%- else %}def validate_copy_columns(self, data):
|
|
147
|
+
if (
|
|
148
|
+
'settings' not in data
|
|
149
|
+
or not isinstance(data['settings'], list)
|
|
150
|
+
or 'columns' not in data
|
|
151
|
+
or 'input' not in data['columns']
|
|
152
|
+
):
|
|
153
|
+
return JSONResponse(status_code=400, content={'error': 'Invalid input data'})
|
|
154
|
+
|
|
155
|
+
settings = data['settings']
|
|
156
|
+
input_columns = data['columns']['input']
|
|
157
|
+
available_input_columns = [c['name'] for c in input_columns]
|
|
158
|
+
unique_names = [c['name'] for c in input_columns]
|
|
159
|
+
overview = []
|
|
160
|
+
|
|
161
|
+
for s in settings:
|
|
162
|
+
if 'from' not in s or 'to' not in s:
|
|
163
|
+
return JSONResponse(
|
|
164
|
+
status_code=400,
|
|
165
|
+
content={'error': 'Invalid settings format'},
|
|
166
|
+
)
|
|
167
|
+
if s['from'] not in available_input_columns:
|
|
168
|
+
return JSONResponse(
|
|
169
|
+
status_code=400,
|
|
170
|
+
content={'error': f'The input column {s["from"]} does not exists'},
|
|
171
|
+
)
|
|
172
|
+
if s['to'] in unique_names:
|
|
173
|
+
return JSONResponse(
|
|
174
|
+
status_code=400,
|
|
175
|
+
content={
|
|
176
|
+
'error': f'Invalid column name {s["to"]}. The to field should be unique',
|
|
177
|
+
},
|
|
178
|
+
)
|
|
179
|
+
unique_names.append(s['to'])
|
|
180
|
+
overview.append(f'{s["from"]} --> {s["to"]}')
|
|
181
|
+
|
|
182
|
+
overview = ''.join([row + '\n' for row in overview])
|
|
183
|
+
|
|
184
|
+
return {
|
|
185
|
+
'overview': overview,
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
@router.post(
|
|
189
|
+
'/validate/{transformation_function}',
|
|
190
|
+
summary='Validate settings',
|
|
191
|
+
)
|
|
192
|
+
def validate_tfn_settings(
|
|
193
|
+
self,
|
|
194
|
+
transformation_function: str,
|
|
195
|
+
data: dict,
|
|
196
|
+
):
|
|
197
|
+
try:
|
|
198
|
+
method = getattr(self, f'validate_{transformation_function}')
|
|
199
|
+
return method(data)
|
|
200
|
+
except AttributeError:
|
|
201
|
+
return JSONResponse(
|
|
202
|
+
status_code=400,
|
|
203
|
+
content={
|
|
204
|
+
'error': f'The validation method {transformation_function} does not exist',
|
|
205
|
+
},
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
{%- endif %}
|