Пример #1
0
def company(uf_code: str = 'SP',
            age: int = 1,
            formatting: bool = True,
            data_only: bool = True) -> dict:
    """Gere dados de companhia (empresa/organização) aleatório.
    
    Parameters
    ----------
    age
        Representa o tempo de existência da companhia (a idade da companhia).
    """

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    if not (1 <= age <= 30):
        msg_error = f'The company age value "{age}" is invalid. Enter a valid company age.'
        msg_error += f' The range is 1 to 30.'

        raise ValueError(msg_error)

    r = fordev_request(content_length=48,
                       referer='gerador_de_empresas',
                       payload={
                           'acao': 'gerar_empresa',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code,
                           'idade': age
                       })

    # Replace data in html format with company info only.
    r['data'] = filter_company_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Пример #2
0
def voter_title(uf_code: str, data_only: bool = True) -> str:
    """Gere o código do título de eleitor aleatório, conforme o UF especificado."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_titulo_de_eleitor',
                       payload={
                           'acao': 'gerar_titulo_eleitor',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Пример #3
0
def vehicle(brand_code: int = 0,
            uf_code: str = '',
            formatting: bool = True,
            data_only: bool = True) -> dict:
    """Gere dados de veículo aleatório.
    
    Parameters
    ----------
    brand
        Recebe um valor númerico de 0 a 87 que representa a marca do carro para
        geração dos dados aleatórios.

        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    if not (0 <= brand_code <= 87):
        msg_error = f'The vehicle brand code value "{brand_code}" is invalid. Enter a valid vehicle brand code.'
        msg_error += f' The range is 0 to 87.'

        raise ValueError(msg_error)

    # Replace the brand code with the brand code used in 4devs.
    if brand_code != 0:
        brand_code = ALL_VEHICLE_BRANDS[brand_code]['code']
    else:
        brand_code = ''

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(
        content_length=
        62,  # Max of bytes for generate vehicle data in all possibilities.
        referer='gerador_de_veiculos',
        payload={
            'acao': 'gerar_veiculo',
            'pontuacao': 'S' if formatting else 'N',
            'estado': uf_code,
            'fipe_codigo_marca': brand_code
        })

    # Replace data in html format with bank account info only.
    r['data'] = filter_vehicle_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Пример #4
