Compare commits
37 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ce6843178 | ||
|
|
1e34ce9e9a | ||
| d2954b6691 | |||
| 70b7757b5a | |||
| ee4e4e77cd | |||
|
|
6ccf74e687 | ||
|
|
bd8f433846 | ||
|
|
007c0fb6a5 | ||
|
|
26f94c66ae | ||
|
|
a62ffde0de | ||
|
|
a6c88e5056 | ||
|
|
433d889060 | ||
|
|
2223db9d75 | ||
|
|
9b784f8d1a | ||
|
|
25d904b0bb | ||
|
|
c9c0741ecc | ||
|
|
910f08b0a6 | ||
|
|
8d444c968e | ||
|
|
ea1c830010 | ||
|
|
3b1654bf2c | ||
|
|
09948e158c | ||
|
|
5d5e8eb755 | ||
|
|
c7cfb05b4d | ||
|
|
9970c3700f | ||
|
|
e62cb2ab5c | ||
|
|
698aa5633f | ||
|
|
f539ac266c | ||
|
|
32f18d1f33 | ||
|
|
83f14cd442 | ||
|
|
b5505d1162 | ||
|
|
6bb4c10eb0 | ||
|
|
205a20b3ce | ||
|
|
6673e778af | ||
|
|
ffdda4f022 | ||
|
|
c315185cd5 | ||
|
|
8258ee97c3 | ||
|
|
98a2087136 |
120 changed files with 1667 additions and 377 deletions
14
Dockerfile
14
Dockerfile
|
|
@ -1,13 +1,9 @@
|
||||||
# Usa a imagem oficial do Python
|
|
||||||
FROM python:3.12-slim
|
FROM python:3.12-slim
|
||||||
|
|
||||||
# Define diretório de trabalho no container
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copia o arquivo de dependências
|
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
|
|
||||||
# Instala dependências no sistema e no Python
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
gcc libffi-dev libssl-dev python3-dev firebird-dev \
|
gcc libffi-dev libssl-dev python3-dev firebird-dev \
|
||||||
&& pip install --upgrade pip \
|
&& pip install --upgrade pip \
|
||||||
|
|
@ -16,11 +12,13 @@ RUN apt-get update && apt-get install -y \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Copia o restante do projeto para o container
|
# ===============================
|
||||||
|
# CRIA DIRETÓRIOS NECESSÁRIOS
|
||||||
|
# ===============================
|
||||||
|
RUN mkdir -p storage/temp
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Expõe a porta padrão do Uvicorn/FastAPI
|
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|
||||||
# Comando para iniciar o servidor
|
CMD ["gunicorn", "main:app", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000"]
|
||||||
CMD ["sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 8000"]
|
|
||||||
|
|
|
||||||
219
README.md
219
README.md
|
|
@ -1,12 +1,12 @@
|
||||||
# Configuração do Projeto Python
|
# Configuração do Projeto Python
|
||||||
|
|
||||||
Este guia descreve o passo a passo para configurar o ambiente de desenvolvimento de um projeto Python, incluindo a preparação do ambiente virtual, instalação de dependências e configuração do banco de dados.
|
Este guia descreve o passo a passo para configurar o ambiente de desenvolvimento e produção de um projeto Python, incluindo ambiente virtual, dependências, banco de dados, e ajuste de desempenho com múltiplos núcleos.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Clonar o Projeto
|
## 1. Clonar o Projeto
|
||||||
|
|
||||||
Primeiro, clone o repositório do projeto a partir do Git:
|
Clone o repositório do projeto a partir do Git:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git
|
git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git
|
||||||
|
|
@ -16,7 +16,7 @@ git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git
|
||||||
|
|
||||||
## 2. Criar o Ambiente Virtual
|
## 2. Criar o Ambiente Virtual
|
||||||
|
|
||||||
O uso de um **ambiente virtual** garante que as bibliotecas instaladas para este projeto não afetem o Python global da sua máquina.
|
Crie um **ambiente virtual** isolado para o projeto:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m venv venv
|
python -m venv venv
|
||||||
|
|
@ -26,14 +26,13 @@ python -m venv venv
|
||||||
|
|
||||||
## 3. Ativar o Ambiente Virtual
|
## 3. Ativar o Ambiente Virtual
|
||||||
|
|
||||||
Ative o ambiente virtual antes de instalar as dependências ou executar a aplicação.
|
Ative o ambiente virtual antes de instalar as dependências:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
venv\Scripts\activate
|
venv\Scripts\activate
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Observação:**
|
> **Em sistemas Linux/Mac:**
|
||||||
> Em sistemas Unix (Linux/Mac), o comando pode ser:
|
|
||||||
>
|
>
|
||||||
> ```bash
|
> ```bash
|
||||||
> source venv/bin/activate
|
> source venv/bin/activate
|
||||||
|
|
@ -43,9 +42,11 @@ venv\Scripts\activate
|
||||||
|
|
||||||
## 4. Instalar Dependências do Sistema
|
## 4. Instalar Dependências do Sistema
|
||||||
|
|
||||||
A biblioteca de criptografia utilizada no projeto requer uma extensão da Microsoft para ser instalada.
|
O projeto depende de compiladores nativos para algumas bibliotecas Python.
|
||||||
Baixe e instale o **Microsoft C++ Build Tools** através do link abaixo:
|
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Baixe e instale o **Microsoft C++ Build Tools**:
|
||||||
[https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/](https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/)
|
[https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/](https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/)
|
||||||
|
|
||||||
Durante a instalação, selecione o pacote:
|
Durante a instalação, selecione o pacote:
|
||||||
|
|
@ -54,6 +55,15 @@ Durante a instalação, selecione o pacote:
|
||||||
Desktop Development With C++
|
Desktop Development With C++
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
Execute no terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y build-essential libpq-dev
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Instalar as Bibliotecas do Projeto
|
## 5. Instalar as Bibliotecas do Projeto
|
||||||
|
|
@ -66,21 +76,21 @@ pip install -r requirements.txt
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Configurar o Banco de Dados
|
## 6. Configurar o Banco de Dados (Firebird)
|
||||||
|
|
||||||
O projeto utiliza um banco **Firebird**.
|
O projeto utiliza o banco **Firebird**.
|
||||||
Edite o arquivo de configuração localizado em:
|
Edite o arquivo de configuração em:
|
||||||
|
|
||||||
```
|
```
|
||||||
api/config/database/firebird.json
|
api/config/database/firebird.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Exemplo do conteúdo padrão:
|
Exemplo:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"name": "D:/Orius/Base/CAIAPONIA.FDB",
|
"name": "/data/base/CAIAPONIA.FDB",
|
||||||
"port": 3050,
|
"port": 3050,
|
||||||
"user": "SYSDBA",
|
"user": "SYSDBA",
|
||||||
"password": "",
|
"password": "",
|
||||||
|
|
@ -93,50 +103,179 @@ Exemplo do conteúdo padrão:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Ajustes Necessários:
|
**Campos principais:**
|
||||||
|
|
||||||
* **host**: Endereço do servidor do banco de dados.
|
| Campo | Descrição |
|
||||||
* **name**: Caminho completo do arquivo `.FDB`.
|
| ------------------- | ---------------------------------- |
|
||||||
* **port**: Porta do Firebird (padrão: `3050`).
|
| `host` | Endereço do servidor Firebird |
|
||||||
* **user**: Usuário do banco de dados.
|
| `name` | Caminho completo do arquivo `.FDB` |
|
||||||
* **password**: Senha do usuário configurado.
|
| `port` | Porta padrão `3050` |
|
||||||
|
| `user` | Usuário do banco |
|
||||||
|
| `password` | Senha do usuário |
|
||||||
|
| `charset` | Codificação (UTF8 recomendado) |
|
||||||
|
| `pool.size` | Número de conexões fixas |
|
||||||
|
| `pool.max_overflow` | Conexões extras sob demanda |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Iniciar a Aplicação
|
## 7. Modo Desenvolvimento
|
||||||
|
|
||||||
Com o ambiente virtual **ativado**, execute o comando abaixo para iniciar a aplicação:
|
Para ambiente local, execute:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
uvicorn main:app --reload
|
uvicorn main:app --reload
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dica:**
|
> O parâmetro `--reload` reinicia automaticamente a aplicação ao detectar alterações no código.
|
||||||
> O parâmetro `--reload` reinicia automaticamente a aplicação sempre que houver alterações no código.
|
|
||||||
|
|
||||||
---
|
Acesse:
|
||||||
|
|
||||||
## 8. Testando a Aplicação
|
```
|
||||||
|
|
||||||
Após iniciar a aplicação, abra o navegador e acesse o seguinte endereço:
|
|
||||||
|
|
||||||
```http
|
|
||||||
http://localhost:8000/docs
|
http://localhost:8000/docs
|
||||||
```
|
```
|
||||||
|
|
||||||
Você deverá visualizar a interface do **Swagger**, onde estarão listados todos os endpoints disponíveis da API.
|
---
|
||||||
|
|
||||||
> **Observação:**
|
## 8. Modo Produção
|
||||||
> O Swagger permite testar os endpoints diretamente pelo navegador, sem necessidade de ferramentas externas como Postman ou Insomnia.
|
|
||||||
|
A execução em produção varia conforme o sistema operacional.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Resumo dos Comandos
|
### **Windows (modo produção simulado)**
|
||||||
|
|
||||||
| Etapa | Comando |
|
O **Gunicorn** não é compatível com Windows, pois depende do módulo `fcntl` exclusivo de sistemas Unix.
|
||||||
| ----------------------- | ------------------------------------------------------------------------------- |
|
Portanto, em ambiente Windows, recomenda-se usar o **Uvicorn** diretamente com múltiplos *workers*:
|
||||||
| Clonar o projeto | `git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git` |
|
|
||||||
| Criar ambiente virtual | `python -m venv venv` |
|
```bash
|
||||||
| Ativar ambiente virtual | `venv\Scripts\activate` *(Windows)*<br>`source venv/bin/activate` *(Linux/Mac)* |
|
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
|
||||||
| Instalar dependências | `pip install -r requirements.txt` |
|
```
|
||||||
| Iniciar a aplicação | `uvicorn main:app --reload` |
|
|
||||||
|
> O parâmetro `--workers` define quantos processos simultâneos serão utilizados.
|
||||||
|
> Idealmente, use `(número_de_CPUs * 2) + 1`.
|
||||||
|
|
||||||
|
#### Alternativa compatível (Windows)
|
||||||
|
|
||||||
|
Instale e use o **Hypercorn**, uma alternativa semelhante ao Gunicorn:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install hypercorn
|
||||||
|
hypercorn main:app --workers 4 --bind 0.0.0.0:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **Linux (modo produção real)**
|
||||||
|
|
||||||
|
Em ambientes Linux (ou Docker), utilize o **Gunicorn** com o **Uvicorn Worker** para obter o máximo desempenho.
|
||||||
|
|
||||||
|
#### Instalar Gunicorn (caso ainda não instalado)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install gunicorn uvicorn
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Executar com múltiplos núcleos
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gunicorn main:app \
|
||||||
|
-k uvicorn.workers.UvicornWorker \
|
||||||
|
--workers 4 \
|
||||||
|
--bind 0.0.0.0:8000 \
|
||||||
|
--timeout 120 \
|
||||||
|
--log-level info
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Parâmetros principais
|
||||||
|
|
||||||
|
| Parâmetro | Função |
|
||||||
|
| ---------------------------------- | ---------------------------------------- |
|
||||||
|
| `-k uvicorn.workers.UvicornWorker` | Usa o Uvicorn como worker ASGI |
|
||||||
|
| `--workers 4` | Define o número de núcleos usados |
|
||||||
|
| `--bind 0.0.0.0:8000` | Expõe a aplicação em todas as interfaces |
|
||||||
|
| `--timeout 120` | Tempo limite de resposta (em segundos) |
|
||||||
|
| `--log-level info` | Define o nível de logs |
|
||||||
|
|
||||||
|
#### Dica de cálculo de workers
|
||||||
|
|
||||||
|
```
|
||||||
|
(número_de_CPUs * 2) + 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Exemplo: servidor com 2 CPUs → `--workers 5`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **Execução em segundo plano (Linux)**
|
||||||
|
|
||||||
|
Para rodar a aplicação continuamente:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nohup gunicorn main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000 &
|
||||||
|
```
|
||||||
|
|
||||||
|
Verifique se está rodando:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ps aux | grep gunicorn
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Logs e Monitoramento
|
||||||
|
|
||||||
|
É possível direcionar os logs de acesso e erro para arquivos dedicados:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gunicorn main:app \
|
||||||
|
-k uvicorn.workers.UvicornWorker \
|
||||||
|
--workers 4 \
|
||||||
|
--bind 0.0.0.0:8000 \
|
||||||
|
--access-logfile logs/access.log \
|
||||||
|
--error-logfile logs/error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Estrutura Recomendada de Deploy
|
||||||
|
|
||||||
|
```
|
||||||
|
/app
|
||||||
|
├── main.py
|
||||||
|
├── api/
|
||||||
|
├── packages/
|
||||||
|
├── requirements.txt
|
||||||
|
├── logs/
|
||||||
|
│ ├── access.log
|
||||||
|
│ └── error.log
|
||||||
|
└── systemd/
|
||||||
|
└── saas_api.service
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Resumo dos Comandos
|
||||||
|
|
||||||
|
| Etapa | Comando |
|
||||||
|
| --------------------------- | ------------------------------------------------------------------------------------ |
|
||||||
|
| Clonar projeto | `git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git` |
|
||||||
|
| Criar venv | `python -m venv venv` |
|
||||||
|
| Ativar venv | `venv\Scripts\activate` *(Windows)*<br>`source venv/bin/activate` *(Linux/Mac)* |
|
||||||
|
| Instalar dependências | `pip install -r requirements.txt` |
|
||||||
|
| Rodar em desenvolvimento | `uvicorn main:app --reload` |
|
||||||
|
| Rodar em produção (Windows) | `uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4` |
|
||||||
|
| Rodar em produção (Linux) | `gunicorn main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000` |
|
||||||
|
| Alternativa (Windows) | `hypercorn main:app --workers 4 --bind 0.0.0.0:8000` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Recomendações Finais
|
||||||
|
|
||||||
|
* Em **Windows**, use Uvicorn ou Hypercorn apenas para testes e ambientes locais.
|
||||||
|
* Para **produção real**, use **Linux** com Gunicorn + Uvicorn Worker, idealmente em container **Docker**.
|
||||||
|
* Monitore o consumo de CPU/RAM e ajuste o número de *workers* conforme o ambiente.
|
||||||
|
* Automatize o serviço em produção via **systemd** (ex: `/etc/systemd/system/saas_api.service`) para iniciar junto com o servidor.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
|
|
||||||
class BaseAction:
|
class BaseAction:
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ class Config:
|
||||||
base_dir = Path(__file__).resolve().parent
|
base_dir = Path(__file__).resolve().parent
|
||||||
|
|
||||||
# Caminho absoluto para o config.json (subindo dois níveis e entrando em config/)
|
# Caminho absoluto para o config.json (subindo dois níveis e entrando em config/)
|
||||||
config_path = base_dir.parent.parent / 'config' / name
|
config_path = base_dir.parent.parent / "config" / name
|
||||||
|
|
||||||
# Carrega o JSON como objeto acessível por ponto
|
# Carrega o JSON como objeto acessível por ponto
|
||||||
with open(config_path, 'r') as f:
|
with open(config_path, "r") as f:
|
||||||
config = json.load(f, object_hook=lambda d: SimpleNamespace(**d))
|
config = json.load(f, object_hook=lambda d: SimpleNamespace(**d))
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
|
||||||
31
actions/data/microtime.py
Normal file
31
actions/data/microtime.py
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
class Microtime:
|
||||||
|
"""
|
||||||
|
Utilitário para manipulação de tempo com alta precisão (microssegundos).
|
||||||
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get() -> float:
|
||||||
|
"""
|
||||||
|
Retorna o timestamp Unix atual com precisão de microssegundos.
|
||||||
|
Equivalente ao microtime(true) do PHP.
|
||||||
|
"""
|
||||||
|
return time.time()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def as_int() -> int:
|
||||||
|
"""
|
||||||
|
Retorna o tempo atual puramente em microssegundos (Inteiro).
|
||||||
|
Útil para gerar IDs únicos ou ordenação precisa.
|
||||||
|
"""
|
||||||
|
# Pega em nanosegundos e converte para microssegundos
|
||||||
|
return time.time_ns() // 1000
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def diff(start_time: float) -> float:
|
||||||
|
"""
|
||||||
|
Calcula a diferença (duração) em segundos com precisão.
|
||||||
|
"""
|
||||||
|
return time.time() - start_time
|
||||||
111
actions/data/text.py
Normal file
111
actions/data/text.py
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
# Importa a biblioteca nativa 'zlib' usada para compressão/descompressão de dados binários.
|
||||||
|
import zlib
|
||||||
|
|
||||||
|
# Importa a função 'rtf_to_text' da biblioteca 'striprtf',
|
||||||
|
# responsável por converter documentos RTF em texto plano legível.
|
||||||
|
from striprtf.striprtf import rtf_to_text
|
||||||
|
|
||||||
|
|
||||||
|
# Define uma classe utilitária chamada 'Text', contendo apenas métodos estáticos.
|
||||||
|
# Essa abordagem permite o uso direto sem necessidade de instanciar a classe.
|
||||||
|
class Text:
|
||||||
|
@staticmethod
|
||||||
|
def decompress(vf_string):
|
||||||
|
"""
|
||||||
|
Descomprime e decodifica texto de origem WPTools/Firebird.
|
||||||
|
|
||||||
|
Finalidade:
|
||||||
|
Converter o conteúdo de campos BLOB ou strings compactadas (como no Delphi)
|
||||||
|
em texto legível, detectando automaticamente se o conteúdo está:
|
||||||
|
- Compactado com zlib
|
||||||
|
- Codificado em ISO-8859-1 (padrão ANSI)
|
||||||
|
- Representado como bytes puros
|
||||||
|
"""
|
||||||
|
# Verifica se o valor recebido é nulo, vazio ou None.
|
||||||
|
if not vf_string:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
# Caso seja um objeto tipo stream (ex: campo BLOB do Firebird)
|
||||||
|
if hasattr(vf_string, "read"):
|
||||||
|
vf_string = vf_string.read()
|
||||||
|
|
||||||
|
# Garante que o valor trabalhado é uma sequência de bytes
|
||||||
|
if isinstance(vf_string, str):
|
||||||
|
vf_bytes = vf_string.encode("latin1", errors="ignore")
|
||||||
|
else:
|
||||||
|
vf_bytes = vf_string
|
||||||
|
|
||||||
|
# Detecta assinatura zlib (0x78 0x9C ou 0x78 0xDA)
|
||||||
|
is_zlib = (
|
||||||
|
len(vf_bytes) > 2 and vf_bytes[0] == 0x78 and vf_bytes[1] in (0x9C, 0xDA)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Se for zlib, tenta descompactar
|
||||||
|
if is_zlib:
|
||||||
|
try:
|
||||||
|
return zlib.decompress(vf_bytes).decode("iso-8859-1", errors="ignore")
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Caso não seja zlib, trata como texto puro
|
||||||
|
try:
|
||||||
|
return vf_bytes.decode("iso-8859-1", errors="ignore")
|
||||||
|
except Exception:
|
||||||
|
return str(vf_string)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def compress(text, *, encoding: str = "iso-8859-1"):
|
||||||
|
"""
|
||||||
|
Comprime texto/dados com zlib SEM Base64.
|
||||||
|
|
||||||
|
Parâmetros:
|
||||||
|
text: str | bytes | stream (com .read())
|
||||||
|
encoding: encoding usado quando 'text' for str (padrão: ISO-8859-1)
|
||||||
|
|
||||||
|
Retorno:
|
||||||
|
- bytes comprimidos (zlib)
|
||||||
|
|
||||||
|
Observações:
|
||||||
|
- Ideal para armazenamento direto em BLOB (Firebird, PostgreSQL, etc.)
|
||||||
|
- Evita overhead e custo do Base64
|
||||||
|
- Totalmente compatível com 'decompress'
|
||||||
|
"""
|
||||||
|
if text is None or text == "":
|
||||||
|
return b""
|
||||||
|
|
||||||
|
# Se for stream (ex.: BLOB do Firebird)
|
||||||
|
if hasattr(text, "read"):
|
||||||
|
raw = text.read()
|
||||||
|
else:
|
||||||
|
raw = text
|
||||||
|
|
||||||
|
# Garante bytes
|
||||||
|
if isinstance(raw, str):
|
||||||
|
raw_bytes = raw.encode(encoding, errors="ignore")
|
||||||
|
else:
|
||||||
|
raw_bytes = bytes(raw)
|
||||||
|
|
||||||
|
# Comprime com zlib e retorna bytes
|
||||||
|
return zlib.compress(raw_bytes)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def to_text(raw_text: str) -> str:
|
||||||
|
"""
|
||||||
|
Converte o conteúdo RTF em texto simples e retorna como string.
|
||||||
|
|
||||||
|
Finalidade:
|
||||||
|
- Detectar automaticamente se o conteúdo está em formato RTF.
|
||||||
|
- Converter para texto plano usando a função 'rtf_to_text'.
|
||||||
|
- Retornar uma string limpa e pronta para uso.
|
||||||
|
"""
|
||||||
|
if not raw_text:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
# Detecta cabeçalho RTF
|
||||||
|
if raw_text.strip().startswith("{\\rtf"):
|
||||||
|
try:
|
||||||
|
return rtf_to_text(raw_text).strip()
|
||||||
|
except Exception:
|
||||||
|
return raw_text
|
||||||
|
|
||||||
|
return raw_text.strip()
|
||||||
64
actions/dynamic_import/service_factory.py
Normal file
64
actions/dynamic_import/service_factory.py
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
import importlib
|
||||||
|
import re
|
||||||
|
from functools import lru_cache
|
||||||
|
from typing import Type, TypeVar, Optional
|
||||||
|
from actions.config.config import Config
|
||||||
|
from actions.env.env_config_loader import EnvConfigLoader
|
||||||
|
|
||||||
|
# Genérico para garantir que o retorno respeite o Protocolo
|
||||||
|
T = TypeVar("T")
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceFactory:
|
||||||
|
|
||||||
|
def __init__(self, package: str, table: str):
|
||||||
|
|
||||||
|
# Instancia o loader com o prefixo correto
|
||||||
|
env = EnvConfigLoader(".env")
|
||||||
|
|
||||||
|
# Ex: "packages.v1"
|
||||||
|
self.base_root = "packages.v1"
|
||||||
|
self.package = package
|
||||||
|
self.table = table
|
||||||
|
|
||||||
|
# Carrega config apenas uma vez
|
||||||
|
self.app_config = Config.get("app.json")
|
||||||
|
|
||||||
|
# Define a UF da aplicação
|
||||||
|
self.current_state = env.ORIUS_CLIENT_STATE
|
||||||
|
|
||||||
|
@lru_cache(maxsize=32)
|
||||||
|
def make(self, class_name: str, interface: Type[T]) -> T:
|
||||||
|
"""
|
||||||
|
Instancia um serviço dinamicamente com comportamento de Autoload.
|
||||||
|
"""
|
||||||
|
# 1. Converte CamelCase para snake_case (Autoload style)
|
||||||
|
# Ex: TAtoIndexService -> t_ato_index_service
|
||||||
|
module_name = re.sub(r"(?<!^)(?=[A-Z])", "_", class_name).lower()
|
||||||
|
|
||||||
|
# 2. Monta o caminho completo
|
||||||
|
# Ex: packages.v1.servicos.balcao.services.t_ato.SP.t_ato_index_service
|
||||||
|
import_path = (
|
||||||
|
f"{self.base_root}.{self.package}.services."
|
||||||
|
f"{self.table}.{self.current_state}.{module_name}"
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 3. Importação Dinâmica
|
||||||
|
module = importlib.import_module(import_path)
|
||||||
|
|
||||||
|
# 4. Pega a classe do módulo
|
||||||
|
clazz = getattr(module, class_name)
|
||||||
|
|
||||||
|
# 5. Retorna a INSTÂNCIA da classe (já com () )
|
||||||
|
# Se seus serviços precisam de argumentos no __init__, altere aqui.
|
||||||
|
return clazz()
|
||||||
|
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError(
|
||||||
|
f"FATAL: Não foi possível carregar o serviço '{class_name}' para o estado '{self.current_state}'.\nCaminho tentado: {import_path}\nErro: {e}"
|
||||||
|
)
|
||||||
|
except AttributeError:
|
||||||
|
raise AttributeError(
|
||||||
|
f"FATAL: O arquivo '{module_name}.py' existe, mas a classe '{class_name}' não foi encontrada dentro dele."
|
||||||
|
)
|
||||||
36
actions/env/env_config_loader.py
vendored
Normal file
36
actions/env/env_config_loader.py
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
from dotenv import dotenv_values, load_dotenv
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class EnvConfigLoader:
|
||||||
|
"""
|
||||||
|
Classe para carregar todas as variáveis de ambiente (.env)
|
||||||
|
e permitir acesso via atributo (settings.VAR).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, env_file: str = ".env"):
|
||||||
|
|
||||||
|
# Garante que o .env será carregado no ambiente do sistema
|
||||||
|
load_dotenv(env_file)
|
||||||
|
|
||||||
|
# Lê todas as variáveis (do arquivo + sistema)
|
||||||
|
self._values = {
|
||||||
|
**dotenv_values(env_file), # Conteúdo do .env
|
||||||
|
**os.environ, # Variáveis já existentes no ambiente
|
||||||
|
}
|
||||||
|
|
||||||
|
def __getattr__(self, name: str):
|
||||||
|
"""Permite acessar como settings.VAR"""
|
||||||
|
# Normaliza o nome para maiúsculo
|
||||||
|
key = name.upper()
|
||||||
|
if key in self._values:
|
||||||
|
return self._values[key]
|
||||||
|
raise AttributeError(f"A variável '{name}' não existe no .env")
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
"""Exibe todas as variáveis carregadas"""
|
||||||
|
return f"<Settings {self._values}>"
|
||||||
|
|
||||||
|
def all(self) -> dict:
|
||||||
|
"""Retorna todas as variáveis como dicionário"""
|
||||||
|
return dict(self._values)
|
||||||
|
|
@ -5,32 +5,30 @@ from pytz import timezone
|
||||||
from abstracts.action import BaseAction
|
from abstracts.action import BaseAction
|
||||||
from actions.config.config import Config
|
from actions.config.config import Config
|
||||||
|
|
||||||
|
|
||||||
class CreateToken(BaseAction):
|
class CreateToken(BaseAction):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
# Busca as configurações da aplicação
|
# Busca as configurações da aplicação
|
||||||
self.config = Config.get('app.json')
|
self.config = Config.get("app.json")
|
||||||
|
|
||||||
# Cria o timedelta com base na config
|
# Cria o timedelta com base na config
|
||||||
self.access_token_expire = timedelta(
|
self.access_token_expire = timedelta(
|
||||||
minutes=self.config.jwt.expire.minute,
|
minutes=self.config.jwt.expire.minute,
|
||||||
hours=self.config.jwt.expire.hours,
|
hours=self.config.jwt.expire.hours,
|
||||||
days=self.config.jwt.expire.days
|
days=self.config.jwt.expire.days,
|
||||||
)
|
)
|
||||||
|
|
||||||
def execute(self, tipo_token: str, data : str) -> str:
|
def execute(self, tipo_token: str, data: str) -> str:
|
||||||
|
|
||||||
sp = timezone('America/Sao_Paulo')
|
sp = timezone("America/Sao_Paulo")
|
||||||
agora = datetime.now(tz=sp)
|
agora = datetime.now(tz=sp)
|
||||||
expira = agora + self.access_token_expire
|
expira = agora + self.access_token_expire
|
||||||
|
|
||||||
# Define os dados do token
|
# Define os dados do token
|
||||||
payload = {
|
payload = {"type": tipo_token, "exp": expira, "iat": agora, "data": str(data)}
|
||||||
'type' : tipo_token,
|
|
||||||
'exp' : expira,
|
|
||||||
'iat' : agora,
|
|
||||||
'data' : str(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Retorna os dados codificados
|
# Retorna os dados codificados
|
||||||
return jwt.encode(payload, self.config.jwt.token, algorithm=self.config.jwt.algorithm)
|
return jwt.encode(
|
||||||
|
payload, self.config.jwt.token, algorithm=self.config.jwt.algorithm
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from fastapi import Depends, HTTPException, status, Request
|
from fastapi import Depends, HTTPException, status
|
||||||
from fastapi.security import OAuth2PasswordBearer
|
from fastapi.security import OAuth2PasswordBearer
|
||||||
|
|
||||||
from actions.jwt.verify_token import VerifyToken # A classe que criamos anteriormente
|
from actions.jwt.verify_token import VerifyToken # A classe que criamos anteriormente
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
from datetime import datetime
|
|
||||||
from jose import jwt, JWTError, ExpiredSignatureError
|
from jose import jwt, JWTError, ExpiredSignatureError
|
||||||
from pytz import timezone
|
|
||||||
|
|
||||||
from actions.config.config import Config
|
from actions.config.config import Config
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from typing import Any, Optional
|
from fastapi import Request, HTTPException, status
|
||||||
from fastapi import Depends, Request, HTTPException, status
|
|
||||||
|
|
||||||
|
|
||||||
def get_session_user(request: Request) -> dict:
|
def get_session_user(request: Request) -> dict:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
# handlers.py
|
# handlers.py
|
||||||
import json
|
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from fastapi import Request
|
from fastapi import Request
|
||||||
|
|
@ -13,74 +12,58 @@ from actions.log.log import Log
|
||||||
|
|
||||||
def register_exception_handlers(app):
|
def register_exception_handlers(app):
|
||||||
|
|
||||||
def __init__ (self):
|
def __init__(self):
|
||||||
log = Log()
|
log = Log()
|
||||||
|
|
||||||
@app.exception_handler(BusinessRuleException)
|
@app.exception_handler(BusinessRuleException)
|
||||||
async def business_rule_exception_handler(request: Request, exc: BusinessRuleException):
|
async def business_rule_exception_handler(
|
||||||
|
request: Request, exc: BusinessRuleException
|
||||||
|
):
|
||||||
|
|
||||||
|
response = {"status": "422", "error": "Regra de negócio", "detail": exc.message}
|
||||||
|
|
||||||
response = {
|
|
||||||
"status": "422",
|
|
||||||
"error": "Regra de negócio",
|
|
||||||
"detail": exc.message
|
|
||||||
}
|
|
||||||
|
|
||||||
# Salva o log em disco
|
# Salva o log em disco
|
||||||
Log.register(response, 'storage/temp/business_rule_exception_handler.json')
|
Log.register(response, "storage/temp/business_rule_exception_handler.json")
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(status_code=422, content=response)
|
||||||
status_code=422,
|
|
||||||
content=response
|
|
||||||
)
|
|
||||||
|
|
||||||
@app.exception_handler(StarletteHTTPException)
|
@app.exception_handler(StarletteHTTPException)
|
||||||
async def http_exception_handler(request: Request, exc: StarletteHTTPException):
|
async def http_exception_handler(request: Request, exc: StarletteHTTPException):
|
||||||
response = {
|
response = {
|
||||||
"status": exc.status_code,
|
"status": exc.status_code,
|
||||||
"error": "HTTP Error",
|
"error": "HTTP Error",
|
||||||
"detail": exc.detail
|
"detail": exc.detail,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Salva o log em disco
|
# Salva o log em disco
|
||||||
Log.register(response, 'storage/temp/http_exception_handler.json')
|
Log.register(response, "storage/temp/http_exception_handler.json")
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(status_code=exc.status_code, content=response)
|
||||||
status_code=exc.status_code,
|
|
||||||
content=response
|
|
||||||
)
|
|
||||||
|
|
||||||
@app.exception_handler(RequestValidationError)
|
@app.exception_handler(RequestValidationError)
|
||||||
async def validation_exception_handler(request: Request, exc: RequestValidationError):
|
async def validation_exception_handler(
|
||||||
|
request: Request, exc: RequestValidationError
|
||||||
|
):
|
||||||
|
|
||||||
response = {
|
response = {"status": 400, "error": "Erro de validação", "detail": exc.errors()}
|
||||||
"status": 400,
|
|
||||||
"error": "Erro de validação",
|
|
||||||
"detail": exc.errors()
|
|
||||||
}
|
|
||||||
|
|
||||||
# Salva o log em disco
|
# Salva o log em disco
|
||||||
Log.register(response, 'storage/temp/validation_exception_handler.json')
|
Log.register(response, "storage/temp/validation_exception_handler.json")
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(status_code=400, content=response)
|
||||||
status_code=400,
|
|
||||||
content=response
|
|
||||||
)
|
|
||||||
|
|
||||||
@app.exception_handler(Exception)
|
@app.exception_handler(Exception)
|
||||||
async def global_exception_handler(request: Request, exc: Exception):
|
async def global_exception_handler(request: Request, exc: Exception):
|
||||||
|
|
||||||
response = {
|
response = {
|
||||||
"status": 500,
|
"status": 500,
|
||||||
"error": "Erro Interno do Servidor",
|
"error": "Erro Interno do Servidor",
|
||||||
"type": type(exc).__name__,
|
"type": type(exc).__name__,
|
||||||
"message": str(exc),
|
"message": str(exc),
|
||||||
"trace": traceback.format_exc()
|
"trace": traceback.format_exc(),
|
||||||
}
|
}
|
||||||
|
|
||||||
# Salva o log em disco
|
# Salva o log em disco
|
||||||
Log.register(response, 'storage/temp/validation_exception_handler.json')
|
Log.register(response, "storage/temp/validation_exception_handler.json")
|
||||||
|
|
||||||
return JSONResponse(
|
return JSONResponse(status_code=500, content=response)
|
||||||
status_code=500,
|
|
||||||
content=response
|
|
||||||
)
|
|
||||||
|
|
|
||||||
13
config/database/firebird.json
Normal file
13
config/database/firebird.json
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"host": "localhost",
|
||||||
|
"name": "/database/BASE.FDB",
|
||||||
|
"port": 3050,
|
||||||
|
"user": "SYSDBA",
|
||||||
|
"password": "302b3c",
|
||||||
|
"charset": "UTF8",
|
||||||
|
"pool" : {
|
||||||
|
"pre_ping" : true,
|
||||||
|
"size" : 5,
|
||||||
|
"max_overflow" :10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.engine import Engine
|
from sqlalchemy.engine import Engine
|
||||||
|
from actions.env.env_config_loader import EnvConfigLoader
|
||||||
from actions.config.config import Config
|
|
||||||
|
|
||||||
|
|
||||||
class Firebird:
|
class Firebird:
|
||||||
|
|
@ -10,28 +9,29 @@ class Firebird:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_engine(cls) -> Engine:
|
def get_engine(cls) -> Engine:
|
||||||
# Obtem as configurações do arquivo JSON
|
|
||||||
database = Config.get('database/firebird.json')
|
# Instancia o loader com o prefixo correto
|
||||||
|
env_database = EnvConfigLoader(".env")
|
||||||
|
|
||||||
# Cria a engine apenas uma vez
|
# Cria a engine apenas uma vez
|
||||||
if cls._engine is None:
|
if cls._engine is None:
|
||||||
|
|
||||||
# DSN para o SQLAlchemy usando firebird-driver
|
# DSN para o SQLAlchemy usando firebird-driver
|
||||||
dsn = (
|
dsn = (
|
||||||
f"firebird+firebird://{database.user}:"
|
f"firebird+firebird://{env_database.ORIUS_API_FDB_USER}:"
|
||||||
f"{database.password}@"
|
f"{env_database.ORIUS_API_FDB_PASSWORD}@"
|
||||||
f"{database.host}:"
|
f"{env_database.ORIUS_API_FDB_HOST}:"
|
||||||
f"{database.port}/"
|
f"{env_database.ORIUS_API_FDB_PORT}/"
|
||||||
f"{database.name}"
|
f"{env_database.ORIUS_API_FDB_NAME}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Criação da engine SQLAlchemy
|
# Criação da engine SQLAlchemy
|
||||||
cls._engine = create_engine(
|
cls._engine = create_engine(
|
||||||
dsn,
|
dsn,
|
||||||
connect_args={"charset": database.charset},
|
connect_args={"charset": env_database.ORIUS_API_FDB_CHARSET},
|
||||||
pool_pre_ping=bool(database.pool.pre_ping),
|
pool_pre_ping=bool(env_database.ORIUS_API_FDB_POOL_PRE_PING),
|
||||||
pool_size=database.pool.size,
|
pool_size=int(env_database.ORIUS_API_FDB_POOL_SIZE),
|
||||||
max_overflow=database.pool.max_overflow,
|
max_overflow=int(env_database.ORIUS_API_FDB_POOL_MAX_OVERFLOW),
|
||||||
)
|
)
|
||||||
|
|
||||||
return cls._engine
|
return cls._engine
|
||||||
|
|
|
||||||
17
env.bat
Normal file
17
env.bat
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
@echo off
|
||||||
|
echo === Registrando variáveis de ambiente ORIUS_API ===
|
||||||
|
|
||||||
|
setx ORIUS_API_FDB_HOST "localhost"
|
||||||
|
setx ORIUS_API_FDB_NAME "S:\Bases\SANTARITA.FDB"
|
||||||
|
setx ORIUS_API_FDB_PORT "3050"
|
||||||
|
setx ORIUS_API_FDB_USER "SYSDBA"
|
||||||
|
setx ORIUS_API_FDB_PASSWORD "302b3c"
|
||||||
|
setx ORIUS_API_FDB_CHARSET "UTF8"
|
||||||
|
setx ORIUS_API_FDB_POOL_PRE_PING "true"
|
||||||
|
setx ORIUS_API_FDB_POOL_SIZE "5"
|
||||||
|
setx ORIUS_API_FDB_POOL_MAX_OVERFLOW "10"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Variáveis ORIUS_API registradas com sucesso!
|
||||||
|
echo Reinicie o terminal ou o computador para aplicar as alterações.
|
||||||
|
pause
|
||||||
10
interfaces/service_protocols.py
Normal file
10
interfaces/service_protocols.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
from typing import Protocol, Any, runtime_checkable
|
||||||
|
|
||||||
|
|
||||||
|
@runtime_checkable
|
||||||
|
class ServiceProtocolsInterface(Protocol):
|
||||||
|
"""
|
||||||
|
Contrato que garante que todo serviço tenha um método execute.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, schema: Any) -> Any: ...
|
||||||
13
main.py
13
main.py
|
|
@ -16,8 +16,7 @@ from pathlib import Path
|
||||||
|
|
||||||
# Importa o middleware de CORS
|
# Importa o middleware de CORS
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import Response
|
from fastapi.staticfiles import StaticFiles
|
||||||
from starlette.middleware.base import BaseHTTPMiddleware
|
|
||||||
|
|
||||||
# Importa o roteador principal da API versão 1
|
# Importa o roteador principal da API versão 1
|
||||||
from packages.v1.api import api_router
|
from packages.v1.api import api_router
|
||||||
|
|
@ -34,9 +33,9 @@ if platform.system() == "Windows":
|
||||||
FB_DIR = r"C:\Program Files\Firebird\Firebird_4_0"
|
FB_DIR = r"C:\Program Files\Firebird\Firebird_4_0"
|
||||||
os.add_dll_directory(FB_DIR)
|
os.add_dll_directory(FB_DIR)
|
||||||
|
|
||||||
driver_config.fb_client_library.value = (
|
driver_config.fb_client_library.value = (
|
||||||
r"C:\Program Files\Firebird\Firebird_4_0\fbclient.dll"
|
r"C:\Program Files\Firebird\Firebird_4_0\fbclient.dll"
|
||||||
)
|
)
|
||||||
|
|
||||||
config = Config.get("app.json")
|
config = Config.get("app.json")
|
||||||
|
|
||||||
|
|
@ -49,7 +48,7 @@ register_exception_handlers(app)
|
||||||
# Adiciona o middleware de CORS
|
# Adiciona o middleware de CORS
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["http://localhost:3000"], # Domínio do frontend
|
allow_origins=["*"], # Domínio do frontend
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
@ -64,6 +63,8 @@ app.add_middleware(
|
||||||
max_age=60 * 60 * 8,
|
max_age=60 * 60 * 8,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
app.mount(path="/temp", app=StaticFiles(directory="./storage/temp"), name="temp")
|
||||||
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
async def on_startup():
|
async def on_startup():
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
from packages.v1.administrativo.repositories.c_caixa_item.c_caixa_item_index import \
|
from packages.v1.administrativo.repositories.c_caixa_item.c_caixa_item_index import \
|
||||||
Index
|
Index
|
||||||
from packages.v1.administrativo.schemas.c_caixa_item_schema import \
|
|
||||||
CaixaItemSearchSchema
|
|
||||||
from abstracts.action import BaseAction
|
from abstracts.action import BaseAction
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.c_caixa_servico_schema import (
|
from packages.v1.administrativo.schemas.c_caixa_servico_schema import (
|
||||||
CCaixaServicoSchema,
|
|
||||||
CCaixaServicoSaveSchema,
|
CCaixaServicoSaveSchema,
|
||||||
CCaixaServicoUpdateSchema,
|
CCaixaServicoUpdateSchema,
|
||||||
CCaixaServicoIdSchema,
|
CCaixaServicoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_cidade_schema import (
|
from packages.v1.administrativo.schemas.g_cidade_schema import (
|
||||||
GCidadeSchema,
|
|
||||||
GCidadeSaveSchema,
|
GCidadeSaveSchema,
|
||||||
GCidadeUpdateSchema,
|
GCidadeUpdateSchema,
|
||||||
GCidadeIdSchema,
|
GCidadeIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_emolumento_schema import (
|
from packages.v1.administrativo.schemas.g_emolumento_schema import (
|
||||||
GEmolumentoIndexSchema,
|
|
||||||
GEmolumentoSaveSchema,
|
GEmolumentoSaveSchema,
|
||||||
GEmolumentoSistemaIdSchema,
|
GEmolumentoSistemaIdSchema,
|
||||||
GEmolumentoUpdateSchema,
|
GEmolumentoUpdateSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
||||||
GMarcacaoTipoSchema,
|
|
||||||
GMarcacaoTipoSaveSchema,
|
GMarcacaoTipoSaveSchema,
|
||||||
GMarcacaoTipoUpdateSchema,
|
GMarcacaoTipoUpdateSchema,
|
||||||
GMarcacaoTipoIdSchema,
|
GMarcacaoTipoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_medida_tipo_schema import (
|
from packages.v1.administrativo.schemas.g_medida_tipo_schema import (
|
||||||
GMedidaTipoSchema,
|
|
||||||
GMedidaTipoSaveSchema,
|
GMedidaTipoSaveSchema,
|
||||||
GMedidaTipoUpdateSchema,
|
GMedidaTipoUpdateSchema,
|
||||||
GMedidaTipoIdSchema,
|
GMedidaTipoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_bairro_schema import (
|
from packages.v1.administrativo.schemas.g_tb_bairro_schema import (
|
||||||
GTbBairroSchema,
|
|
||||||
GTbBairroSaveSchema,
|
GTbBairroSaveSchema,
|
||||||
GTbBairroUpdateSchema,
|
GTbBairroUpdateSchema,
|
||||||
GTbBairroIdSchema,
|
GTbBairroIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_documentotipo_schema import (
|
from packages.v1.administrativo.schemas.g_tb_documentotipo_schema import (
|
||||||
GTbDocumentoTipoSchema,
|
|
||||||
GTbDocumentoTipoSaveSchema,
|
GTbDocumentoTipoSaveSchema,
|
||||||
GTbDocumentoTipoUpdateSchema,
|
GTbDocumentoTipoUpdateSchema,
|
||||||
GTbDocumentoTipoIdSchema,
|
GTbDocumentoTipoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import (
|
from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import (
|
||||||
GTbEstadoCivilSchema,
|
|
||||||
GTbEstadoCivilSaveSchema,
|
GTbEstadoCivilSaveSchema,
|
||||||
GTbEstadoCivilUpdateSchema,
|
GTbEstadoCivilUpdateSchema,
|
||||||
GTbEstadoCivilIdSchema,
|
GTbEstadoCivilIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
|
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
|
||||||
GTbProfissaoSchema,
|
|
||||||
GTbProfissaoSaveSchema,
|
GTbProfissaoSaveSchema,
|
||||||
GTbProfissaoUpdateSchema,
|
GTbProfissaoUpdateSchema,
|
||||||
GTbProfissaoIdSchema,
|
GTbProfissaoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
|
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
|
||||||
GTbRegimebensSchema,
|
|
||||||
GTbRegimebensSaveSchema,
|
GTbRegimebensSaveSchema,
|
||||||
GTbRegimebensUpdateSchema,
|
GTbRegimebensUpdateSchema,
|
||||||
GTbRegimebensIdSchema,
|
GTbRegimebensIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
|
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
|
||||||
GTbRegimecomunhaoSchema,
|
|
||||||
GTbRegimecomunhaoSaveSchema,
|
GTbRegimecomunhaoSaveSchema,
|
||||||
GTbRegimecomunhaoUpdateSchema,
|
GTbRegimecomunhaoUpdateSchema,
|
||||||
GTbRegimecomunhaoIdSchema,
|
GTbRegimecomunhaoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import (
|
from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import (
|
||||||
GTbTipoLogradouroSchema,
|
|
||||||
GTbTipoLogradouroSaveSchema,
|
GTbTipoLogradouroSaveSchema,
|
||||||
GTbTipoLogradouroUpdateSchema,
|
GTbTipoLogradouroUpdateSchema,
|
||||||
GTbTipoLogradouroIdSchema,
|
GTbTipoLogradouroIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
|
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
|
||||||
GTbTxmodelogrupoSchema,
|
|
||||||
GTbTxmodelogrupoSaveSchema,
|
GTbTxmodelogrupoSaveSchema,
|
||||||
GTbTxmodelogrupoUpdateSchema,
|
GTbTxmodelogrupoUpdateSchema,
|
||||||
GTbTxmodelogrupoIdSchema,
|
GTbTxmodelogrupoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.g_uf_schema import (
|
|
||||||
GUfSchema
|
|
||||||
)
|
|
||||||
|
|
||||||
class GUfController:
|
class GUfController:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_ato_partetipo_schema import (
|
from packages.v1.administrativo.schemas.t_ato_partetipo_schema import (
|
||||||
TAtoParteTipoIndexSchema,
|
|
||||||
TAtoParteTipoSaveSchema,
|
TAtoParteTipoSaveSchema,
|
||||||
TAtoParteTipoUpdateSchema,
|
TAtoParteTipoUpdateSchema,
|
||||||
TAtoParteTipoIdSchema
|
TAtoParteTipoIdSchema
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_censec_schema import (
|
from packages.v1.administrativo.schemas.t_censec_schema import (
|
||||||
TCensecSchema,
|
|
||||||
TCensecSaveSchema,
|
TCensecSaveSchema,
|
||||||
TCensecUpdateSchema,
|
TCensecUpdateSchema,
|
||||||
TCensecIdSchema,
|
TCensecIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import (
|
from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import (
|
||||||
TCensecNaturezalitigioSchema,
|
|
||||||
TCensecNaturezalitigioSaveSchema,
|
TCensecNaturezalitigioSaveSchema,
|
||||||
TCensecNaturezalitigioUpdateSchema,
|
TCensecNaturezalitigioUpdateSchema,
|
||||||
TCensecNaturezalitigioIdSchema,
|
TCensecNaturezalitigioIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_censec_qualidade_schema import (
|
from packages.v1.administrativo.schemas.t_censec_qualidade_schema import (
|
||||||
TCensecQualidadeSchema,
|
|
||||||
TCensecQualidadeSaveSchema,
|
TCensecQualidadeSaveSchema,
|
||||||
TCensecQualidadeUpdateSchema,
|
TCensecQualidadeUpdateSchema,
|
||||||
TCensecQualidadeIdSchema,
|
TCensecQualidadeIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_minuta_schema import (
|
from packages.v1.administrativo.schemas.t_minuta_schema import (
|
||||||
TMinutaSchema,
|
|
||||||
TMinutaSaveSchema,
|
TMinutaSaveSchema,
|
||||||
TMinutaUpdateSchema,
|
TMinutaUpdateSchema,
|
||||||
TMinutaIdSchema,
|
TMinutaIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import (
|
from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import (
|
||||||
TServicoEtiquetaSchema,
|
|
||||||
TServicoEtiquetaSaveSchema,
|
TServicoEtiquetaSaveSchema,
|
||||||
TServicoEtiquetaUpdateSchema,
|
TServicoEtiquetaUpdateSchema,
|
||||||
TServicoEtiquetaIdSchema,
|
TServicoEtiquetaIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_tb_andamentoservico_schema import (
|
from packages.v1.administrativo.schemas.t_tb_andamentoservico_schema import (
|
||||||
TTbAndamentoservicoSchema,
|
|
||||||
TTbAndamentoservicoSaveSchema,
|
TTbAndamentoservicoSaveSchema,
|
||||||
TTbAndamentoservicoUpdateSchema,
|
TTbAndamentoservicoUpdateSchema,
|
||||||
TTbAndamentoservicoIdSchema,
|
TTbAndamentoservicoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.administrativo.schemas.t_tb_reconhecimentotipo_schema import (
|
from packages.v1.administrativo.schemas.t_tb_reconhecimentotipo_schema import (
|
||||||
TTbReconhecimentotipoSchema,
|
|
||||||
TTbReconhecimentotipoSaveSchema,
|
TTbReconhecimentotipoSaveSchema,
|
||||||
TTbReconhecimentotipoUpdateSchema,
|
TTbReconhecimentotipoUpdateSchema,
|
||||||
TTbReconhecimentotipoIdSchema,
|
TTbReconhecimentotipoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.c_caixa_item_controller import CCaixaItemController
|
from packages.v1.administrativo.controllers.c_caixa_item_controller import CCaixaItemController
|
||||||
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSchema, CaixaItemSearchSchema
|
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSchema
|
||||||
|
|
||||||
# Inicializar o roteaodr para as rotas de produtos
|
# Inicializar o roteaodr para as rotas de produtos
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.c_caixa_servico_controller import CCaixaServicoController
|
from packages.v1.administrativo.controllers.c_caixa_servico_controller import CCaixaServicoController
|
||||||
from packages.v1.administrativo.schemas.c_caixa_servico_schema import (
|
from packages.v1.administrativo.schemas.c_caixa_servico_schema import (
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ from packages.v1.administrativo.controllers.g_calculo_controller import (
|
||||||
from packages.v1.administrativo.schemas.g_calculo_schema import (
|
from packages.v1.administrativo.schemas.g_calculo_schema import (
|
||||||
GCalculoRapidoSchema,
|
GCalculoRapidoSchema,
|
||||||
GCalculoServico,
|
GCalculoServico,
|
||||||
ResponseGCalculoRapidoSchema,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_cidade_controller import GCidadeController
|
from packages.v1.administrativo.controllers.g_cidade_controller import GCidadeController
|
||||||
from packages.v1.administrativo.schemas.g_cidade_schema import (
|
from packages.v1.administrativo.schemas.g_cidade_schema import (
|
||||||
GCidadeSchema,
|
|
||||||
GCidadeSaveSchema,
|
GCidadeSaveSchema,
|
||||||
GCidadeUpdateSchema,
|
GCidadeUpdateSchema,
|
||||||
GCidadeIdSchema,
|
GCidadeIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ from packages.v1.administrativo.controllers.g_emolumento_controller import (
|
||||||
GEmolumentoController,
|
GEmolumentoController,
|
||||||
)
|
)
|
||||||
from packages.v1.administrativo.schemas.g_emolumento_schema import (
|
from packages.v1.administrativo.schemas.g_emolumento_schema import (
|
||||||
GEmolumentoIndexSchema,
|
|
||||||
GEmolumentoSaveSchema,
|
GEmolumentoSaveSchema,
|
||||||
GEmolumentoSistemaIdSchema,
|
GEmolumentoSistemaIdSchema,
|
||||||
GEmolumentoUpdateSchema,
|
GEmolumentoUpdateSchema,
|
||||||
|
|
@ -36,9 +35,6 @@ async def index(
|
||||||
current_user: dict = Depends(get_current_user),
|
current_user: dict = Depends(get_current_user),
|
||||||
url_params=Depends(get_url_params),
|
url_params=Depends(get_url_params),
|
||||||
):
|
):
|
||||||
|
|
||||||
print(url_params)
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Retorna todos os registros da tabela G_EMOLUMENTO.
|
Retorna todos os registros da tabela G_EMOLUMENTO.
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_marcacao_tipo_controller import GMarcacaoTipoController
|
from packages.v1.administrativo.controllers.g_marcacao_tipo_controller import GMarcacaoTipoController
|
||||||
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
from packages.v1.administrativo.schemas.g_marcacao_tipo_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_medida_tipo_controller import GMedidaTipoController
|
from packages.v1.administrativo.controllers.g_medida_tipo_controller import GMedidaTipoController
|
||||||
from packages.v1.administrativo.schemas.g_medida_tipo_schema import (
|
from packages.v1.administrativo.schemas.g_medida_tipo_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_natureza_controller import GNaturezaController
|
from packages.v1.administrativo.controllers.g_natureza_controller import GNaturezaController
|
||||||
from packages.v1.administrativo.schemas.g_natureza_schema import (
|
from packages.v1.administrativo.schemas.g_natureza_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_bairro_controller import GTbBairroController
|
from packages.v1.administrativo.controllers.g_tb_bairro_controller import GTbBairroController
|
||||||
from packages.v1.administrativo.schemas.g_tb_bairro_schema import (
|
from packages.v1.administrativo.schemas.g_tb_bairro_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_documentotipo_controller import GTbDocumentoTipoController
|
from packages.v1.administrativo.controllers.g_tb_documentotipo_controller import GTbDocumentoTipoController
|
||||||
from packages.v1.administrativo.schemas.g_tb_documentotipo_schema import (
|
from packages.v1.administrativo.schemas.g_tb_documentotipo_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_estadocivil_controller import GTbEstadoCivilController
|
from packages.v1.administrativo.controllers.g_tb_estadocivil_controller import GTbEstadoCivilController
|
||||||
from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import (
|
from packages.v1.administrativo.schemas.g_tb_estadocivil_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_profissao_controller import GTbProfissaoController
|
from packages.v1.administrativo.controllers.g_tb_profissao_controller import GTbProfissaoController
|
||||||
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
|
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
|
||||||
GTbProfissaoSchema,
|
|
||||||
GTbProfissaoSaveSchema,
|
GTbProfissaoSaveSchema,
|
||||||
GTbProfissaoUpdateSchema,
|
GTbProfissaoUpdateSchema,
|
||||||
GTbProfissaoIdSchema,
|
GTbProfissaoIdSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_regimebens_controller import GTbRegimebensController
|
from packages.v1.administrativo.controllers.g_tb_regimebens_controller import GTbRegimebensController
|
||||||
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
|
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_regimecomunhao_controller import GTbRegimecomunhaoController
|
from packages.v1.administrativo.controllers.g_tb_regimecomunhao_controller import GTbRegimecomunhaoController
|
||||||
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
|
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
|
||||||
GTbRegimecomunhaoSchema,
|
|
||||||
GTbRegimecomunhaoSaveSchema,
|
GTbRegimecomunhaoSaveSchema,
|
||||||
GTbRegimecomunhaoUpdateSchema,
|
GTbRegimecomunhaoUpdateSchema,
|
||||||
GTbRegimecomunhaoDescricaoSchema,
|
GTbRegimecomunhaoDescricaoSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_tb_tipologradouro_controller import GTbTipologradouroController
|
from packages.v1.administrativo.controllers.g_tb_tipologradouro_controller import GTbTipologradouroController
|
||||||
from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import (
|
from packages.v1.administrativo.schemas.g_tb_tipologradouro_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
|
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
|
||||||
GTbTxmodelogrupoSchema,
|
|
||||||
GTbTxmodelogrupoSaveSchema,
|
GTbTxmodelogrupoSaveSchema,
|
||||||
GTbTxmodelogrupoUpdateSchema,
|
GTbTxmodelogrupoUpdateSchema,
|
||||||
GTbTxmodelogrupoDescricaoSchema,
|
GTbTxmodelogrupoDescricaoSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.g_uf_controller import GUfController
|
from packages.v1.administrativo.controllers.g_uf_controller import GUfController
|
||||||
from packages.v1.administrativo.schemas.g_uf_schema import GUfSchema
|
|
||||||
|
|
||||||
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_censec_controller import TCensecController
|
from packages.v1.administrativo.controllers.t_censec_controller import TCensecController
|
||||||
from packages.v1.administrativo.schemas.t_censec_schema import (
|
from packages.v1.administrativo.schemas.t_censec_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_censec_naturezalitigio_controller import TCensecNaturezalitigioController
|
from packages.v1.administrativo.controllers.t_censec_naturezalitigio_controller import TCensecNaturezalitigioController
|
||||||
from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import (
|
from packages.v1.administrativo.schemas.t_censec_naturezalitigio_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,12 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_censec_qualidade_controller import TCensecQualidadeController
|
from packages.v1.administrativo.controllers.t_censec_qualidade_controller import TCensecQualidadeController
|
||||||
from packages.v1.administrativo.schemas.t_censec_qualidade_schema import (
|
from packages.v1.administrativo.schemas.t_censec_qualidade_schema import (
|
||||||
TCensecQualidadeSchema,
|
TCensecQualidadeSchema,
|
||||||
TCensecQualidadeSaveSchema,
|
TCensecQualidadeSaveSchema,
|
||||||
TCensecQualidadeUpdateSchema,
|
TCensecQualidadeUpdateSchema,
|
||||||
TCensecQualidadeIdSchema,
|
TCensecQualidadeIdSchema
|
||||||
TCensecQualidadeDescricaoSchema
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ from fastapi import APIRouter, Depends, status
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_censec_tipoato_controller import TCensecTipoAtoController
|
from packages.v1.administrativo.controllers.t_censec_tipoato_controller import TCensecTipoAtoController
|
||||||
from packages.v1.administrativo.schemas.t_censec_tipoato_schema import (
|
from packages.v1.administrativo.schemas.t_censec_tipoato_schema import (
|
||||||
TCensecTipoAtoIndexSchema,
|
|
||||||
TCensecTipoAtoSaveSchema,
|
TCensecTipoAtoSaveSchema,
|
||||||
TCensecTipoAtoUpdateSchema,
|
TCensecTipoAtoUpdateSchema,
|
||||||
TCensecTipoAtoIdSchema
|
TCensecTipoAtoIdSchema
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
|
||||||
from fastapi import APIRouter, Depends, status
|
from fastapi import APIRouter, Depends, status
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_imovel_controller import TImovelController
|
from packages.v1.administrativo.controllers.t_imovel_controller import TImovelController
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
|
||||||
from fastapi import APIRouter, Depends, status
|
from fastapi import APIRouter, Depends, status
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_imovel_unidade_controller import TImovelUnidadeController
|
from packages.v1.administrativo.controllers.t_imovel_unidade_controller import TImovelUnidadeController
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_minuta_controller import TMinutaController
|
from packages.v1.administrativo.controllers.t_minuta_controller import TMinutaController
|
||||||
from packages.v1.administrativo.schemas.t_minuta_schema import (
|
from packages.v1.administrativo.schemas.t_minuta_schema import (
|
||||||
TMinutaSchema,
|
|
||||||
TMinutaSaveSchema,
|
TMinutaSaveSchema,
|
||||||
TMinutaUpdateSchema,
|
TMinutaUpdateSchema,
|
||||||
TMinutaIdSchema,
|
TMinutaIdSchema
|
||||||
TMinutaDescricaoSchema
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_servico_etiqueta_controller import TServicoEtiquetaController
|
from packages.v1.administrativo.controllers.t_servico_etiqueta_controller import TServicoEtiquetaController
|
||||||
from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import (
|
from packages.v1.administrativo.schemas.t_servico_etiqueta_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_tb_andamentoservico_controller import TTbAndamentoservicoController
|
from packages.v1.administrativo.controllers.t_tb_andamentoservico_controller import TTbAndamentoservicoController
|
||||||
from packages.v1.administrativo.schemas.t_tb_andamentoservico_schema import (
|
from packages.v1.administrativo.schemas.t_tb_andamentoservico_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from typing import Optional
|
from fastapi import APIRouter, Depends, status
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.administrativo.controllers.t_tb_reconhecimentotipo_controller import TTbReconhecimentotipoController
|
from packages.v1.administrativo.controllers.t_tb_reconhecimentotipo_controller import TTbReconhecimentotipoController
|
||||||
from packages.v1.administrativo.schemas.t_tb_reconhecimentotipo_schema import (
|
from packages.v1.administrativo.schemas.t_tb_reconhecimentotipo_schema import (
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSearchSchema
|
|
||||||
from abstracts.repository import BaseRepository
|
from abstracts.repository import BaseRepository
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
from typing import List
|
|
||||||
from abstracts.repository import BaseRepository
|
from abstracts.repository import BaseRepository
|
||||||
from packages.v1.administrativo.schemas.t_biometria_pessoa_schema import (
|
from packages.v1.administrativo.schemas.t_biometria_pessoa_schema import (
|
||||||
TBiometriaPessoaIndexSchema,
|
TBiometriaPessoaIndexSchema,
|
||||||
TBiometriaPessoaResponseSchema,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,6 @@ class TImovelIndexRepository(BaseRepository):
|
||||||
|
|
||||||
params = {"tipoClasse": t_imovel_index_schema.tipo_classe}
|
params = {"tipoClasse": t_imovel_index_schema.tipo_classe}
|
||||||
|
|
||||||
print(params)
|
|
||||||
|
|
||||||
# Execução do sql
|
# Execução do sql
|
||||||
response = self.fetch_all(sql, params)
|
response = self.fetch_all(sql, params)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from abstracts.repository import BaseRepository
|
from abstracts.repository import BaseRepository
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from packages.v1.administrativo.schemas.t_pessoa_representante_schema import (
|
from packages.v1.administrativo.schemas.t_pessoa_representante_schema import (
|
||||||
TPessoaRepresentanteUpdateSchema,
|
TPessoaRepresentanteUpdateSchema,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from datetime import date, datetime
|
from datetime import date
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from typing import Optional, ClassVar, Dict
|
from typing import Optional, ClassVar, Dict
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
# Assumindo que a classe Text está disponível no caminho 'actions.validations.text'
|
# Assumindo que a classe Text está disponível no caminho 'actions.validations.text'
|
||||||
from actions.validations.text import Text
|
from actions.validations.text import Text
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
||||||
from actions.validations.text import Text
|
from actions.validations.text import Text
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel
|
||||||
from fastapi import HTTPException, status
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
||||||
from actions.validations.text import Text
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Schema base
|
# Schema base
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from pydantic import BaseModel, EmailStr, constr, field_validator, model_validator
|
from pydantic import BaseModel, EmailStr, field_validator, model_validator
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from typing import Optional, List
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel
|
||||||
from fastapi import HTTPException, status
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
# Função de sanitização
|
# Função de sanitização
|
||||||
from actions.validations.text import Text
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Schema base para TImovelUnidade
|
# Schema base para TImovelUnidade
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
from pydantic import BaseModel, field_validator, model_validator
|
from pydantic import BaseModel, model_validator
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from decimal import Decimal
|
|
||||||
|
|
||||||
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
|
||||||
# Assumindo que a classe Text está disponível no caminho 'actions.validations.text'
|
# Assumindo que a classe Text está disponível no caminho 'actions.validations.text'
|
||||||
from actions.validations.text import Text
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Schema base
|
# Schema base
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from packages.v1.administrativo.actions.c_caixa_item.c_caixa_item_index_action import IndexAction
|
from packages.v1.administrativo.actions.c_caixa_item.c_caixa_item_index_action import IndexAction
|
||||||
from packages.v1.administrativo.schemas.c_caixa_item_schema import CaixaItemSearchSchema
|
|
||||||
|
|
||||||
|
|
||||||
class IndexService:
|
class IndexService:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
from fastapi import HTTPException, status
|
|
||||||
|
|
||||||
from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSistemaIdSchema
|
from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSistemaIdSchema
|
||||||
from packages.v1.administrativo.actions.c_caixa_servico.c_caixa_servico_get_by_sistema_id_action import ShowSistemaIdAction
|
from packages.v1.administrativo.actions.c_caixa_servico.c_caixa_servico_get_by_sistema_id_action import ShowSistemaIdAction
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from packages.v1.administrativo.schemas.c_caixa_servico_schema import CCaixaServicoSchema
|
|
||||||
from packages.v1.administrativo.actions.c_caixa_servico.c_caixa_servico_index_action import IndexAction
|
from packages.v1.administrativo.actions.c_caixa_servico.c_caixa_servico_index_action import IndexAction
|
||||||
|
|
||||||
class IndexService:
|
class IndexService:
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,6 @@ class GCalculoServicoService:
|
||||||
|
|
||||||
def execute(self, data: GCalculoServico):
|
def execute(self, data: GCalculoServico):
|
||||||
|
|
||||||
print(data)
|
|
||||||
|
|
||||||
# Busca os parâmetros da aplicação
|
# Busca os parâmetros da aplicação
|
||||||
periodo_id = float(
|
periodo_id = float(
|
||||||
self._config_service.execute(
|
self._config_service.execute(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoSchema
|
|
||||||
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_index_action import IndexAction
|
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_index_action import IndexAction
|
||||||
|
|
||||||
class IndexService:
|
class IndexService:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoSchema
|
|
||||||
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_index_action import IndexAction
|
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_index_action import IndexAction
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ from fastapi import HTTPException, status
|
||||||
from packages.v1.administrativo.controllers.g_usuario_controller import (
|
from packages.v1.administrativo.controllers.g_usuario_controller import (
|
||||||
GUsuarioIndexSchema,
|
GUsuarioIndexSchema,
|
||||||
)
|
)
|
||||||
from packages.v1.administrativo.schemas.g_usuario_schema import GUsuarioSchema
|
|
||||||
from packages.v1.administrativo.actions.g_usuario.g_usuario_index_action import (
|
from packages.v1.administrativo.actions.g_usuario.g_usuario_index_action import (
|
||||||
IndexAction,
|
IndexAction,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,9 @@ from packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_save_a
|
||||||
)
|
)
|
||||||
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import (
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import (
|
||||||
TImovelUnidadeSaveSchema,
|
TImovelUnidadeSaveSchema,
|
||||||
TImovelUnidadeSchema,
|
|
||||||
)
|
)
|
||||||
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
|
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
|
||||||
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
|
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
|
||||||
from fastapi import HTTPException, status
|
|
||||||
|
|
||||||
|
|
||||||
class TImovelUnidadeSaveService:
|
class TImovelUnidadeSaveService:
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ from packages.v1.administrativo.endpoints import t_pessoa_endpoint
|
||||||
from packages.v1.administrativo.endpoints import t_pessoa_representante_endpoint
|
from packages.v1.administrativo.endpoints import t_pessoa_representante_endpoint
|
||||||
from packages.v1.administrativo.endpoints import g_calculo_endpoint
|
from packages.v1.administrativo.endpoints import g_calculo_endpoint
|
||||||
from packages.v1.servicos.balcao.endpoints import (
|
from packages.v1.servicos.balcao.endpoints import (
|
||||||
|
t_ato_endpoint,
|
||||||
t_pessoa_cartao_endpoint,
|
t_pessoa_cartao_endpoint,
|
||||||
t_servico_itempedido_endpoint,
|
t_servico_itempedido_endpoint,
|
||||||
t_servico_pedido_endpoint,
|
t_servico_pedido_endpoint,
|
||||||
|
|
@ -350,14 +351,14 @@ api_router.include_router(
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_servico_pedido_endpoint.router,
|
t_servico_pedido_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_servico_pedido",
|
prefix="/servicos/pedidos/t_servico_pedido",
|
||||||
tags=["Pedido"],
|
tags=["Pedido"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_servico_itempedido_endpoint.router,
|
t_servico_itempedido_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_servico_itempedido",
|
prefix="/servicos/pedidos/t_servico_itempedido",
|
||||||
tags=["Itens do Pedido"],
|
tags=["Itens do Pedido"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -365,10 +366,17 @@ api_router.include_router(
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_pessoa_cartao_endpoint.router,
|
t_pessoa_cartao_endpoint.router,
|
||||||
prefix="/servicos/balcao/t_pessoa_cartao",
|
prefix="/servicos/pedidos/t_pessoa_cartao",
|
||||||
tags=["Pessoa Cartao"],
|
tags=["Pessoa Cartao"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Inclui as rotas de g_emolumento periodo
|
||||||
|
api_router.include_router(
|
||||||
|
t_ato_endpoint.router,
|
||||||
|
prefix="/servicos/atos/t_ato",
|
||||||
|
tags=["Atos"],
|
||||||
|
)
|
||||||
|
|
||||||
# Inclui as rotas de g_emolumento periodo
|
# Inclui as rotas de g_emolumento periodo
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
t_biometria_pessoa_endpoint.router,
|
t_biometria_pessoa_endpoint.router,
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ from packages.v1.parametros.schemas.g_config_schema import (
|
||||||
GConfigNomeSchema,
|
GConfigNomeSchema,
|
||||||
GConfigResponseSchema,
|
GConfigResponseSchema,
|
||||||
)
|
)
|
||||||
from packages.v1.sequencia.repositories.g_sequencia.get import Get
|
|
||||||
from abstracts.action import BaseAction
|
from abstracts.action import BaseAction
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
from packages.v1.servicos.balcao.repositories.t_ato.t_ato_index_repository import (
|
||||||
|
TAtoIndexRepository,
|
||||||
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_ato_schema import TAtoIndexSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TAtoIndexAction:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de todos os registros na tabela g_tb_regimebens.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_ato_index_schema: TAtoIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de listagem no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de todos os registros.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
t_ato_index_repository = TAtoIndexRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_ato_index_repository.execute(t_ato_index_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
from packages.v1.servicos.balcao.repositories.t_ato.t_ato_show_repository import (
|
||||||
|
TAtoShowRepository,
|
||||||
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_ato_schema import TAtoIdSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TAtoShowAction:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de todos os registros na tabela g_tb_regimebens.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, data: TAtoIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de listagem no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de todos os registros.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
show_repository = TAtoShowRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = show_repository.execute(data)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_certidao_save_repository import (
|
||||||
|
TServicoItemPedidoCertidaoSaveRepository,
|
||||||
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoCertidaoSaveSchema,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TServicoItemPedidoCertidaSaveAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de salvamento de um novo registro na tabela T_SERVICO_ITEMPEDIDO.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, data: TServicoItemPedidoCertidaoSaveSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de salvamento.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_servico_itempedido_schema (TServicoItemPedidoSchema):
|
||||||
|
O esquema com os dados a serem persistidos.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de salvamento.
|
||||||
|
"""
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Instanciamento do repositório
|
||||||
|
# ----------------------------------------------------
|
||||||
|
save_repository = TServicoItemPedidoCertidaoSaveRepository()
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Execução do repositório
|
||||||
|
# ----------------------------------------------------
|
||||||
|
response = save_repository.execute(data)
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Retorno da informação
|
||||||
|
# ----------------------------------------------------
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
from docx import Document
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoCreateCertidaoSchema,
|
||||||
|
)
|
||||||
|
from actions.data.text import Text
|
||||||
|
from actions.data.microtime import Microtime
|
||||||
|
|
||||||
|
|
||||||
|
class TServicoItemPedidoCreateCertidaoAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por gerar o arquivo físico da certidão (.rtf)
|
||||||
|
a partir do texto descomprimido e validar sua integridade.
|
||||||
|
Retorna um dicionário (JSON) indicando sucesso ou falha.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, data: TServicoItemPedidoCreateCertidaoSchema):
|
||||||
|
|
||||||
|
texto = None
|
||||||
|
|
||||||
|
# Verifica se existe conteudo a ser escrito
|
||||||
|
if data.certidao_texto:
|
||||||
|
|
||||||
|
# 1. Decodifica o texto
|
||||||
|
texto = Text.decompress(data.certidao_texto)
|
||||||
|
|
||||||
|
# 2. Configuração do caminho e nome
|
||||||
|
diretorio = "./storage/temp/"
|
||||||
|
name = f"{data.servico_itempedido_id}_{Microtime.as_int()}.rtf"
|
||||||
|
|
||||||
|
# Define a variável caminho_completo
|
||||||
|
caminho_completo = os.path.join(diretorio, name)
|
||||||
|
|
||||||
|
# 3. Garante que a pasta existe
|
||||||
|
os.makedirs(diretorio, exist_ok=True)
|
||||||
|
|
||||||
|
if texto:
|
||||||
|
# 4. Escreve o texto em disco
|
||||||
|
with open(caminho_completo, "wb") as f:
|
||||||
|
f.write(texto.encode("utf-8"))
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
# 1. Instancia o objeto (cria a estrutura XML em memória)
|
||||||
|
document = Document()
|
||||||
|
|
||||||
|
# 2. Salva o arquivo fisicamente
|
||||||
|
document.save(caminho_completo)
|
||||||
|
|
||||||
|
# 5. VALIDAÇÃO: Verifica se o arquivo existe e se tem conteúdo
|
||||||
|
if not os.path.exists(caminho_completo):
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail=f"Falha crítica: O arquivo não foi encontrado em {caminho_completo}",
|
||||||
|
)
|
||||||
|
|
||||||
|
if os.path.getsize(caminho_completo) == 0:
|
||||||
|
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Falha crítica: O arquivo foi criado, mas está vazio (0 bytes).",
|
||||||
|
)
|
||||||
|
|
||||||
|
# RETORNO DE SUCESSO
|
||||||
|
return name
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
|
||||||
)
|
|
||||||
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_situacao_repository import (
|
from packages.v1.servicos.balcao.repositories.t_servico_itempedido.t_servico_itempedido_save_situacao_repository import (
|
||||||
TServicoItemPedidoSaveSituacaoRepository,
|
TServicoItemPedidoSaveSituacaoRepository,
|
||||||
)
|
)
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
|
TServicoItemPedidoSaveSituacaoSchema,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoSaveSituacaoAction:
|
class TServicoItemPedidoSaveSituacaoAction:
|
||||||
|
|
|
||||||
31
packages/v1/servicos/balcao/controllers/t_ato_controller.py
Normal file
31
packages/v1/servicos/balcao/controllers/t_ato_controller.py
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
from actions.dynamic_import.service_factory import ServiceFactory
|
||||||
|
from interfaces.service_protocols import ServiceProtocolsInterface
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_ato_schema import TAtoIdSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TAtoController:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
|
||||||
|
# Configura o escopo deste controller
|
||||||
|
self.factory = ServiceFactory(package="servicos.balcao", table="t_ato")
|
||||||
|
|
||||||
|
def index(self, schema):
|
||||||
|
|
||||||
|
# Instânciamento da classe
|
||||||
|
service = self.factory.make("TAtoIndexService", ServiceProtocolsInterface)
|
||||||
|
|
||||||
|
# O VS Code sabe que .execute() existe por causa do IService!
|
||||||
|
result = service.execute(schema)
|
||||||
|
|
||||||
|
return {"message": "Sucesso", "data": result}
|
||||||
|
|
||||||
|
def show(self, data: TAtoIdSchema):
|
||||||
|
|
||||||
|
# Instânciamento da classe
|
||||||
|
service = self.factory.make("TAtoShowService", ServiceProtocolsInterface)
|
||||||
|
|
||||||
|
# O VS Code sabe que .execute() existe por causa do IService!
|
||||||
|
result = service.execute(data)
|
||||||
|
|
||||||
|
return {"message": "Sucesso", "data": result}
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
from actions.dynamic_import.dynamic_import import DynamicImport
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
TServicoItemIndexSchema,
|
TServicoItemIndexSchema,
|
||||||
|
TServicoItemPedidoCertidaoSaveSchema,
|
||||||
TServicoItemPedidoSaveSchema,
|
TServicoItemPedidoSaveSchema,
|
||||||
TServicoItemPedidoSaveSituacaoSchema,
|
|
||||||
TServicoItemPedidoSituacaoSchema,
|
TServicoItemPedidoSituacaoSchema,
|
||||||
TServicoItemPedidoUpdateSchema,
|
TServicoItemPedidoUpdateSchema,
|
||||||
TServicoItemPedidoIdSchema,
|
TServicoItemPedidoIdSchema,
|
||||||
)
|
)
|
||||||
|
from packages.v1.servicos.balcao.services.t_servico_itempedido.go.t_servico_itempedido_cancelar_service import (
|
||||||
|
TServicoItemPedidoCancelarService,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TServicoItemPedidoController:
|
class TServicoItemPedidoController:
|
||||||
|
|
@ -59,6 +62,61 @@ class TServicoItemPedidoController:
|
||||||
"data": self.show_service.execute(t_servico_itempedido_id_schema),
|
"data": self.show_service.execute(t_servico_itempedido_id_schema),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Busca um registro específico de T_SERVICO_ITEMPEDIDO pelo ID
|
||||||
|
# ----------------------------------------------------
|
||||||
|
def certidao_show(self, t_servico_itempedido_id_schema: TServicoItemPedidoIdSchema):
|
||||||
|
# Importação da classe desejada
|
||||||
|
show_service = self.dynamic_import.service(
|
||||||
|
"t_servico_itempedido_certidao_show_service",
|
||||||
|
"TServicoItemPedidoCertidaoShowService",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Instância da classe service
|
||||||
|
self.show_service = show_service()
|
||||||
|
|
||||||
|
# Execução da busca
|
||||||
|
return {
|
||||||
|
"message": "Registro de T_SERVICO_ITEMPEDIDO localizado com sucesso.",
|
||||||
|
"data": self.show_service.execute(t_servico_itempedido_id_schema),
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Busca um registro específico de T_SERVICO_ITEMPEDIDO pelo ID
|
||||||
|
# ----------------------------------------------------
|
||||||
|
def certidao_edit(self, t_servico_itempedido_id_schema: TServicoItemPedidoIdSchema):
|
||||||
|
# Importação da classe desejada
|
||||||
|
edit_service = self.dynamic_import.service(
|
||||||
|
"t_servico_itempedido_certidao_edit_service",
|
||||||
|
"TServicoItemPedidoCertidaoEditService",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Instância da classe service
|
||||||
|
self.show_service = edit_service()
|
||||||
|
|
||||||
|
# Execução da busca
|
||||||
|
return {
|
||||||
|
"message": "Registro de T_SERVICO_ITEMPEDIDO localizado com sucesso.",
|
||||||
|
"data": self.show_service.execute(t_servico_itempedido_id_schema),
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Busca um registro específico de T_SERVICO_ITEMPEDIDO pelo ID
|
||||||
|
# ----------------------------------------------------
|
||||||
|
def certidao_save(self, data: TServicoItemPedidoCertidaoSaveSchema):
|
||||||
|
|
||||||
|
# Importação da classe desejada
|
||||||
|
save_service = self.dynamic_import.service(
|
||||||
|
"t_servico_itempedido_certidao_save_service",
|
||||||
|
"TServicoItemPedidoCertidaoSaveService",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Instância da classe service
|
||||||
|
self.save_service = save_service()
|
||||||
|
|
||||||
|
# Execução da busca
|
||||||
|
return self.save_service.execute(data)
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
@ -84,8 +142,7 @@ class TServicoItemPedidoController:
|
||||||
|
|
||||||
# Importação da classe desejada
|
# Importação da classe desejada
|
||||||
cancelar_service = self.dynamic_import.service(
|
cancelar_service = self.dynamic_import.service(
|
||||||
"t_servico_itempedido_cancelar_service",
|
"t_servico_itempedido_cancelar_service", "TServicoItemPedidoCancelarService"
|
||||||
"TServicoItemPedidoCancelarService",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Instância da classe service
|
# Instância da classe service
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,6 @@ from packages.v1.servicos.balcao.schemas.t_servico_pedido_schema import (
|
||||||
TServicoPedidoUpdateSchema,
|
TServicoPedidoUpdateSchema,
|
||||||
TServicoPedidoIdSchema,
|
TServicoPedidoIdSchema,
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.services.t_servico_pedido.go.t_servico_pedido_cancelar_service import (
|
|
||||||
TServicoPedidoCancelarService,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TServicoPedidoController:
|
class TServicoPedidoController:
|
||||||
|
|
|
||||||
54
packages/v1/servicos/balcao/endpoints/t_ato_endpoint.py
Normal file
54
packages/v1/servicos/balcao/endpoints/t_ato_endpoint.py
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Importação de bibliotecas
|
||||||
|
from fastapi import APIRouter, Depends, status
|
||||||
|
from actions.data.get_url_params import get_url_params
|
||||||
|
from actions.jwt.get_current_user import get_current_user
|
||||||
|
from packages.v1.servicos.balcao.controllers.t_ato_controller import TAtoController
|
||||||
|
from packages.v1.servicos.balcao.schemas.t_ato_schema import (
|
||||||
|
TAtoIdSchema,
|
||||||
|
TAtoIndexSchema,
|
||||||
|
)
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Inicializa o roteador para as rotas da tabela T_ATO
|
||||||
|
# ----------------------------------------------------
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
# Instanciamento do controller
|
||||||
|
t_ato_controller = TAtoController()
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Lista todos os registros de T_ATO
|
||||||
|
# ----------------------------------------------------
|
||||||
|
@router.get(
|
||||||
|
"/",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary="Lista todos os registros de T_ATO cadastrados",
|
||||||
|
response_description="Lista todos os registros de T_ATO cadastrados",
|
||||||
|
)
|
||||||
|
async def index(
|
||||||
|
current_user: dict = Depends(get_current_user), url_params=Depends(get_url_params)
|
||||||
|
):
|
||||||
|
|
||||||
|
# Busca todos os usuários cadastrados
|
||||||
|
response = t_ato_controller.index(TAtoIndexSchema(**url_params))
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Lista um registro especifico
|
||||||
|
# ----------------------------------------------------
|
||||||
|
@router.get(
|
||||||
|
"/{ato_id}",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary="Lista um registro em especifico",
|
||||||
|
response_description="Lista um registro em especifico",
|
||||||
|
)
|
||||||
|
async def show(ato_id: int, current_user: dict = Depends(get_current_user)):
|
||||||
|
"""
|
||||||
|
Retorna um registro específico de G_GRAMATICA com base no ID informado.
|
||||||
|
"""
|
||||||
|
response = t_ato_controller.show(TAtoIdSchema(ato_id=ato_id))
|
||||||
|
return response
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# Importação de bibliotecas
|
# Importação de bibliotecas
|
||||||
from fastapi import APIRouter, Depends, status
|
from fastapi import APIRouter, Depends, status, Request
|
||||||
from actions.data.dict_to_namespace import dict_to_namespace
|
from actions.data.dict_to_namespace import dict_to_namespace
|
||||||
from actions.jwt.get_current_user import get_current_user
|
from actions.jwt.get_current_user import get_current_user
|
||||||
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller import (
|
||||||
|
|
@ -7,6 +7,7 @@ from packages.v1.servicos.balcao.controllers.t_servico_itempedido_controller imp
|
||||||
)
|
)
|
||||||
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
from packages.v1.servicos.balcao.schemas.t_servico_itempedido_schema import (
|
||||||
TServicoItemIndexSchema,
|
TServicoItemIndexSchema,
|
||||||
|
TServicoItemPedidoCertidaoSaveSchema,
|
||||||
TServicoItemPedidoSaveSchema,
|
TServicoItemPedidoSaveSchema,
|
||||||
TServicoItemPedidoSituacaoSchema,
|
TServicoItemPedidoSituacaoSchema,
|
||||||
TServicoItemPedidoUpdateSchema,
|
TServicoItemPedidoUpdateSchema,
|
||||||
|
|
@ -64,6 +65,54 @@ async def show(
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Busca um registro específico de T_SERVICO_ITEMPEDIDO pelo ID
|
||||||
|
# ----------------------------------------------------
|
||||||
|
@router.get(
|
||||||
|
"/{servico_itempedido_id}/certidao/exibir",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary="Busca o texto da certidao",
|
||||||
|
response_description="Busca o texto da certidao",
|
||||||
|
)
|
||||||
|
async def certidao_show(
|
||||||
|
servico_itempedido_id: int, current_user: dict = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Retorna um registro específico de T_SERVICO_ITEMPEDIDO com base no ID informado.
|
||||||
|
"""
|
||||||
|
t_servico_itempedido_id_schema = TServicoItemPedidoIdSchema(
|
||||||
|
servico_itempedido_id=servico_itempedido_id
|
||||||
|
)
|
||||||
|
response = t_servico_itempedido_controller.certidao_show(
|
||||||
|
t_servico_itempedido_id_schema
|
||||||
|
)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Gera o arquivo em disco para Manipulação
|
||||||
|
# ----------------------------------------------------
|
||||||
|
@router.get(
|
||||||
|
"/{servico_itempedido_id}/certidao/editar",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary="Gera o arquivo em disco da certidão",
|
||||||
|
response_description="Gera o arquivo em disco da certidão",
|
||||||
|
)
|
||||||
|
async def certidao_edit(
|
||||||
|
servico_itempedido_id: int, current_user: dict = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Retorna um registro específico de T_SERVICO_ITEMPEDIDO com base no ID informado.
|
||||||
|
"""
|
||||||
|
t_servico_itempedido_id_schema = TServicoItemPedidoIdSchema(
|
||||||
|
servico_itempedido_id=servico_itempedido_id
|
||||||
|
)
|
||||||
|
response = t_servico_itempedido_controller.certidao_edit(
|
||||||
|
t_servico_itempedido_id_schema
|
||||||
|
)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
# Cadastra um novo registro em T_SERVICO_ITEMPEDIDO
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
@ -162,6 +211,30 @@ async def ativar(
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Gera o arquivo em disco para Manipulação
|
||||||
|
# ----------------------------------------------------
|
||||||
|
@router.post(
|
||||||
|
"/{servico_itempedido_id}/certidao/salvar",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary="Atualiza o texto da certidão",
|
||||||
|
response_description="Atualiza o texto da certidão",
|
||||||
|
)
|
||||||
|
async def certidao_save(servico_itempedido_id: int, request: Request):
|
||||||
|
|
||||||
|
# Obtem os dados enviados
|
||||||
|
data = await request.json()
|
||||||
|
|
||||||
|
response = t_servico_itempedido_controller.certidao_save(
|
||||||
|
TServicoItemPedidoCertidaoSaveSchema(
|
||||||
|
servico_itempedido_id=servico_itempedido_id, data=data
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# return response
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Exclui um registro de T_SERVICO_ITEMPEDIDO
|
# Exclui um registro de T_SERVICO_ITEMPEDIDO
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue