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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auth_ava-0.1.0.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

auth_ava-0.1.0-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

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

Hashes for auth_ava-0.1.0.tar.gz
Algorithm Hash digest
SHA256 11261a077e25571c81629324e73cc8e7d39b63298be941543088ca84e636cba2
MD5 b2d2bd406e36246e2cc872222cbb4d03
BLAKE2b-256 2adba3745bf9d9c58e6e12715ce600b5aa76e696896b707f95f8a267aa0e670b

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for auth_ava-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 311d317af771b4576a5c8e129643d6ef9ab9a2e6c30f7e14b8bbe34b8ba35938
MD5 26c9707c2823ee2aa2368a731bfeba18
BLAKE2b-256 7351d2367de99cf215e8446e97c9cbe99c02e34cd240612a53ecb174426c8acf

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

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