"""
shared/mixins/owned.py
=======================
Mixin para modelos que pertenecen a un usuario (owner).
Facilita el filtrado por propietario en las vistas.

Uso:
    class Asignatura(OwnedModel, TimestampedModel):
        nombre = models.CharField(...)
    
    # En la vista:
    queryset = Asignatura.objects.filter(owner=request.user)
"""

from django.conf import settings
from django.db import models


class OwnedModel(models.Model):
    """
    Modelo abstracto que agrega un campo 'owner' (FK al usuario).
    Útil para que los docentes solo vean/editen sus propios recursos.
    """

    owner = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='%(app_label)s_%(class)s_set',
        verbose_name='Propietario',
        help_text='Usuario que creó y es dueño de este recurso'
    )

    class Meta:
        abstract = True
