def primarize_translation( api_url, api_key, translation_id, verbose=False, ): try: client = ConnectClient( api_key=api_key, endpoint=api_url, use_specs=False, max_retries=3, logger=RequestLogger() if verbose else None, ) payload = { 'primary': True, } translation = (client.ns('localization').translations[translation_id]. action('primarize').post(payload=payload)) except ClientError as error: if error.status_code == 404: status = format_http_status(error.status_code) raise click.ClickException( f'{status}: Translation {translation_id} not found.') handle_http_error(error) return translation
def dump_customers(api_url, api_key, account_id, output_file, silent, output_path=None): # noqa: CCR001 if not output_path: output_path = os.path.join(os.getcwd(), account_id) else: if not os.path.exists(output_path): raise ClickException( "Output Path does not exist", ) output_path = os.path.join(output_path, account_id) if not output_file: output_file = os.path.join(output_path, 'customers.xlsx') else: output_file = os.path.join(output_path, output_file) if not os.path.exists(output_path): os.mkdir(output_path) elif not os.path.isdir(output_path): raise ClickException( "Exists a file with account id as name but a directory is expected, please rename it", ) try: client = ConnectClient( max_retries=3, api_key=api_key, endpoint=api_url, use_specs=False, default_limit=1000, ) wb = Workbook() _prepare_worksheet(wb.create_sheet('Customers')) _add_countries(wb.create_sheet('Countries')) customers = client.ns('tier').accounts.all() row_idx = 2 count = customers.count() progress = trange(0, count, disable=silent, leave=True, bar_format=DEFAULT_BAR_FORMAT) for customer in customers: progress.set_description(f'Processing customer {customer["id"]}') progress.update(1) _fill_customer_row(wb['Customers'], row_idx, customer) row_idx += 1 except ClientError as error: handle_http_error(error) default_sheet = wb['Sheet'] wb.remove(default_sheet) wb.save(output_file) return output_file
def dump_customers(api_url, api_key, account_id, output_file, silent, verbose=False, output_path=None): # noqa: CCR001 output_file = validate_output_options( output_path, output_file, default_dir_name=account_id, default_file_name='customers', ) try: client = ConnectClient( max_retries=3, api_key=api_key, endpoint=api_url, use_specs=False, default_limit=1000, logger=RequestLogger() if verbose else None, ) wb = Workbook() _prepare_worksheet(wb.create_sheet('Customers')) _add_countries(wb.create_sheet('Countries')) customers = client.ns('tier').accounts.all() row_idx = 2 count = customers.count() progress = trange(0, count, disable=silent, leave=True, bar_format=DEFAULT_BAR_FORMAT) for customer in customers: progress.set_description(f'Processing customer {customer["id"]}') progress.update(1) _fill_customer_row(wb['Customers'], row_idx, customer) row_idx += 1 except ClientError as error: handle_http_error(error) default_sheet = wb['Sheet'] wb.remove(default_sheet) wb.save(output_file) return output_file
def cmd_list_translations(config, query, page_size, always_continue): acc_id = config.active.id acc_name = config.active.name if not config.silent: click.secho( f'Current active account: {acc_id} - {acc_name}\n', fg='blue', ) client = ConnectClient( api_key=config.active.api_key, endpoint=config.active.endpoint, use_specs=False, max_retries=3, logger=RequestLogger() if config.verbose else None, ) default_query = client.ns('localization').translations.all() query_translations = default_query.filter( query) if query else default_query translation_list = [TRANSLATION_TABLE_HEADER] count_of_translations = query_translations.count() for paging, resource in enumerate(query_translations, 1): owner = field_to_check_mark(acc_id == resource["owner"]["id"]) primary = field_to_check_mark(resource["primary"]) row = row_format_resource( resource["id"], resource["context"]["instance_id"], resource["context"]["type"], resource["context"]["name"], resource["locale"]["name"], resource["auto"]["status"], resource["status"], primary, owner, ) translation_list.append(row) table_formater_resource(translation_list, count_of_translations, paging, page_size) if paging % page_size == 0 and paging != count_of_translations and not always_continue: if not continue_or_quit(): return
def cmd_list_locales(config, query, page_size, always_continue): acc_id = config.active.id acc_name = config.active.name if not config.silent: click.secho( f'Current active account: {acc_id} - {acc_name}\n', fg='blue', ) client = ConnectClient( api_key=config.active.api_key, endpoint=config.active.endpoint, use_specs=False, max_retries=3, logger=RequestLogger() if config.verbose else None, ) default_query = client.ns('localization').locales.all() query_locales = default_query.filter(query) if query else default_query locales_list = [LOCALES_TABLE_HEADER] count_of_locales = query_locales.count() for paging, resource in enumerate(query_locales, 1): auto = field_to_check_mark(resource["auto_translation"], false_value='\u2716') translations_count = resource["stats"]["translations"] or '-' row = row_format_resource(resource["id"], resource["name"], auto, translations_count) locales_list.append(row) table_formater_resource( locales_list, count_of_locales, paging, page_size, ) if paging % page_size == 0 and paging != count_of_locales and not always_continue: if not continue_or_quit(): return
def _get_translation_workbook(api_url, api_key, translation_id, verbose=False): try: client = ConnectClient(api_key=api_key, endpoint=api_url, use_specs=False) attributes_path = client.ns( 'localization').translations[translation_id].attributes.path url = f'{api_url}/{attributes_path}' response = logged_request('GET', url, verbose, headers={ 'Content-type': EXCEL_CONTENT_TYPE, **get_headers(api_key), }) if response.status_code != 200: raise ClientError(status_code=response.status_code) return load_workbook(filename=BytesIO(response.content)) except ClientError as error: if error.status_code == 404: status = format_http_status(error.status_code) raise ClickException( f'{status}: Translation {translation_id} not found.') handle_http_error(error)