Skip to content

Instantly share code, notes, and snippets.

@fhdez
Created August 31, 2018 20:28
Show Gist options
  • Save fhdez/898fe8306eb5ac987d4bf2368887a2a7 to your computer and use it in GitHub Desktop.
Save fhdez/898fe8306eb5ac987d4bf2368887a2a7 to your computer and use it in GitHub Desktop.
# -*- 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