Created
August 31, 2018 20:28
-
-
Save fhdez/898fe8306eb5ac987d4bf2368887a2a7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from django.db import models | |
from django.db.models.signals import post_save | |
from django.dispatch import receiver | |
from redmag.nuevomodelo.manager import BaseNuevoModeloManager | |
from redmag.utils.slughifi import slughifi | |
class BaseCatalogoNME(models.Model): | |
""" | |
Esta clase se genera para quitar datos innnecesarios | |
para el nuevo modelo Educativo. | |
""" | |
nombre = models.CharField( | |
blank=True, | |
max_length=255 | |
) | |
slug = models.SlugField( | |
blank=True, | |
max_length=100 | |
) | |
validado = models.BooleanField( | |
default=False | |
) | |
def __unicode__(self): | |
return self.nombre | |
class Meta: | |
abstract = True | |
ordering = ['id'] | |
class CampoFormativoNME(BaseCatalogoNME): | |
""" | |
Modelo que representa un campo formativo o área | |
para el Nuevo Modelo Educativo | |
""" | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Campo formativo' | |
class AsignaturaNME(BaseCatalogoNME): | |
""" | |
Modelo que representa una asignatura (materia) del ciclo escolar | |
Se agrega un nuevo campo para el Nuevo Modelo Educativo. | |
""" | |
grado = models.ForeignKey( | |
'acuerdo.Grado', | |
related_name='asignatura' | |
) | |
campoformativo = models.ForeignKey( | |
'CampoFormativo', | |
related_name='asignatura', | |
null=True, blank=True | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Asignatura' | |
verbose_name_plural = u'Asignaturas' | |
class ModuloNME(BaseCatalogoNME): | |
""" | |
Modelo que representa la nueva modalidad que dividirá en 3 bloques | |
para primaria 3 modulos para secundaria, | |
para el Nuevo Modelo Educativo para las Asignaturas. | |
""" | |
asignatura = models.ForeignKey( | |
'AsignaturaNME', | |
related_name='modulo', | |
null=True, blank=True | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Módulo' | |
verbose_name_plural = u'Módulos' | |
class TemaNME(BaseCatalogoNME): | |
""" | |
Modelo que representa los nuevos temas para el Nuevo Modelo Educativo | |
el cual almacenara de acuerdo a la asignatura dada. | |
""" | |
modulo = models.ForeignKey( | |
'Modulo', | |
related_name='temanme', | |
null=True, blank=True | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Tema NME' | |
class ObjetivoNME(BaseCatalogoNME): | |
""" | |
Modelo que representa los diferentes objetivos de los temas para | |
el Nuevo Modelo Educativo. | |
""" | |
temanme = models.ForeignKey( | |
TemaNME, | |
related_name='objetivonme' | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Objetivo NME' | |
class PracticaSocialNME(BaseCatalogoNME): | |
""" | |
Modelo que representará sólo para Inglés las prácticas | |
sociales del lenguaje, de acuerdo al objetivo del | |
Nuevo Modelo Educativo. | |
""" | |
objetivonme = models.ForeignKey( | |
ObjetivoNME, | |
related_name='practicasocial' | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Práctica Social del Lenguaje' | |
class AprendizajeEsperadoNME(BaseCatalogoNME): | |
""" | |
Modelo que representará todos los aprendizajes esperados | |
de acuerdo al objetivo del Nuevo Modelo Educativo | |
""" | |
objetivonme = models.ForeignKey( | |
ObjetivoNME, | |
related_name='aprendizajeesperado', | |
null=True, blank=True | |
) | |
# Para el control de Inglés | |
is_ingles = models.BooleanField( | |
default=False | |
) | |
# Para la sección de Inglés | |
practicasocial = models.ForeignKey( | |
PracticaSocial, | |
related_name='aprendizajeesperado', | |
null=True, blank=True | |
) | |
objects = BaseNuevoModeloManager() | |
class Meta: | |
verbose_name = u'Aprendizaje Esperado' | |
@receiver(post_save) | |
def populate_slug(sender, instance, **kwargs): | |
""" | |
Función que escucha la señal ```post_save``` de los modelos del módulo | |
nuevo modelo y genera los slugs de los mismos. | |
""" | |
if issubclass(sender, BaseCatalogoNME): | |
old_slug = instance.slug | |
instance.slug = '{0}-{1}'.format( | |
instance.pk, slughifi(instance.nombre) | |
)[:100] | |
if old_slug != instance.slug: | |
instance.save() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment