From fbc62adbe5488033edf2c788adc46c09f72fe9b0 Mon Sep 17 00:00:00 2001 From: AdalbertoCV <34152734@uaz.edu.mx> Date: Tue, 24 Sep 2024 16:17:34 -0600 Subject: [PATCH] Campo sexo agregado al solicitante --- cosiap_api/solicitudes/views.py | 8 ++++++-- .../migrations/0004_campo_sexo_solicitante.py | 19 +++++++++++++++++++ cosiap_api/users/models.py | 7 ++++++- cosiap_api/users/serializers.py | 5 +++-- cosiap_frontend/src/api.js | 2 +- .../modalidades/EditarModalidad.jsx | 15 +++++++++++++++ 6 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 cosiap_api/users/migrations/0004_campo_sexo_solicitante.py diff --git a/cosiap_api/solicitudes/views.py b/cosiap_api/solicitudes/views.py index ae63911..842d86e 100644 --- a/cosiap_api/solicitudes/views.py +++ b/cosiap_api/solicitudes/views.py @@ -64,8 +64,12 @@ class SolicitarAPIView(BasePermissionAPIView): data = {} try: - # Obtener el solicitante asociado al usuario autenticado - solicitante = Solicitante.objects.get(id=request.user.id) + if request.user.is_staff: + solicitante = Solicitante( + nombre = 'temporal_user' + ) + else: + solicitante = Solicitante.objects.get(id=request.user.id) # Obtener el id de la modalidad desde los parámetros de la solicitud modalidad_id = request.query_params.get('modalidad_id', None) diff --git a/cosiap_api/users/migrations/0004_campo_sexo_solicitante.py b/cosiap_api/users/migrations/0004_campo_sexo_solicitante.py new file mode 100644 index 0000000..b694417 --- /dev/null +++ b/cosiap_api/users/migrations/0004_campo_sexo_solicitante.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0.8 on 2024-09-24 22:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0003_solicitante_blank_true'), + ] + + operations = [ + migrations.AddField( + model_name='solicitante', + name='sexo', + field=models.CharField(choices=[('M', 'Masculino'), ('F', 'Femenino'), ('O', 'Otro')], default='M', max_length=1, verbose_name='Sexo'), + preserve_default=False, + ), + ] diff --git a/cosiap_api/users/models.py b/cosiap_api/users/models.py index 81c0be3..53d2194 100644 --- a/cosiap_api/users/models.py +++ b/cosiap_api/users/models.py @@ -127,7 +127,11 @@ class Usuario(AbstractBaseUser, PermissionsMixin): class Meta: ordering = ['-is_superuser', 'id' ] - +SEXO_CHOICES = [ + ("M", "Masculino"), + ("F", "Femenino"), + ("O", "Otro") +] class Solicitante(Usuario): ''' Calse para representar al solicitante (Hereda de Usuario) @@ -143,6 +147,7 @@ class Solicitante(Usuario): telefono = models.CharField(verbose_name='Teléfono', max_length=10, null=True, blank=True) # campo para el RFC, longitud de 13 RFC = models.CharField(verbose_name='RFC', max_length=13, validators=[RegexValidator(RFC_REGEX,'Debe ser un RFC válido.')], unique=True, null=True, blank=True) + sexo = models.CharField(verbose_name="Sexo", max_length=1, choices=SEXO_CHOICES) # campo para la dirección direccion = models.CharField(verbose_name='Dirección', max_length=255, null=True, blank=True) # campo para el código postal, longitud 5 diff --git a/cosiap_api/users/serializers.py b/cosiap_api/users/serializers.py index 99c061c..5ad3124 100644 --- a/cosiap_api/users/serializers.py +++ b/cosiap_api/users/serializers.py @@ -123,9 +123,9 @@ class SolicitanteSerializer(serializers.ModelSerializer): # indicamos el modelo a utilziar model = Solicitante # indicamos los campos que debe ingresar el usuario - fields = ['ap_paterno', 'ap_materno', 'telefono', 'RFC', 'direccion', 'codigo_postal', 'municipio', 'poblacion', 'INE'] + fields = ['ap_paterno', 'ap_materno', 'telefono', 'RFC','sexo', 'direccion', 'codigo_postal', 'municipio', 'poblacion', 'INE'] # Agregamos validadores para asegurar que los campos puedan estar vacíos - extra_kwargs = {'ap_paterno': {'required': False}, 'ap_materno': {'required': False},'telefono': {'required': False},'RFC': {'required': False}, + extra_kwargs = {'ap_paterno': {'required': False}, 'ap_materno': {'required': False},'telefono': {'required': False},'RFC': {'required': False}, 'sexo':{'required':False}, 'direccion': {'required': False},'codigo_postal': {'required': False},'municipio': {'required': False},'poblacion': {'required': False}, 'INE': {'required': False} } @@ -149,6 +149,7 @@ class SolicitanteSerializer(serializers.ModelSerializer): instance.ap_paterno = validated_data.get('ap_paterno', instance.ap_paterno) instance.ap_materno = validated_data.get('ap_materno', instance.ap_materno) instance.telefono = validated_data.get('telefono', instance.telefono) + instance.sexo = validated_data.get('sexo', instance.sexo) instance.RFC = validated_data.get('RFC', instance.RFC) instance.direccion = validated_data.get('direccion', instance.direccion) instance.codigo_postal = validated_data.get('codigo_postal', instance.codigo_postal) diff --git a/cosiap_frontend/src/api.js b/cosiap_frontend/src/api.js index aa272b7..663be53 100644 --- a/cosiap_frontend/src/api.js +++ b/cosiap_frontend/src/api.js @@ -113,7 +113,7 @@ const api = { getById: (id) => ax.get(`api/solicitudes/reportes/${id}`), }, solicitar:{ - get: () => ax.get('api/solicitudes/solicitar'), + get: (params) => ax.get('api/solicitudes/solicitar', {params}), post: (data) => ax.post('api/solicitudes/solicitar', data), update: (id,data) => ax.put(`api/solicitudes/solicitar/${id}`, data) } diff --git a/cosiap_frontend/src/components/modalidades/EditarModalidad.jsx b/cosiap_frontend/src/components/modalidades/EditarModalidad.jsx index 8428744..a976547 100644 --- a/cosiap_frontend/src/components/modalidades/EditarModalidad.jsx +++ b/cosiap_frontend/src/components/modalidades/EditarModalidad.jsx @@ -36,6 +36,21 @@ const EditModalidad = () => { fetchModalidad(); }, [id]); + // obtenemos la estructura del formulario asociado a la modalidad. + useEffect(() =>{ + const fetchFormulario = async () => { + console.log("Valor de id:", id); + try{ + const response = await api.solicitudes.solicitar.get({ modalidad_id: id }); + const FormData = response.data + console.log('Datos del formulario: ', FormData) + } catch (error){ + console.error("Error al obtener el formulario de la modalidad", error) + } + }; + fetchFormulario(); + }, [id]); + const handleImageChange = (e) => { setImagen(e.target.files[0]); }; -- GitLab