auth-ava
App Django com modelos concretos e normalizados para autenticação e sincronização de dados do SUAP (Sistema Unificado de Administração Pública) no ecossistema do AVA (Ambiente Virtual de Aprendizagem).
Construído sobre o django-suap-auth, este pacote unifica a estrutura de usuários, múltiplos e-mails, vínculos, histórico e inlines do Django Admin para reutilização em projetos como painel_ava e integrador_ava.
Recursos
- Modelo Concreto de Usuário:
UsuarioestendeAbstractUsercomdjango-simple-history(HistoricalRecords), sem o overhead de performance doSafeDeleteModel. - Múltiplos E-mails Normalizados (1xN): Tabela
EmailUsuariopara suportar dinamicamente novos tipos de e-mails do SUAP (preferencial,pessoal,corporativo,google_classroom,academico,escolar, etc.). - Vínculos Normalizados (1xN): Tabela
VinculoUsuariocom detalhamento de campus, cargos, cursos e status ativo. - Tolerância a Falhas nas APIs do SUAP: O
AvaUserInfoFetcherrealiza chamadas com resiliência:/api/rh/eu/(Obrigatório)/api/rh/meus-vinculos/(Tolerante a falhas)/api/rh/meus-dados/(Tolerante a falhas)/api/ensino/meus-dados-aluno/(Tolerante a falhas)/api/ensino/periodos/(Tolerante a falhas)
- Auditoria e Debug (1x1): Tabela
UsuarioAuditDataarmazena o mapa bruto consolidado dos endpoints emlast_json. - Registro de Falhas (1xN): Tabela
SincronizacaoErropara diagnósticos sem interromper o login do usuário. - Django Admin Pronto: Inlines estruturados para e-mails, vínculos, auditoria e erros com compatibilidade ao
admintheme-dsgovbr.
Instalação
uv add auth-ava
# ou com pip:
pip install auth-ava
Início Rápido
1. settings.py
INSTALLED_APPS = [
# Django padrão...
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# Dependências
"simple_history",
"django_suap_auth",
# App AVA Auth
"auth_ava",
]
AUTH_USER_MODEL = "auth_ava.Usuario"
AUTHENTICATION_BACKENDS = [
"auth_ava.backends.AvaAuthBackend",
"django.contrib.auth.backends.ModelBackend",
]
SUAP_AUTH = {
"CLIENT_ID": "seu-client-id",
"CLIENT_SECRET": "seu-client-secret",
"REDIRECT_URI": "https://seuapp.ifrn.edu.br/auth/suap/callback/",
"USER_INFO_FETCHERS": [
"auth_ava.fetchers.AvaUserInfoFetcher",
],
}
2. urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path("auth/suap/", include("django_suap_auth.urls")),
path("auth/ava/", include("auth_ava.urls")),
]
Desenvolvimento, Testes e Git Hooks
Instalação de dependências de desenvolvimento
pip install -e ".[dev]"
Configuração do pre-commit
Para habilitar a verificação de linting no commit e os testes automatizados no push:
# Habilita os hooks de commit (ruff, formatação, trailing-whitespace, etc.)
pre-commit install
# Habilita o hook de push (pytest com cobertura)
pre-commit install --hook-type pre-push
Execução manual dos testes e linters
# Executar todos os testes com relatório de cobertura
pytest --cov=auth_ava --cov-report=term-missing
# Linting e formatação com Ruff
ruff check .
ruff format .
# Executar pre-commit manualmente
pre-commit run --all-files --hook-stage pre-commit
pre-commit run --all-files --hook-stage pre-push
Documentação
A documentação completa é gerada com Sphinx e o tema django_docs_theme:
# Gerar HTML da documentação
python -m sphinx -b html docs docs/_build/html
Licença
MIT © 2026 Kelson da Costa Medeiros
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 auth_ava-0.1.0.tar.gz.
File metadata
- Download URL: auth_ava-0.1.0.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11261a077e25571c81629324e73cc8e7d39b63298be941543088ca84e636cba2
|
|
| MD5 |
b2d2bd406e36246e2cc872222cbb4d03
|
|
| BLAKE2b-256 |
2adba3745bf9d9c58e6e12715ce600b5aa76e696896b707f95f8a267aa0e670b
|
Provenance
The following attestation bundles were made for auth_ava-0.1.0.tar.gz:
Publisher:
publish.yml on suap-ava-suite/djangoapp-auth_ava
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auth_ava-0.1.0.tar.gz -
Subject digest:
11261a077e25571c81629324e73cc8e7d39b63298be941543088ca84e636cba2 - Sigstore transparency entry: 2458870624
- Sigstore integration time:
-
Permalink:
suap-ava-suite/djangoapp-auth_ava@f04a47373307d422d743f7185cf65847f4a4a9de -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/suap-ava-suite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f04a47373307d422d743f7185cf65847f4a4a9de -
Trigger Event:
release
-
Statement type:
File details
Details for the file auth_ava-0.1.0-py3-none-any.whl.
File metadata
- Download URL: auth_ava-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
311d317af771b4576a5c8e129643d6ef9ab9a2e6c30f7e14b8bbe34b8ba35938
|
|
| MD5 |
26c9707c2823ee2aa2368a731bfeba18
|
|
| BLAKE2b-256 |
7351d2367de99cf215e8446e97c9cbe99c02e34cd240612a53ecb174426c8acf
|
Provenance
The following attestation bundles were made for auth_ava-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on suap-ava-suite/djangoapp-auth_ava
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auth_ava-0.1.0-py3-none-any.whl -
Subject digest:
311d317af771b4576a5c8e129643d6ef9ab9a2e6c30f7e14b8bbe34b8ba35938 - Sigstore transparency entry: 2458870666
- Sigstore integration time:
-
Permalink:
suap-ava-suite/djangoapp-auth_ava@f04a47373307d422d743f7185cf65847f4a4a9de -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/suap-ava-suite
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f04a47373307d422d743f7185cf65847f4a4a9de -
Trigger Event:
release
-
Statement type: