Sistema de login Canaimé para gerenciamento de unidades prisionais.
Reason this release was yanked:
Não funciona
Project description
Login Canaimé
Login Canaimé é uma biblioteca Python que fornece uma interface gráfica moderna para realizar o login no Sistema Canaimé, um sistema desenvolvido para gerenciar unidades prisionais e facilitar o controle de dados de reeducandos, dados administrativos, visitantes e acesso em tempo real a informações para órgãos como a Justiça, Defensoria Pública e Ministério Público.
A biblioteca integra o Model, View e Controller para fornecer um fluxo de login robusto e reutilizável. Além disso, ela utiliza o PySide6 para a interface gráfica e o Playwright para automatizar o processo de login, permitindo a execução em modo headless (para produção) ou não-headless (para testes).
Instalação
Via pip
pip install login-canaime
Após a instalação, instale também os navegadores necessários para o Playwright:
playwright install
Como usar
Como Biblioteca em Seu Código
API Síncrona (modo padrão)
# Método 1: Obter a página logada para automação
import asyncio
from loginCanaime import Login
# Obter a página já logada para automação com Playwright (método síncrono)
page = Login.get_page(test_mode=False)
# Agora você pode usar a página para navegar e automatizar tarefas
async def run_operations():
if page:
# Use a API assíncrona do Playwright
await page.goto("https://canaime.com.br/sgp2rr/areas/unidades/alguma_pagina.php")
# Realize suas operações...
# Quando terminar, limpe os recursos
Login.cleanup()
# Execute a função assíncrona
asyncio.run(run_operations())
# Método 2: Apenas obter as credenciais (útil para desenvolvimento)
from loginCanaime import Login
credentials = Login.get_credentials(test_mode=False)
if credentials:
print(f"Usuário: {credentials['username']}")
print(f"Senha: {credentials['password']}")
# Limpe os recursos quando terminar
Login.cleanup()
API Assíncrona (para uso em funções assíncronas)
# Método 1: Obter a página logada para automação (versão assíncrona)
import asyncio
from loginCanaime import Login
async def run_login_and_operations():
# Obter a página já logada usando a API assíncrona
page = await Login.get_page_async(test_mode=False)
if page:
# Use a API assíncrona do Playwright
await page.goto("https://canaime.com.br/sgp2rr/areas/unidades/alguma_pagina.php")
# Realize suas operações...
# Quando terminar, limpe os recursos
Login.cleanup()
# Execute a função assíncrona
asyncio.run(run_login_and_operations())
# Método 2: Obter credenciais de forma assíncrona
import asyncio
from loginCanaime import Login
async def get_user_credentials():
credentials = await Login.get_credentials_async(test_mode=False)
if credentials:
print(f"Usuário: {credentials['username']}")
print(f"Senha: {credentials['password']}")
# Limpe os recursos quando terminar
Login.cleanup()
# Execute a função assíncrona
asyncio.run(get_user_credentials())
Integração com Aplicações Qt Existentes
O Login Canaimé detecta automaticamente se já existe uma instância de QApplication em execução e a utiliza em vez de criar uma nova. Isso facilita a integração com aplicações Qt existentes:
from PySide6.QtWidgets import QApplication, QMainWindow
import sys
from loginCanaime import Login
# Crie sua aplicação Qt
app = QApplication(sys.argv)
main_window = QMainWindow()
main_window.show()
# O Login Canaimé usará a instância de QApplication existente
page = Login.get_page(test_mode=True)
# Continue com sua aplicação
app.exec()
Via Linha de Comando
Após instalar o pacote, você pode usá-lo diretamente da linha de comando:
# Login padrão, abre interface gráfica e retorna página logada
canaime-login
# Executar em modo de teste (navegador visível)
canaime-login --test
# Apenas obter credenciais sem iniciar navegador
canaime-login --credentials-only
# Usar a API assíncrona (útil para scripts que dependem de asyncio)
canaime-login --async
Características
-
Interface moderna e personalizável:
- Janela sem borda e fundo translúcido;
- Campos de e-mail e senha (este último com caracteres ocultos);
- Ícone personalizado (baixado a partir de uma URL);
- Spinner de carregamento (GIF animado) durante o processo de login;
- Janela arrastável (mesmo sem borda);
-
Fluxo de login assíncrono:
- Utiliza o QThread (via subclassificação de QThread) para executar o processo de login sem travar a interface;
- Oferece APIs síncronas e assíncronas para diferentes contextos de uso;
-
Retorno do resultado:
- Retorna o objeto
Pagelogado (do Playwright) para uso em aplicações reais; - Permite também, em modo de desenvolvimento, obter as credenciais digitadas;
- Retorna o objeto
-
Integração com outros sistemas:
- Detecta e utiliza instâncias existentes de QApplication;
- Tratamento adequado de erros e exceções;
- Gerenciamento automático de recursos.
Estrutura do Projeto
📦 login-canaime_project/ # Diretório raiz do projeto
├── ⚙️ setup.py # Configuração para instalação via pip
├── 📋 requirements.txt # Lista de dependências do projeto
├── 🛡️ LICENSE # Arquivo de licença do projeto
├── 📖 README.md # Documentação do projeto
├── 📝 MANIFEST.in # Controle de arquivos incluídos no pacote
└── 📦 loginCanaime/ # Pacote principal
├── 📄 __init__.py # Inicializa o pacote e expõe a classe Login
├── 📄 __main__.py # Ponto de entrada do pacote loginCanaime
├── 📄 model.py # Lógica de negócio (Model, utilizando Playwright)
├── 📄 view.py # Interface gráfica (View, utilizando PySide6)
├── 📄 controller.py # Controle de fluxo (Controller, utilizando QThread)
├── 📄 main.py # Funções principais para login
└── 📁 resources/ # Recursos estáticos (imagens, ícones)
Funcionamento Interno
-
Model:
O módulomodel.pyutiliza o Playwright para abrir o navegador, navegar até a página de login e preencher os campos de usuário e senha.
Ele utiliza uma heurística baseada no conteúdo de um elemento específico da página para confirmar o sucesso do login e retorna uma tupla(True, full_name, page)ou(False, "", None). -
View:
O móduloview.pyimplementa a interface gráfica com PySide6, contendo campos para e-mail e senha, botão de login, label de status e um spinner de carregamento (GIF).
A interface é configurada sem borda, com um ícone personalizado (baixado de uma URL) e permite arrastar a janela. -
Controller:
O módulocontroller.pyconecta a View e o Model. Utiliza um QThread (via subclassificação de QThread na classeLoginThread) para executar o login de forma assíncrona, mantendo a interface responsiva.
O Controller finaliza o aplicativo automaticamente assim que o login é concluído, retornando o objetoPagelogado.
Contribuição
Contribuições são bem-vindas! Se você deseja melhorar o código, adicione novas funcionalidades ou corrigir problemas, sinta-se à vontade para abrir issues ou enviar pull requests.
Contato
Anderson Assunção – andersongomesrr@hotmail.com
Projeto disponível em: https://github.com/A-Assuncao/login-canaime_project
Licença
Este projeto está sob a licença MIT. Veja o arquivo LICENÇA para mais detalhes.
Desenvolvido com ♥ e Python.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file login_canaime-1.2.0.tar.gz.
File metadata
- Download URL: login_canaime-1.2.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdf778019cc7c3a291e05700942f9415987fd49013d2d65e5e0418b756a2187f
|
|
| MD5 |
b3a4502b598ec9bb90e8adff5340933e
|
|
| BLAKE2b-256 |
c384b7f2cb3108fdec37ee105d07072f95c749e91bb680e872ed8b85f87bdf99
|
File details
Details for the file login_canaime-1.2.0-py3-none-any.whl.
File metadata
- Download URL: login_canaime-1.2.0-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
782781c723b1dd07d613bab90d597bf0e62362cf1a7685f3ff46262c5bab27d2
|
|
| MD5 |
227d46c217cc26478f689fffb5f29571
|
|
| BLAKE2b-256 |
07336b5c5f05c5214e1d1569865482bb7d5bfb76277494f2a66117740cb6cff9
|