No project description provided
Project description
Zetha
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c020005f3de6c1924818376377becea025dbced66399381c7c3fd5bfc8164fcb
|
|
| MD5 |
3d84a22de8306bf5947b56a782aeb3e3
|
|
| BLAKE2b-256 |
9f12340a41b973594ebc7919c7047be244afafc50f337ad33b38953f45667c88
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97961874d31c568ed82186d28d05d1f4727b0d70c92546d2d6164d9b61030d8c
|
|
| MD5 |
41afe4787c47d98496050540969d3907
|
|
| BLAKE2b-256 |
b84e44ac6973cf556ebaf755152de0858519efe84d1e206e9a3e5abbad01c6d0
|