Skip to main content

auth-ava

PyPI Version Tests Python Versions Django Versions License: MIT Coverage pre-commit

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: Usuario estende AbstractUser com django-simple-history (HistoricalRecords), sem o overhead de performance do SafeDeleteModel.
  • Múltiplos E-mails Normalizados (1xN): Tabela EmailUsuario para suportar dinamicamente novos tipos de e-mails do SUAP (preferencial, pessoal, corporativo, google_classroom, academico, escolar, etc.).
  • Vínculos Normalizados (1xN): Tabela VinculoUsuario com detalhamento de campus, cargos, cursos e status ativo.
  • Tolerância a Falhas nas APIs do SUAP: O AvaUserInfoFetcher realiza 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 UsuarioAuditData armazena o mapa bruto consolidado dos endpoints em last_json.
  • Registro de Falhas (1xN): Tabela SincronizacaoErro para 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

Metadata

Release files for auth-ava 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for auth-ava 0.1.0
File Size Uploaded Provenance
auth_ava-0.1.0.tar.gz 25.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for auth-ava 0.1.0
File Interpreter ABI Platform
auth_ava-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 48.4 kB

Release files / auth_ava-0.1.0.tar.gz

Download URL auth_ava-0.1.0.tar.gz
Size 25.3 kB
Tags Source
SHA-256 checksum
How to use checksums
11261a077e25571c81629324e73cc8e7d39b63298be941543088ca84e636cba2
BLAKE2b-256 checksum
How to use checksums
2adba3745bf9d9c58e6e12715ce600b5aa76e696896b707f95f8a267aa0e670b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Release files / auth_ava-0.1.0-py3-none-any.whl

Download URL auth_ava-0.1.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
311d317af771b4576a5c8e129643d6ef9ab9a2e6c30f7e14b8bbe34b8ba35938
BLAKE2b-256 checksum
How to use checksums
7351d2367de99cf215e8446e97c9cbe99c02e34cd240612a53ecb174426c8acf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Security for auth-ava 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for auth_ava-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page