From a3b6ee8148e30c49d83a7f1fa1ff331e9a433395 Mon Sep 17 00:00:00 2001 From: AdalbertoCV <34152734@uaz.edu.mx> Date: Tue, 1 Oct 2024 12:48:30 -0600 Subject: [PATCH] Correccion de recarga de pagina en editarModalidad --- cosiap_api/dynamic_forms/models.py | 14 +---- .../solicitudes/respuestas_serializer.py | 4 +- .../common/utility/RenderElemento.jsx | 9 ++- .../modalidades/EditarModalidad.jsx | 51 +++++++++-------- .../src/components/modalidades/Modalidad.jsx | 55 ++++++++++++++++++- 5 files changed, 89 insertions(+), 44 deletions(-) diff --git a/cosiap_api/dynamic_forms/models.py b/cosiap_api/dynamic_forms/models.py index f1be9a8..7995782 100644 --- a/cosiap_api/dynamic_forms/models.py +++ b/cosiap_api/dynamic_forms/models.py @@ -380,20 +380,10 @@ class RCasillas(Respuesta): def clean(self): super().clean() respuesta = self.valor - noRespuesta = respuesta.count() == 0 - obligatorio = self.elemento.obligatorio - opcOtro = self.elemento.opcionOtro - otro = self.otro + noRespuesta = respuesta == None + obligatorio = self.elemento.obligatorio if (noRespuesta) and obligatorio: raise ValidationError("Este campo es Obligatorio.") - if obligatorio: - if not ((opcOtro and (otro and otro.strip())) or not opcOtro) and (respuesta and respuesta.filter(nombre='Otro').exists()): - raise ValidationError("Este campo es obligatorio") - if (otro and otro.strip()) and (respuesta and not respuesta.filter(nombre='Otro').exists()): - raise ValidationError("No esta seleccionada opcion Otro") - if respuesta and (respuesta.filter(nombre='Otro').exists() and not( otro and otro.strip())): - raise ValidationError("Si eliges 'otro', debes proporcionar más detalles en el campo 'otro'.") - class RDesplegable(Respuesta): valor = models.CharField(max_length=100,null=True, blank=True) diff --git a/cosiap_api/solicitudes/respuestas_serializer.py b/cosiap_api/solicitudes/respuestas_serializer.py index 3570e67..0367ffd 100644 --- a/cosiap_api/solicitudes/respuestas_serializer.py +++ b/cosiap_api/solicitudes/respuestas_serializer.py @@ -110,8 +110,8 @@ class RespuestaSerializer(serializers.Serializer): return respuesta def update(self, instance, validated_data): - valor_texto = validated_data.get('valor_texto', instance.valor_texto) - valor_file = validated_data.get('valor_file', instance.valor_file) + valor_texto = validated_data.get('valor_texto', instance.valor) + valor_file = validated_data.get('valor_file', instance.valor) otro = validated_data.get('otro', instance.otro) # Determina el nuevo valor diff --git a/cosiap_frontend/src/components/common/utility/RenderElemento.jsx b/cosiap_frontend/src/components/common/utility/RenderElemento.jsx index a7c5c55..62ef2d1 100644 --- a/cosiap_frontend/src/components/common/utility/RenderElemento.jsx +++ b/cosiap_frontend/src/components/common/utility/RenderElemento.jsx @@ -1,13 +1,15 @@ import '@/components/modalidades/Modalidad.css' -export const renderElemento = (seccionId, elemento, handleInputChange) => { +export const renderElemento = (seccionId, elemento, handleInputChange, handleCheckboxChange) => { const { tipo, opciones, id, nombre } = elemento; const handleChange = (e) => { const valor = e.target.value; + console.log(`Valor seleccionado: ${valor}`); handleInputChange(seccionId, id, valor); }; + switch (tipo) { case "texto_corto": return ( @@ -48,9 +50,6 @@ export const renderElemento = (seccionId, elemento, handleInputChange) => { case "desplegable": return (