Documentation Index
Fetch the complete documentation index at: https://mintlify.com/alfonsoolavarria/florilegio/llms.txt
Use this file to discover all available pages before exploring further.
Todos los modelos de Florilegio de la Fe están definidos en main_florife/models.py y gestionados por el ORM de Django sobre una base de datos PostgreSQL. La extensión django.contrib.postgres habilita búsqueda de texto con unaccent (sin distinción de tildes) directamente en las consultas de vistas. El esquema cubre cinco grandes dominios: contenido editorial, estudio bíblico en griego y hebreo, texto bíblico de referencia, concordancias léxicas, y usuarios con suscripciones.
Contenido Editorial
Category
Agrupa artículos y ensayos en áreas temáticas (Teología, Historia, Biografías, etc.).
| Campo | Tipo | Notas |
|---|
name | CharField(100) | Nombre visible de la categoría |
icon | CharField(100) | Clase CSS del icono (ej. unicon-book), defecto "unicon-book" |
Author
Perfil público de cada colaborador. Puede estar vinculado a un User de Django o existir de forma independiente.
| Campo | Tipo | Notas |
|---|
user | OneToOneField(User, on_delete=CASCADE) | Opcional — null=True, blank=True |
name | CharField(150) | Nombre público del autor |
bio | TextField | Biografía en texto libre |
image_url | URLField(500) | URL externa de la foto |
photo | ImageField | Foto subida a authors/ (Pillow requerido) |
social_handle | CharField(100) | Ej. @JohnPiper |
Propiedad photo_url: Devuelve image_url si está definida, luego la URL del campo photo, y como fallback https://via.placeholder.com/150.
Article
Artículo de blog editorial. Es el tipo de contenido principal del sitio.
| Campo | Tipo | Notas |
|---|
title | CharField(255) | Título principal |
slug | SlugField | URL amigable, unique=True |
author | ForeignKey(Author) | on_delete=SET_NULL, nullable |
category | ForeignKey(Category) | on_delete=CASCADE |
image_url | URLField(500) | Link a la imagen de portada |
content | TextField | HTML completo del artículo |
tags | JSONField | Lista de etiquetas, defecto [] |
meta_description | TextField | Descripción SEO (máx. 160 caracteres recomendados) |
is_featured | BooleanField | Si True, aparece en el carrusel de destacados |
status | CharField(20) | revision (En Revisión) o liberado (Liberado) |
created_at | DateTimeField | auto_now_add=True |
updated_at | DateTimeField | auto_now=True |
Propiedad image: Retorna {'url': self.image_url} para compatibilidad con templates.
Propiedad seo_description: Devuelve meta_description si existe; si no, extrae los primeros 160 caracteres del content sin etiquetas HTML.
Essay
Ensayo teológico de mayor profundidad. Comparte exactamente la misma estructura de campos y propiedades que Article, pero es un modelo independiente con su propio conjunto de vistas, URL (/ensayos/, /ensayo/<slug>/) y template dedicado con tabla de contenidos auto-generada.
Ambos modelos (Article y Essay) comparten la lógica de seo_description: si meta_description está vacío, se genera automáticamente a partir de los primeros 160 caracteres del content con las etiquetas HTML eliminadas mediante regex.
Estudio Bíblico — Griego (Nuevo Testamento)
Estos tres modelos almacenan los datos del Open Greek New Testament (OGNT), donde cada palabra del NT griego tiene una entrada única.
PalabraBiblia
Tabla base: una fila por cada palabra del Nuevo Testamento griego.
| Campo | Tipo | Notas |
|---|
ognt_sort | CharField(50) | Primary Key — identificador OGNT |
libro | IntegerField | Número de libro bíblico |
capitulo | IntegerField | |
versiculo | IntegerField | |
TraduccionLiteral
Traducción al español de cada palabra griega.
| Campo | Tipo | Notas |
|---|
palabra | OneToOneField(PalabraBiblia) | related_name='traduccion' |
espanol | CharField(255) | Traducción al español |
griego | CharField(255) | Forma griega |
raiz_griega | CharField(255) | Raíz léxica griega |
Morfologia
Análisis morfológico de cada palabra griega, basado en el sistema RMAC.
| Campo | Tipo | Notas |
|---|
palabra | OneToOneField(PalabraBiblia) | related_name='morfologia' |
rmac | CharField(50) | Código morfológico RMAC |
descripcion_rmac | CharField(255) | Descripción en texto del código |
low_nida_number | CharField(150) | Número de dominio semántico Louw-Nida |
strong | CharField(20) | Número de Strong (ej. G3056) |
Estudio Bíblico — Hebreo (Antiguo Testamento)
Estos tres modelos almacenan los datos del Open Scriptures Hebrew Bible (OSHB / morphHB).
PalabraHebreo
Tabla base: una fila por cada token del texto hebreo del AT.
| Campo | Tipo | Notas |
|---|
oshb_id | CharField(50) | Primary Key — identificador OSHB |
libro | IntegerField | |
capitulo | IntegerField | |
versiculo | IntegerField | |
orden | IntegerField | Posición de la palabra dentro del versículo |
TraduccionHebreo
Traducción al español de cada palabra hebrea.
| Campo | Tipo | Notas |
|---|
palabra | OneToOneField(PalabraHebreo) | related_name='traduccion_hebreo' |
hebreo | CharField(255) | Forma hebrea |
raiz_hebrea | CharField(255) | Raíz léxica hebrea (nullable) |
espanol | CharField(255) | Traducción al español (nullable) |
MorfologiaHebreo
Código morfológico del sistema OSHB para cada palabra hebrea.
| Campo | Tipo | Notas |
|---|
palabra | OneToOneField(PalabraHebreo) | related_name='morfologia_hebreo' |
morph_code | CharField(50) | Código morfológico OSHB (ej. HVqp3ms) |
strong | CharField(20) | Número de Strong (ej. H1254) |
Texto Bíblico
LibroBiblia
Catálogo de los 66 libros de la Biblia con metadatos de estructura.
| Campo | Tipo | Notas |
|---|
numero | IntegerField | unique=True, clave de referencia en toda la app |
nombre | CharField(50) | Nombre en español |
testamento | CharField(50) | "Antiguo Testamento" o "Nuevo Testamento" |
estructura_capitulos | JSONField | Mapa de capítulos y sus versículos |
VersiculoBiblia
Almacena el texto de múltiples versiones bíblicas.
| Campo | Tipo | Notas |
|---|
version | CharField(20) | Código de versión (ej. rv1960, rva2015, nbla) |
libro | IntegerField | |
capitulo | IntegerField | |
versiculo | IntegerField | |
texto | TextField | Texto completo del versículo |
unique_together: (version, libro, capitulo, versiculo) — garantiza que no haya duplicados por versión y referencia.
ContextoLibro
Almacena contexto histórico y literario de cada libro bíblico en formato JSON.
| Campo | Tipo | Notas |
|---|
libro | ForeignKey(LibroBiblia) | related_name='contextos' |
contenido | TextField | JSON serializado como texto |
Método get_contenido(): Deserializa el campo contenido con json.loads() y retorna el dict Python correspondiente.
db_table: contexto_libro
Concordancias
VineConcord
Entradas del Vine’s Expository Dictionary of New Testament Words, enlazadas a números de Strong.
| Campo | Tipo | Notas |
|---|
topic | CharField(255) | Primary Key — título de la entrada |
definition | TextField | Definición completa (nullable) |
is_strong | BooleanField | True si tiene números de Strong asociados |
is_concord | BooleanField | True si es entrada de concordancia |
strong_numbers | JSONField | Lista de números de Strong (ej. [3056, 4487]) |
db_table: vine_concord
StrongConcord
Entradas de la Concordancia de Strong, con la misma estructura que VineConcord.
| Campo | Tipo | Notas |
|---|
topic | CharField(255) | Primary Key — número o código Strong |
definition | TextField | Definición (nullable) |
is_strong | BooleanField | |
is_concord | BooleanField | |
strong_numbers | JSONField | Lista de números relacionados |
db_table: strong_concord
Usuarios y Suscripciones
UserProfile
Extiende el User de Django con datos de perfil y plan de suscripción. Se crea automáticamente mediante una señal post_save cuando se crea un nuevo User.
| Campo | Tipo | Notas |
|---|
user | OneToOneField(User) | related_name='profile' |
bio | TextField | Biografía del usuario (nullable) |
avatar_url | URLField(500) | URL del avatar seleccionado (nullable) |
plan | CharField(20) | free, premium, o pro |
created_at | DateTimeField | auto_now_add=True |
updated_at | DateTimeField | auto_now=True |
Método study_limit(): Retorna el número máximo de estudios guardados según el plan:
| Plan | Límite |
|---|
free | 3 estudios |
premium | 100 estudios |
pro | Sin límite (None) |
Propiedad is_author: Retorna True si el User tiene un Author asociado (author_profile).
UserStudy
Notas de estudio personal creadas por el usuario en la herramienta de estudio bíblico.
| Campo | Tipo | Notas |
|---|
user | ForeignKey(User) | related_name='studies' |
title | CharField(255) | Título del estudio (opcional) |
reference | CharField(255) | Referencia bíblica (ej. Juan 3:16) |
content | TextField | Contenido HTML sanitizado con bleach |
created_at | DateTimeField | auto_now_add=True |
updated_at | DateTimeField | auto_now=True |
Ordenación por defecto: -updated_at (más recientemente editados primero).
Recursos Madres Maestras
AgeCategory
Categorías de edad para organizar los recursos educativos del módulo Madres Maestras.
| Campo | Tipo | Notas |
|---|
name | CharField(100) | Nombre de la categoría (ej. “3 a 5 años”) |
slug | SlugField | unique=True |
description | TextField | Descripción opcional |
icon | CharField(100) | Clase CSS del icono, defecto "unicon-users" |
sort_order | IntegerField | Orden de aparición, defecto 0 |
Ordenación por defecto: sort_order ascendente.
MadreMaestraResource
Lección completa lista para usar en clase, organizada por categoría de edad.
| Campo | Tipo | Notas |
|---|
title | CharField(255) | Título de la lección |
slug | SlugField | unique=True |
age_category | ForeignKey(AgeCategory) | related_name='resources' |
image_url | URLField(500) | Imagen de portada (nullable) |
bible_passage | CharField(200) | Pasaje bíblico (ej. Juan 3:16) |
key_verse | CharField(300) | Versículo clave de la lección |
objective | TextField | Objetivo pedagógico |
materials | TextField | Lista de materiales necesarios |
time_minutes | IntegerField | Tiempo estimado en minutos |
content | TextField | Desarrollo completo en HTML |
summary | TextField | Resumen corto para la tarjeta de vista previa |
tags | JSONField | Lista de etiquetas, defecto [] |
status | CharField(20) | revision o liberado |
created_at | DateTimeField | auto_now_add=True |
updated_at | DateTimeField | auto_now=True |
Ordenación por defecto: -created_at.
Propiedad image: Retorna {'url': self.image_url} si hay URL, o {'url': ''}.
Sincronización Bíblica
ApiBibleSyncStatus
Registra cuándo fue la última sincronización de cada versión bíblica desde la API de API.Bible.
| Campo | Tipo | Notas |
|---|
version | CharField(20) | nbla, ntv, o rvr09; unique=True |
last_synced_at | DateTimeField | auto_now=True — se actualiza en cada sincronización |
Patrón status: Los modelos Article, Essay y MadreMaestraResource comparten el mismo ciclo de publicación de dos estados:
revision → En Revisión: el contenido es visible sólo en el panel de administración.
liberado → Liberado: el contenido es público y aparece en las listas y páginas de detalle del sitio.
Todas las consultas públicas filtran explícitamente status='liberado' para asegurar que ningún borrador sea expuesto.