Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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)