Skip to main content

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.

La sección Madres Maestras de Florilegio está diseñada para apoyar a madres, educadoras y líderes de grupos de niños en su labor de transmitir la fe. Cada recurso es una lección bíblica completa estructurada pedagógicamente: incluye el pasaje de referencia, un versículo clave para memorizar, el objetivo de la enseñanza, la lista de materiales necesarios, el tiempo estimado y el desarrollo íntegro de la lección en HTML enriquecido. Los recursos están organizados por categoría de edad, lo que permite a las educadoras encontrar rápidamente el material apropiado para su grupo.

Modelo AgeCategory

Las categorías de edad agrupan los recursos según el rango etario al que están dirigidos.
class AgeCategory(models.Model):
    name        = models.CharField(max_length=100)
    slug        = models.SlugField(unique=True)
    description = models.TextField(blank=True, null=True)
    icon        = models.CharField(max_length=100, default="unicon-users")
    sort_order  = models.IntegerField(default=0)

    class Meta:
        ordering = ['sort_order']
CampoDescripción
nameNombre de la categoría (ej. "Preescolares (3-5 años)")
slugIdentificador URL único (ej. preescolares)
descriptionDescripción opcional de la categoría
iconClase CSS del icono (ej. unicon-users, unicon-child)
sort_orderOrden de visualización en la página de listado
Crea las entradas de AgeCategory en Django Admin antes de añadir recursos. Los recursos requieren una categoría de edad asignada y no pueden guardarse sin ella.

Modelo MadreMaestraResource

Cada recurso representa una lección bíblica completa lista para usar en el aula o en el hogar.
class MadreMaestraResource(models.Model):
    STATUS_CHOICES = [
        ('revision', 'En Revisión'),
        ('liberado', 'Liberado'),
    ]

    title         = models.CharField(max_length=255)
    slug          = models.SlugField(unique=True)
    age_category  = models.ForeignKey(AgeCategory, on_delete=models.CASCADE, related_name="resources")
    image_url     = models.URLField(max_length=500, blank=True, null=True)
    bible_passage = models.CharField(max_length=200, blank=True, null=True)   # Ej: "Juan 3:16"
    key_verse     = models.CharField(max_length=300, blank=True, null=True)   # Versículo para memorizar
    objective     = models.TextField(blank=True, null=True)                   # Objetivo pedagógico
    materials     = models.TextField(blank=True, null=True)                   # Materiales necesarios
    time_minutes  = models.IntegerField(blank=True, null=True)                # Duración estimada en minutos
    content       = models.TextField(blank=True, null=True)                   # Lección completa en HTML
    summary       = models.TextField(blank=True, null=True)                   # Resumen corto para la tarjeta
    tags          = models.JSONField(default=list)                            # Etiquetas temáticas
    status        = models.CharField(max_length=20, default='revision')
    created_at    = models.DateTimeField(auto_now_add=True)
    updated_at    = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['-created_at']

Referencia de campos

CampoTipoDescripción
titleCharField(255)Título de la lección
slugSlugFieldURL amigable única
age_categoryFK(AgeCategory)Grupo etario al que va dirigida
image_urlURLField (opcional)URL de la imagen ilustrativa
bible_passageCharField(200) (opcional)Pasaje bíblico principal (ej. Marcos 10:13-16)
key_verseCharField(300) (opcional)Versículo clave para memorización
objectiveTextField (opcional)Objetivo pedagógico de la lección
materialsTextField (opcional)Lista de materiales necesarios
time_minutesIntegerField (opcional)Tiempo estimado de la actividad en minutos
contentTextField (opcional)Desarrollo completo de la lección en HTML
summaryTextField (opcional)Texto breve para la tarjeta de vista previa
tagsJSONFieldLista de etiquetas temáticas (ej. ["amor", "niños", "salvación"])
statusCharFieldrevision (no visible) o liberado (visible en el sitio)
created_atDateTimeFieldFecha de creación (automática)
updated_atDateTimeFieldFecha de última modificación (automática)

Propiedad image

@property
def image(self):
    return {'url': self.image_url} if self.image_url else {'url': ''}
Esta propiedad devuelve un diccionario compatible con los templates que acceden a resource.image.url.

URLs disponibles

Muestra todos los recursos con status='liberado' agrupados por su AgeCategory. Las categorías aparecen en el orden definido por sort_order.El template madres_maestras.html recibe:
{
    'age_categories': age_categories,  # QuerySet de AgeCategory ordenado
    'grouped': {
        <AgeCategory>: [<MadreMaestraResource>, ...],
        ...
    }
}
GET /madres/
Muestra el recurso con el slug indicado (solo si status='liberado'). El template madre_maestra_detail.html recibe el objeto resource completo con todos sus campos.El SEO del detalle usa resource.summary como descripción, con fallback a resource.objective y luego a resource.title.
GET /madres/dios-es-amor-preescolares/

Administración y flujo editorial

Los recursos de Madres Maestras se crean y gestionan exclusivamente desde el panel de administración de Django. El campo status controla la visibilidad pública:
1

Crear el recurso en Django Admin

Un administrador crea o importa un MadreMaestraResource completando todos los campos relevantes. El recurso se crea con status='revision' por defecto y no es visible en el sitio.
2

Revisar el contenido

El equipo editorial revisa el contenido, los materiales y la adecuación pedagógica del recurso. Puede editar cualquier campo desde el admin.
3

Publicar el recurso

Al cambiar status a liberado y guardar, el recurso pasa a ser visible en /madres/ y en su URL de detalle /madres/<slug>/.

Build docs developers (and LLMs) love