diff --git a/cosiap_api/dynamic_forms/models.py b/cosiap_api/dynamic_forms/models.py index f1be9a835ee1afaad6a0093a6d1aae50191cb0dc..799578213be70bb066bd5efc31e610668b35d6d5 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 3570e678b1d963d14921bbf4b8edcb88f851a9fb..0367ffdc00fd6bc5b7be770439e2621cf5f5de34 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 a7c5c55aa1a75b20ef269903ae36c029cf7cdf5f..62ef2d121f95059abd9db2b3c1acbd5cd059d175 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 (