0
def city(uf_code: str = 'SP', data_only: bool = True) -> list:
    """Obtenha as cidades do UF especificado."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_pessoas',
                       payload={
                           'acao': 'carregar_cidades',
                           'cep_estado': uf_code
                       })

    # Replace data in html format with city names only
    r['data'] = filter_city_name(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Пример #5
0
def state_registration(uf_code: str = 'SP',
                       formatting: bool = True,
                       data_only: bool = True) -> str:
    """Gere o código de registro de estado aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code)

    r = fordev_request(content_length=35,
                       referer='gerador_de_inscricao_estadual',
                       payload={
                           'acao': 'gerar_ie',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Пример #6
0
def vehicle_plate(uf_code: str = '',
                  formatting: bool = True,
                  data_only: bool = True) -> str:
    """Gere o código da placa de veículo aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=36 if uf_code == '' else 38,
                       referer='gerador_de_placa_automoveis',
                       payload={
                           'acao': 'gerar_placa',
                           'pontuacao': 'S' if formatting else 'N',
                           'estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Пример #7
0
def cpf(uf_code: str = '',
        formatting: bool = True,
        data_only: bool = True) -> str:
    """Gere o código de um CPF(Cadastro de Pessoas Físicas) aleatório."""

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=38 if uf_code == '' else 40,
                       referer='gerador_de_cpf',
                       payload={
                           'acao': 'gerar_cpf',
                           'pontuacao': 'S' if formatting else 'N',
                           'cpf_estado': uf_code
                       })

    return data_format(data_only=data_only, data_dict=r)
Пример #8
0
def bank_account(bank: int = 0,
                 uf_code: str = '',
                 data_only: bool = True) -> dict:
    """Gere dados de conta bancária.
    
    Parameters
    ----------
    bank
        Recebe um valor númerico de 0 a 5 que representa a
        bandeira do banco da conta bancária a ser gerada.

        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html
    """

    if not (0 <= bank <= 5):
        msg_error = f'The bank code value "{bank}" is invalid. Enter a valid bank code.'
        msg_error += f' The range is 0 to 5.'

        raise ValueError(msg_error)

    # Replace the bank number with the bank code used in 4devs.
    bank = ['', 2, 121, 85, 120,
            151][bank]  # Use the index for get the bank code.

    uf_code = uf_code.upper()

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(content_length=45,
                       referer='gerador_conta_bancaria',
                       payload={
                           'acao': 'gerar_conta_bancaria',
                           'estado': uf_code,
                           'banco': bank
                       })

    # Replace data in html format with bank account info only.
    r['data'] = filter_bank_account_info(r['data'])

    return data_format(data_only=data_only, data_dict=r)
Пример #9
0
 def test_raise_for_invalid_uf(self):
     raise_for_invalid_uf('SP')
     raise_for_invalid_uf('', include_blank=True)
     with self.assertRaises(ValueError):
         raise_for_invalid_uf('HUE')
         raise_for_invalid_uf('', include_blank=False)
Пример #10
0
def people(n: int = 1,
           sex: str = 'R',
           age: int = 0,
           uf_code: str = '',
           formatting: bool = True,
           data_only: bool = True) -> str:
    """Gere dados de pessoa(s) aleatório(s)
    
    Parameters
    ----------
    n
        O número de pessoas a ter dados gerados. O mínimo é 1 e o máximo é 30.

    sex
        Uma string representando o sexo da pessoa para geração dos dados.
        
        Consulte a doc para verificar as opções suportadas:
        https://fordev.rtfd.io/pt_BR/latest/fordev/generators.html

    age
        A idade da pessoa para geração dos dados. A idade mínima é 18 e a máxima é 80.
    """

    sex = sex.upper()

    uf_code = uf_code.upper()

    if not (1 <= n <= 30):
        msg_error = f'The n value "{n}" is invalid. Enter a valid number of people.'
        msg_error += f' The range is 1 to 30 peoples.'

        raise ValueError(msg_error)

    if sex not in ['M', 'F', 'R']:
        msg_error = f'The sex "{sex}" is invalid. Enter a valid sex.'
        msg_error += f' Ex: "M" = Male, "F" = Feminine or "R" = Random.'

        raise ValueError(msg_error)

    if not (18 <= age <= 80) and age != 0:
        msg_error = f'The age "{age}" is invalid. Enter a valid age.'
        msg_error += f' The range is 18 to 80 age'

        raise ValueError(msg_error)

    raise_for_invalid_uf(uf=uf_code, include_blank=True)

    r = fordev_request(
        content_length=
        99,  # Max of bytes for generate people in all possibilities.
        referer='gerador_de_pessoas',
        payload={
            'acao': 'gerar_pessoa',
            'sexo': 'H' if sex == 'M' else 'M' if sex == 'F' else
            'I',  # H, M and I flags are used in 4devs for filter.
            'pontuacao': 'S' if formatting else 'N',
            'idade': age,
            'cep_estado': uf_code,
            'txt_qtde': n,

            # If the state is not selected, a default flag is used for the city ('Selecione o estado!') or
            # If the state is selected and city is not selected, a default flag is used for the city ('').
            'cep_cidade': 'Selecione o estado!' if uf_code == '' else ''
        })

    if data_only and r['msg'] == 'success':
        return json_loads(r['data'])

    if r['msg'] == 'success':

        # Convert data in str to dict.
        r['data'] = json_loads(r['data'])

        return r

    # In case of failure, return msg status and msg error.
    return r