#encoding:utf-8 from django.db import models from django.core.validators import MinLengthValidator, MaxLengthValidator, RegexValidator from django.contrib.auth.models import User # Create your models here. tipoSexo = ( ('M', 'MASCULINO'), ('F', 'FEMENINO'), ) enc_method = ( ('default', 'default'), # ('bcrypt', 'bcrypt'), # ('crypt', 'crypt'), ('pbkdf2_sha1', 'pbkdf2_sha1'), ('pbkdf2_sha256', 'pbkdf2_sha256'), ('md5', 'md5'), ('sha1', 'sha1') # , # ('unsalted_md5', 'unsalted_md5'), # ('unsalted_sha1', 'unsalted_sha1') ) class catalogo ( models.Model ): nombre = models.CharField( 'nombre', max_length=150 ) activo = models.BooleanField( default = True ) fecha_registro = models.DateTimeField(auto_now_add=True) fecha_ultimo_cambio = models.DateTimeField(null=True) def __unicode__(self): return u'%s' % self.nombre class Meta: ordering = ['nombre'] abstract = True class persona ( models.Model ): usuario = models.ForeignKey(User) apellido_paterno = models.CharField('apellido paterno', max_length=50, ) apellido_materno = models.CharField('apellido materno', max_length=50, ) sexo = models.CharField( choices=tipoSexo, max_length=1, help_text= 'Seleccione el género al que pertenece') fecha_nacimiento = models.DateField('fecha de nacimiento', blank = True, null = True, ) curp = models.CharField('CURP', max_length=18, blank = False, null = False, validators=[ # RegexValidator( # r'(^\d{13}$)|(^\w{9}$)', #cadena de 13 digitos para IFE y de 9 digitos para licencia # 'la CURP consta de 18 dígitos', # 'CURP no valida' # ), MinLengthValidator(18), MaxLengthValidator(18), ], help_text = 'Favor de verificar que sea correcta' ) identificacion = models.CharField('IFE / Licencia', max_length=13, validators=[ RegexValidator( r'(^\d{13}$)|(^\w{9}$)', #cadena de 13 digitos para IFE y de 9 digitos para licencia 'IFE: 13 dígitos o Licencia: 9 dígitos', 'Identificacion no valida' ), MinLengthValidator(9), MaxLengthValidator(13), ], blank = True ) correo_electronico = models.EmailField('correo electrónico', max_length=100, blank = True, null = True, ) telefono = models.CharField('teléfono', max_length=13, blank = True, null = True ) celular = models.CharField('teléfono celular', max_length=10, blank = True, null = True ) def __unicode__(self): # return u'%s %s %s' % (self.nombre, self.apellido_paterno, self.apellido_materno) return u'%s %s, %s' % (self.apellido_paterno, self.apellido_materno, self.nombre ) def nombre_x_apellidos(self): return u'%s %s, %s' % (self.apellido_paterno, self.apellido_materno, self.nombre ) nombre_x_apellidos.short_description = 'nombre' def nombre_completo(self): return u'%s %s %s' % (self.nombre, self.apellido_paterno, self.apellido_materno ) nombre_completo.short_description = 'nombre_completo' class Meta: ordering = ['apellido_paterno', 'apellido_materno'] verbose_name = 'Persona' verbose_name_plural = 'Personas' class aplicacion ( catalogo ): url = models.URLField( help_text = 'Dominio de la aplicación') responsable = models.ForeignKey(User, help_text = 'Persona quien manejara los permisos de acceso' ) consumer_key = models.CharField(max_length = 128, help_text = 'Llave de acceso' ) consumer_secret = models.CharField(max_length = 128, help_text = 'Llave de secreta' ) consumer_enc_method = models.CharField( choices=enc_method, max_length=15, help_text= 'Metodo de encriptamiento', default='default') esquema = models.FileField(upload_to='esquema', help_text='Esquema de permisos', blank = True) class Meta: verbose_name = 'aplicacion' verbose_name_plural = 'aplicaciones' aplicacion._meta.get_field('nombre').help_text = 'Nombre de la aplicación'