Skip to main content

No project description provided

Project description

Zetha

zetha_icon

O que é?

Zetha é um pacote Python voltado a auxiliar desenvolvedores em manutenções de dados dos sistemas Betha. Este pacote usa o ORM do SQLAlchemy para permitir que dados sejam persistidos e manipulados de forma simples e intuitiva.

Requerimentos

Zetha foi programado com um database PostgreSQL em mente. Então acesso de administrado a um servidor PostgreSQL é necessário para seu uso.

Como usar?

Primeiro instale o pacote usando pip.

pip install zetha

Então você pode começar a utiliza-lo em scripts Python.

Exemplo de uso para inserir dados em database:

from request import get
from zetha import Tokens, Connect, folha as f

tokens = Tokens() # Usado para coletar tokens de API de variaveis de ambiente, mais detalhes em zetha.cloud_api
conn = Connect('MeuDatabase') # Efetua conexão com database 'MeuDatabase' em servidor, mais detalhes em zetha.connect
headers = {"Authorization": f"Bearer {tokens.ENTIDADE}"}

conn.persist_tables() # Cria tabelas em servidor

url_cargos = f.Cargo.url_api() # Obtem url de endpoint
schema_cargo = f.Cargo.__schema__() # Obtem schema para conversão de objeto para json e vice-versa

response = get(url_cargos, headers=headers)
response_json = response.json()

with conn.session as session: # Abre conexão com database
    # Abaixo Json é convertido em lista de objetos e inserido em database
    cargo_objs: list[f.Cargo] = schema_cargo.load(response_json['content'], many=True)
    session.add_all(cargo_objs)
    session.commit() # Salva insert / alteracões em database

Exemplo de uso para manipular dados em database:

from sqlalchemy import select
from zetha import Connect, folha as f

conn = Connect('MeuDatabase')

with conn.session as session:
    # Query de cargos de origem
    query = select(f.Cargo).where(f.Cargo.origem_id == None)

    for cargo in session.scalars(query): # Itera por resultados de query
        codigo_correto = cargo.codigo_e_social # Obtem dado de cargo de origem

        for historico in cargo.historicos: # Itera por historicos de cargo
            historico.codigo_e_social = codigo_correto # Altera valor de historico

    session.commit()

Exemplo de uso para subir dados para sistema:

from requests import post, get
from sqlalchemy import select
from zetha import Tokens, Connect, folha as f, migrator as m

tokens = Tokens()
conn = Connect('MeuDatabase')
headers = {"Authorization": f"Bearer {tokens.ENTIDADE}"}

url_cargos = f.Cargo.url_api().replace('cargo', 'historico-cargo')
# Schema abaixo tras apenas dados de id cloud e codigo esocial para json.
schema_cargo = f.Cargo.__schema__(only=('cloud_id', 'codigo_e_social'))

url_lotes = 'https://pessoal.betha.cloud/service-layer/v1/api/lotes/lotes/{id}'

with conn.session as session:
    # Query de historicos de cargos
    query = select(f.Cargo).where(f.Cargo.origem_id != None)
    historicos = session.scalars(query) # Obtem lista de historicos

    for historico in historicos:
        # Cria objeto de identificador para historicos
        m.Identifier.identify(historico)

    identifiers = [historico.identifier for historico in historicos] # Coleta identificadores
    lotes = m.Lote.make_lotes(identifiers) # Usa identificadores para criar novos lotes
    session.add_all(lotes)
    session.commit()

    for lote in lotes:
        lote_json = lote.json(schema_cargo) # Usa schema para converter lote em json

        response = post(url_cargo, headers=headers) # Envia lotes ao cloud
        response_json = response.json() # Coleta id de lote

        lote_json.api_id = response_json['id'] # Adiciona id cloud de lote ao objeto
        session.commit()

    # Itera por lotes apos envio ao cloud
    for lote in lotes:
        # Obtem lote e salva dados de resposta ao lote
        response = lote.get_lote(url_lotes, headers=headers)
        lote.read_response(response)
        lote.update() # Atualiza status de lote baseado em resposta de servidor
        session.commit()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zetha-0.0.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zetha-0.0.0-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file zetha-0.0.0.tar.gz.

File metadata

  • Download URL: zetha-0.0.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for zetha-0.0.0.tar.gz
Algorithm Hash digest
SHA256 c020005f3de6c1924818376377becea025dbced66399381c7c3fd5bfc8164fcb
MD5 3d84a22de8306bf5947b56a782aeb3e3
BLAKE2b-256 9f12340a41b973594ebc7919c7047be244afafc50f337ad33b38953f45667c88

See more details on using hashes here.

File details

Details for the file zetha-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: zetha-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for zetha-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97961874d31c568ed82186d28d05d1f4727b0d70c92546d2d6164d9b61030d8c
MD5 41afe4787c47d98496050540969d3907
BLAKE2b-256 b84e44ac6973cf556ebaf755152de0858519efe84d1e206e9a3e5abbad01c6d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page