Django Rule Engine
Um pacote Django completo que integra a biblioteca rule-engine ao Django com editor visual interativo, validação em tempo real, API REST e suporte nativo ao Django Admin.
Perfeito para construir regras de negócios flexíveis, controle de acesso, políticas de desconto, regras de elegibilidade e qualquer lógica dinâmica configurável pelo usuário.
Conteúdo:
📋 Sobre o Projeto
O django-rule-engine fornece um campo Django customizado (RuleField) e um widget especializado
para a criação e avaliação de expressões lógicas baseadas em rule-engine.
✨ Recursos Principais
🎨 Editor Visual de Regras
Destaque de sintaxe: Leitura e edição intuitivas.
Validação em tempo real: Feedback instantâneo sobre erros de sintaxe ou avaliação.
Formatador de JSON: Para validar regras diretamente contra payloads de exemplo.
Atalhos de teclado: Pressione
Ctrl+Enterpara validar a regra rapidamente.Suporte a Dark Mode: Compatível com o tema nativo do Django Admin.
🔌 Integração Simples
from django.db import models
from django_rule_engine.fields import RuleField
class RegraAcesso(models.Model):
nome = models.CharField(max_length=100)
regra = RuleField(
verbose_name="Regra de Permissão",
example_data={
"idade": 25,
"status": "ativo",
"funcao": "admin"
}
)
⚡ API REST Embutida
Endpoint para validação via frontend ou integrações externas:
POST /api/validate-rule/
Payload de requisição:
{
"rule": "idade >= 18 and status == 'ativo'",
"example_data": {"idade": 20, "status": "ativo"}
}
🎯 Método matches() de Conveniência
Valide dados diretamente a partir do objeto ou do campo:
# Validação simples
dados = {"idade": 25, "status": "ativo"}
if objeto.regra_field.matches(dados):
# Regra válida
pass
🚀 Instalação Rápida
Via PyPI:
pip install django-rule-engine
No settings.py:
INSTALLED_APPS = [
# ...
'django_rule_engine',
]
No urls.py:
from django.urls import path, include
urlpatterns = [
# ...
path('', include('django_rule_engine.urls')),
]
💡 Casos de Uso
✅ Controle de Acesso: Defina dinamicamente permissões de acesso a recursos.
✅ Políticas de Desconto: Implemente regras de preços e campanhas promocionais.
✅ Elegibilidade: Determine se um cliente/aluno atende aos critérios do programa.
✅ Validação Dinâmica: Crie regras de validação sem alterar o código-fonte.
👥 Contribuindo
Contribuições são bem-vindas! Consulte o Guia de Contribuição para detalhes de setup local e execução de testes.
📝 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
📧 Contato
Kelson da Costa Medeiros
Email: kelsoncm@gmail.com
GitHub: @kelsoncm