diff --git a/cosiap_api/solicitudes/views.py b/cosiap_api/solicitudes/views.py index ae63911480f7f320ba9b7f9a7e908708fa364be8..842d86edd014761c2b28606d0a44ca0bf0f23b1a 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 0000000000000000000000000000000000000000..b69441713ed1f53935ec875102520eb3b5bae561 --- /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 81c0be3aa441335caf7c8f74518fa66cd58c995c..53d21941d5a0ae62ccf5023700c5e170a1a62909 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 99c061cb3bc29baadccdb02fb9976337af44ffd5..5ad3124508f01f7020986d501d362eb9ce442f35 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 aa272b7255e6cd7581fdbc106d37a42db0280892..663be533d4257424483c79067d344142b5a8bd31 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 8428744c14e25cc7231cdb7b3e5dd80a39bcf69f..a976547fb8a595e38738f66744dd2703bd8b9865 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]); };