#encoding:utf-8 from django import * from django.forms import * from atencion_ciudadana.models import * from django.forms.fields import * from django.forms.widgets import * from django.forms import * from django import forms from django.forms.widgets import * import datetime from django.db import models tipoSexo = ( ('M', 'Masculino'), ('F', 'Femenino'), ) CHOICES=[ ('0','Web'), ('1','En Gira'), ('2','Fisicamente')] class SolicitudForm( ModelForm ): # solicitante = forms.ModelChoiceField( queryset = persona.objects.all() ) #fuente = forms.BooleanField(initial=False, required=False) origen_Solicitud = forms.ChoiceField(help_text='Seleccione si la solicitud fue recibida via en Gira o Fisicamente', required=False, choices=CHOICES, widget=forms.RadioSelect(), initial=0) class Meta: model = solicitud fields = ('solicitante', 'nombre', 'apellido_paterno', 'apellido_materno', 'sexo', 'fecha_nacimiento', 'localidad', 'curp', 'direccion', 'codigo_postal', 'identificacion', 'correo_electronico', 'telefono', 'celular', 'solicitud', 'dependencia', 'foto', 'origen_Solicitud' ) widgets = { 'nombre': TextInput(attrs={'placeholder': 'Escriba su nombre', 'class':'campo_curp'}), 'apellido_paterno': TextInput(attrs={'placeholder': 'Escriba su primer apellido', 'class':'campo_curp'}), 'apellido_materno': TextInput(attrs={'placeholder': 'Escriba su segundo apellido', 'class':'campo_curp'}), 'fecha_nacimiento': TextInput(attrs={'placeholder': 'Formato dd/mm/aaaa', 'class':'campo_curp'}), 'curp': TextInput(attrs={'placeholder': 'Clave Única de Registro de Población',}), 'codigo_postal': TextInput(attrs={'placeholder': 'Escriba el código postal'}), 'identificacion': TextInput(attrs={'placeholder': 'IFE: 13 dígitos o Licencia: 9 dígitos'}), 'sexo': Select(attrs={'class':'select_curp'}), 'localidad': Select(attrs={'class':'select_curp'}), 'correo_electronico': TextInput(attrs={'placeholder': 'Escriba su correo electrónico'}), 'telefono': TextInput(attrs={'placeholder': 'Escriba su número de teléfono fijo'}), 'celular': TextInput(attrs={'placeholder': 'Escriba su número de teléfono movil'}), } #validacion por formulario def clean(self): # instanciamos nuestro formulario en base a la clase cleaned_data = super(SolicitudForm, self).clean() # recuperamos campos especificos , en este caso el filtro de validacion origen_Solicitud = cleaned_data.get("origen_Solicitud") print origen_Solicitud # si el campo origen_Solicitud viene vacio, para diferenciar la validacion de tipo de captura #if origen_Solicitud == False: # recuperamos el campo de la dependencia dependencia = cleaned_data.get("dependencia") # si la dependencia no se selecciono if dependencia == None: # a la instancia clean especificamente en el attributo dependencia especificamos el error self._errors["dependencia"] = self.error_class([u"Debe seleccionar la dependencia"]) # limpiamos la dependencia de la instancia del cleaned_data["dependencia"] # como hay campos de tipo similar creamos un ciclo para reducir el codigo for campo in cleaned_data: # recuperamos el campo varcampo = cleaned_data.get(campo) #print campo # si el campo origen_Solicitud viene vacio, para diferenciar la validacion de tipo de captura if origen_Solicitud == '' or origen_Solicitud == '0': # agrupamos por tipo de objeto, en este caso Select if campo == 'sexo' or campo == 'localidad' or campo == 'dependencia': #print varcampo # si el campo no se selecciono if varcampo == None: # a la instancia clean en el atributo correspondiente especificamos el error self._errors[campo] = self.error_class([u"Debe seleccionar el %s" % campo] ) # aqui no se puede limpiar la instancia por que estamos dentro de un siclo dela misma, y al haber cambio de dimension manda error # del cleaned_data[campo] # agrupamos por tipo de objeto, en este caso Text if campo == 'solicitud' or campo == 'identificacion': #print varcampo #si el campo esta vacio if varcampo == '': # a la instancia clean en el atributo correspondiente especificamos el error self._errors[campo] = self.error_class([u"Debe escribir el %s" % campo.replace('_',' ')] ) # aqui no se puede limpiar la instancia por que estamos dentro de un siclo dela misma, y al haber cambio de dimension manda error # del cleaned_data[campo] # este grupo es validado la origen_Solicitud este vacia o no if campo == 'nombre' or campo == 'apellido_paterno' or campo == 'apellido_materno': #print varcampo #si el campo esta vacio if varcampo == '': # a la instancia clean en el atributo correspondiente especificamos el error self._errors[campo] = self.error_class([u"Debe escribir el %s" % campo.replace('_',' ')] ) # aqui no se puede limpiar la instancia por que estamos dentro de un siclo dela misma, y al haber cambio de dimension manda error # del cleaned_data[campo] return cleaned_data class AsignacionForm( ModelForm ): bandera = models.BooleanField(default=False, help_text="") class Meta: model = asignaciones fields = ('dependencia', 'nota') def clean(self): return self.cleaned_data class dependenciaform( ModelForm ): class Meta: model = dependencia fields = ('id','clave','nombre') def clean(self): return self.cleaned_data class lugarform( ModelForm ): class Meta: model = lugar fields = ['padre','nombre'] def clean(self): return self.cleaned_data class solicitanteform( ModelForm ): class Meta: model = persona fields = ('nombre', 'apellido_paterno', 'apellido_materno', 'sexo', 'fecha_nacimiento', 'curp', 'localidad', 'direccion', 'codigo_postal', 'identificacion', 'correo_electronico', 'telefono', 'celular') widgets = { 'nombre': TextInput(attrs={'placeholder': 'Escriba su nombre', 'class':'campo_curp'}), 'apellido_paterno': TextInput(attrs={'placeholder': 'Escriba su primer apellido', 'class':'campo_curp'}), 'apellido_materno': TextInput(attrs={'placeholder': 'Escriba su segundo apellido', 'class':'campo_curp'}), 'fecha_nacimiento': TextInput(attrs={'placeholder': 'Formato dd/mm/aaaa', 'class':'campo_curp'}), 'curp': TextInput(attrs={'placeholder': 'Clave Única de Registro de Población',}), 'codigo_postal': TextInput(attrs={'placeholder': 'Escriba el código postal'}), 'identificacion': TextInput(attrs={'placeholder': 'IFE: 13 dígitos o Licencia: 9 dígitos'}), 'sexo': Select(attrs={'class':'select_curp'}), 'localidad': Select(attrs={'class':'select_curp'}), 'correo_electronico': TextInput(attrs={'placeholder': 'Escriba su correo electrónico'}), 'telefono': TextInput(attrs={'placeholder': 'Escriba su número de teléfono fijo'}), 'celular': TextInput(attrs={'placeholder': 'Escriba su número de teléfono movil'}), } def clean(self): return self.cleaned_data