#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) 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(default = datetime.now()) 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) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Institución' verbose_name_plural = 'Instituciones' #unique_together = ['nombre'] class cat_tipo_actividad(models.Model): nombre = models.CharField(max_length=250) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] verbose_name = 'Actividad' verbose_name_plural = 'Actividades' unique_together = ['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() 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=models.CASCADE) especificar_actividad = models.CharField(max_length=250, blank=True, null=True) tema = models.CharField(max_length=100) fecha = models.ForeignKey(cat_fechas,on_delete=models.CASCADE) hora = models.TimeField(blank=True, null=True) lugar = models.CharField(max_length=250) municipio = models.ForeignKey(cat_municipio,on_delete=models.CASCADE) 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=models.CASCADE) 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') bandera = models.BooleanField(default=False) generar_folio = models.BooleanField(default=False) usuario = models.ForeignKey(User,on_delete=models.CASCADE) 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, blank=True, null=True) imagen = models.ImageField(upload_to= 'cargas', blank=True, null=True) descripcion = models.CharField(max_length = 3000, blank=True, null=True) convocatoria = models.FileField(upload_to = 'cargas', blank=True, null=True) def __unicode__(self): return u'%s' % self.tema class Meta: verbose_name = 'convocatorias' verbose_name_plural = 'convocatorias' class graficos(models.Model): imagen = models.ImageField(upload_to= 'cargas', blank=True, null=True) descripcion = models.CharField(max_length = 300, blank=True, null=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() 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') 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/') 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'