#encoding:utf-8 from django.db import models from django.contrib.auth.models import User from datetime import * class cat_municipio(models.Model): nombre = models.CharField(max_length=50) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'municipios' verbose_name_plural = 'municipios' unique_together = ['nombre'] class cat_tipo_institucion(models.Model): nombre = models.CharField(max_length=150) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'El Tipo de Institución' verbose_name_plural = 'Tipo de Institución' unique_together = ['nombre'] class cat_niveles(models.Model): folio = models.CharField(max_length=5) nombre = models.CharField(max_length=100) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Niveles' verbose_name_plural = 'Niveles' unique_together = ['nombre'] class cat_tipo_participacion(models.Model): nombre = models.CharField(max_length=200) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Tipo de Participación' verbose_name_plural = 'Tipo de Participación' unique_together = ['nombre'] class cat_personas(models.Model): participacion = models.ForeignKey(cat_tipo_participacion, blank=True, null=True,on_delete=models.CASCADE) municipio = models.ForeignKey(cat_municipio, blank=True, null=True,on_delete=models.CASCADE) nombre = models.CharField(max_length=70, blank=True, null=True) telefono = models.CharField(max_length=15, blank=True, null=True) extencion = models.CharField(max_length=6, blank = True, null = True ) celular = models.CharField(max_length=15, blank=True, null=True) correo = models.EmailField(max_length=100, blank=True, null=True) admin_municipio = models.BooleanField(default=False) actividad_relacionada = models.ForeignKey('registro_actividad', blank=True, null=True) usuario =models.ForeignKey(User, blank=True, null=True) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Catalogo de Personas' verbose_name_plural = 'Catalogo de Personas' class institucion(models.Model): nombre = models.CharField(max_length=250) direccion = models.CharField(max_length=200) poblacion = models.CharField(max_length=150, blank=True, null=True) municipio = models.ForeignKey(cat_municipio,on_delete=models.CASCADE) codigo_postal = models.CharField(max_length=5) telefono = models.CharField(max_length=20, blank = True, null = True ) extencion = models.CharField(max_length=6, blank = True, null = True ) correo =models.EmailField(max_length=100) pagina_web = models.URLField(max_length=400, blank=True, null=True) fecha_registro = models.DateField(auto_now_add=True) fax = models.CharField(max_length=100, blank=True, null=True) tipo_institucion = models.ForeignKey(cat_tipo_institucion,on_delete=models.CASCADE) participacion = models.ForeignKey(cat_personas,on_delete=models.CASCADE) usuario = models.ForeignKey(User,on_delete=models.CASCADE) siglas = models.CharField(max_length=50) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Institución' verbose_name_plural = 'Instituciones' class cat_tipo_actividad(models.Model): nombre = models.CharField(max_length=250) class Meta: ordering = ['nombre'] verbose_name = 'Actividad' verbose_name_plural = 'Actividades' unique_together = ['nombre'] def __unicode__(self): return u'%s' % self.nombre class cat_tipo_publico(models.Model): nombre = models.CharField(max_length=250) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Tipo de publico' verbose_name_plural = 'Tipo de Publico' unique_together = ['nombre'] class cat_fechas(models.Model): fecha = models.DateField() fecha_fin = models.DateField() activo = models.BooleanField(default=True) def __unicode__(self): return u'%s' % self.fecha class registro_actividad(models.Model): titulo = models.CharField(max_length=90) tipo_actividad = models.ForeignKey(cat_tipo_actividad, on_delete=False) especificar_actividad = models.CharField(max_length=250, blank=True, null=True) tema = models.CharField(max_length=100) fecha = models.DateField() hora = models.TimeField(blank=True, null=True) lugar = models.CharField(max_length=250) municipio = models.ForeignKey(cat_municipio, on_delete=False) direccion = models.CharField(max_length=250, blank=True, null=True) imagenes = models.BooleanField(default=False) tipo_publico = models.ManyToManyField(cat_tipo_publico, through='paso_tipo_publico' ) cupo = models.IntegerField() descripcion = models.CharField(max_length=500, blank=True, null=True) responsable_actividad = models.ForeignKey(cat_personas, blank=True, null=True, related_name='responsable', on_delete=False) expositor = models.ManyToManyField(cat_personas, blank=True, null=True) participantes = models.ManyToManyField(cat_personas, blank=True, null=True, related_name='participantes') organizadores = models.ManyToManyField(cat_personas, blank=True, null=True, related_name='organizadores') patrocinadores = models.ManyToManyField(cat_personas, blank=True, null=True, related_name='patrocinadores') staff = models.ManyToManyField(cat_personas, blank=True, null=True, related_name='staff') ponente = models.ManyToManyField(cat_personas, blank=True, null=True, related_name='ponente') tallerista= models.ManyToManyField(cat_personas, blank=True, null=True, related_name='tallerista') coordinador= models.ManyToManyField(cat_personas, blank=True, null=True, related_name='coordinador') bandera = models.BooleanField(default=False) generar_folio = models.BooleanField(default=False) usuario = models.ForeignKey(User, on_delete=False) def __unicode__(self): return u'%s' % self.titulo class Meta: ordering = ['titulo'] verbose_name = 'Registro de Actividades' verbose_name_plural = 'Registro de Actividades' class imagen_registro_actividad(models.Model): def user_directory_path(instance, filename): #La VARIABLE identificador se encargara de partir las carpetas segun el campo que se le mande # Por ejemplo : identificador = instance.registro_actividad.titulo # Lo guardará en la siguiente ruta 'SNCyT_imagenes_actividades_2016/TITULO_ACTIVIDAD/IMAGEN_SUBIDA identificador = instance.registro_actividad.id return u'SNCyT_imagenes_actividades_2016/{0}/{1}'.format(identificador, filename) registro_actividad = models.ForeignKey(registro_actividad,on_delete=models.CASCADE) imagenes = models.ImageField(upload_to=user_directory_path) class paso_tipo_publico(models.Model): tipo_publico = models.ForeignKey(cat_tipo_publico,on_delete=models.CASCADE) actividad = models.ForeignKey(registro_actividad,on_delete=models.CASCADE) cantidad = models.IntegerField() def __unicode__(self): return u'%s' % self.tipo_publico def id_tag(self): return u'%s' % self.tipo_publico.nombre.replace(' ', '_') class Meta: verbose_name = 'Paso tipo publico' verbose_name_plural = 'Paso tipo publico' class tipo_usuario(models.Model): nombre = models.CharField(max_length=250) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Tipo de usuario' verbose_name_plural = 'Tipo de usuario' unique_together = ['nombre'] class constancia(models.Model): folio = models.CharField(max_length=10) institucion = models.ForeignKey(institucion,on_delete=models.CASCADE) class tipo_usuario_perfil(models.Model): clave = models.CharField('Clave', max_length = 50, help_text = 'Ingrese la clave del usuario') nombre = models.CharField('Nombre', max_length = 50, help_text = 'Ingrese su nombre') def __unicode__(self): return self.nombre class perfil(models.Model): usuario = models.OneToOneField(User) municipio = models.OneToOneField(cat_municipio) tipo_usuario = models.ForeignKey(tipo_usuario_perfil,on_delete=models.CASCADE) def __unicode__(self): return self.usuario.username class convocatorias(models.Model): tema = models.CharField(max_length = 200) imagen = models.ImageField(upload_to= 'cargas') descripcion = models.CharField(max_length = 3000) convocatoria = models.FileField(upload_to = 'cargas') activo = models.BooleanField(default=True) def __unicode__(self): return u'%s' % self.tema class Meta: verbose_name = 'convocatorias' verbose_name_plural = 'convocatorias' class graficos(models.Model): hipervinculo = models.URLField() descripcion = models.CharField(max_length=300) activo = models.BooleanField(default=True) def __unicode__(self): return u'%s' % self.descripcion class Meta: verbose_name = 'Graficos' verbose_name_plural = 'Graficos' class involucrados(models.Model): descripcion = models.CharField(max_length=100, blank=True, null=True) def __unicode__(self): return u'%s' % self.descripcion class tipo_actividad_involucrados(models.Model): id_tipo_actividad = models.ForeignKey(cat_tipo_actividad,on_delete=models.CASCADE) id_involucrado = models.ForeignKey(involucrados,on_delete=models.CASCADE) def __unicode__(self): return "%s" % (self.id) class Suplente(models.Model): institucion = models.ForeignKey(institucion,on_delete=models.CASCADE) def __unicode__(self): return "%s" % (self.institucion.nombre) class SuplentePersonas(models.Model): id = models.AutoField(primary_key=True) suplente = models.ForeignKey(Suplente, primary_key=False,on_delete=models.CASCADE) persona = models.ForeignKey(cat_personas, primary_key=False,on_delete=models.CASCADE) def __unicode__(self): return "(%s %s ) %s - %s" % ( self.suplente.institucion.id, self.suplente.institucion.nombre, self.persona.id, self.persona.nombre ) #Este modelo se encarga de almacenar la imagen que se utilizara en el encabezado. # Esta imagen es la que aparece en la esquiza superior izquierda. class LogotipoInicio(models.Model): imagen = models.ImageField(upload_to="imagenes_inicio") def __unicode__(self): return str(self.imagen) #Este modelo se encarga de manejar el contenido que sale al inicio # Es usualmente la descripcion del evento, por ejemplo 22a Semana nacional de ciencia y tecnologia class PublicacionInicio(models.Model): titulo = models.CharField(max_length=70) cuerpo = models.TextField() logo = models.ImageField(upload_to='banner_inicio/', blank=True, null=True) hipervinculo_video = models.URLField(blank=True, null=True) descripcion_hipervinculo = models.CharField(max_length=200, blank=True, null=True) activo = models.BooleanField(default=True) def __unicode__(self): return str(self.titulo) #Este modelo se encarga de manejar los sitios de interes en la pantalla principal class SitiosDeInteresInicio(models.Model): nombre = models.CharField(max_length=70) hipervinculo = models.URLField() imagen = models.ImageField(upload_to='imagenes_sitios') activo = models.BooleanField(default=True) def __unicode__(self): return u'{0} - {1}'.format(self.nombre, self.hipervinculo) class ProgramaSedeEstatal(models.Model): titulo = models.CharField(max_length=50) texto = models.CharField(max_length=50) documento_pdf = models.FileField(upload_to='programas_sede_estatal_2016/') activo = models.BooleanField(default=True) def __unicode__(self): return self.titulo class BannerInicio(models.Model): imagen = models.ImageField(upload_to='banner_inicio/') def __unicode__(self): return str(self.imagen) class Paso_Tipo_Publico_Final(models.Model): tipo_publico = models.ForeignKey(cat_tipo_publico,on_delete=models.CASCADE) actividad = models.ForeignKey(registro_actividad,on_delete=models.CASCADE) cantidad = models.IntegerField() def __unicode__(self): return u'%s' % self.tipo_publico def id_tag(self): return u'%s' % self.tipo_publico.nombre.replace(' ', '_') class Meta: verbose_name = 'Paso tipo publico final' verbose_name_plural = 'Paso tipo publico final' class ReporteActividades1(models.Model): tipo_actividad_id = models.IntegerField(primary_key=True) nombre= models.CharField(max_length=400) total_programado = models.IntegerField() total_realizado = models.IntegerField() class Meta: verbose_name = 'Reporte actividad 1' verbose_name_plural = 'Reporte actividades 1' db_table = 'reporte_actividades1' managed = False class ReporteActividades2(models.Model): tipo_actividad_id = models.IntegerField(primary_key=True) nombre= models.CharField(max_length=400) preescolar = models.IntegerField() primaria = models.IntegerField() secundaria = models.IntegerField() bachillerato = models.IntegerField() superior = models.IntegerField() investigador = models.IntegerField() docente = models.IntegerField() publico_general = models.IntegerField() class Meta: verbose_name = 'Reporte actividad 2' verbose_name_plural = 'Reporte actividades 2' db_table = 'reporte_actividades2' managed = False class ReporteActividades3(models.Model): tipo_actividad_id = models.IntegerField(primary_key=True) nombre= models.CharField(max_length=400) preescolar = models.IntegerField() primaria = models.IntegerField() secundaria = models.IntegerField() bachillerato = models.IntegerField() superior = models.IntegerField() investigador = models.IntegerField() docente = models.IntegerField() publico_general = models.IntegerField() class Meta: verbose_name = 'Reporte actividad 3' verbose_name_plural = 'Reporte actividades 3' db_table = 'reporte_actividades3' managed = False class ImagenReconocimiento(models.Model): imagen = models.ImageField(upload_to='imagenes_reconocimiento') activo = models.BooleanField(default=True) class Meta: verbose_name = 'Imagen Reconocimiento' verbose_name_plural = 'imagen de Reconocimiento' db_table = 'imagen_reconocimiento' class JornadaTabasquena(models.Model): logo = models.ImageField(upload_to='media') titulo = models.CharField(max_length=150) descripcion = models.TextField() def __unicode__(self): return self.titulo class Meta: verbose_name = 'Jornada Tabasqueña'