Error al dar de baja inscripcion a cursada (Autogestion)

Buenass,

Estamos con un problema extraño porque se da en producción pero no localmente. Los alumnos no se pueden dar de baja una inscripción a cursada. El mensaje de error es “Error al dar de baja inscripción a cursada”

El unico log que escribe algo es el de la app


================================================================================
=================================   ERRORES   ==================================
================================================================================

clase: SIU\Chulupi\ErrorKernelNotificaciones
mensaje: Error dando de baja tu inscripci�n
traza: [TRAZA]

---[ 0 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\controlador->finalizar_request_con_notificaciones
- file: /etc/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/controlador.php, linea 427
- param:
         0: Error dando de baja tu inscripci�n   1: Array
(
    [0] => Array
        (
            [mcuerpo] => Error al dar de baja la inscripci�n a cursada
            [mtipo] => E
        )

)

---[ 1 ]-----------------------------------------

- function: siu\operaciones\cursada\controlador->accion__baja_inicial
- file: /etc/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/controlador.php, linea 422

---[ 2 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\controlador->invocar_accion
- file: /etc/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/controlador.php, linea 154
- param:
         0: baja_inicial
---[ 3 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\controlador->procesar_accion
- file: /etc/autogestion/releases/20220303100218/src/siu/extension_kernel/controlador_g3w2.php, linea 91

---[ 4 ]-----------------------------------------

- function: siu\extension_kernel\controlador_g3w2->procesar_accion
- file: /etc/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/AccesoWeb.php, linea 107

---[ 5 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\AccesoWeb::procesar_request
- file: /etc/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/AccesoWeb.php, linea 25

---[ 6 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\AccesoWeb::procesar
- file: /etc/autogestion/releases/20220303100218/src/siu/www/index.php, linea 15


########################################################################################################################

--F<1>:E<1>:W<0>:T<0 s>:M<0 Mb>--

== FIN =============================================

El problema seguramente está aca


	function accion__baja()
	{
		$url_actividad = $this->validate_param('materia', 'post', validador::TIPO_ALPHANUM, array('allowempty' => true));
		$url_inscripcion = $this->validate_param('inscripcion', 'post', validador::TIPO_ALPHANUM);

		try {
			$resultado = $this->modelo()->evt__eliminar_inscripcion($url_actividad, $url_inscripcion);
			$this->guardar_id_cert_baja($url_inscripcion, $resultado[2]);
			$href = kernel::vinculador()->crear('cursada', 'comprobante_baja', array('baja' => $url_inscripcion));
			$link = kernel::traductor()->trans('link_baja_cursada', array('%1%' => $href));
			kernel::renderer()->add_to_ajax_response('mensaje_cert_baja', $resultado[0] . " " . $link);
			$pagelet = $this->vista()->pagelet('info_materia');
			$pagelet->set_estado_info(pagelet_info_materia::MATERIA_SELECCIONADA);
			$this->add_var('mensajes', $resultado['advertencias']);
			$this->add_pagelet_vars($url_actividad, $url_inscripcion);
			kernel::renderer()->add($this->vista()->pagelet('info_materia'));
		} catch (error_guarani $e) {
			kernel::renderer()->add_csrf($this->generar_csrf());
			$this->finalizar_request_con_notificaciones(kernel::traductor()->trans('error_baja_cursada'), $e->get_mensajes_usuario());
		}
	}

Pero lo raro es que la acción de inscribir que utiliza parámetros similares SÍ funciona.

Cualquier ayuda es bienvenida.
Gracias!

Hola Emiliano,

Podrías poner los logs en modo debug (‘nivel’ => log::NIVEL_DEBUG, en instalacion/config.php), volver a reproducir el error y nos volves a pasar los logs (adjunta el archivo completo que se genera).

El error lo da en accion__baja_inicial de src/siu/operaciones/cursada/controlador.php, se puede dar porque viaja mal algún valor desde el POST, falla en la validación del CSRF o en la eliminación de la inscripción (alguna query que da error). Con los logs en modo debug vamos a tener mas detalles del error.

saludos.
2

hola Leonel,
Configurando el loggeo de esa forma pudimos ver que se trataba de un error de permiso de usuario en la base de datos.
Ya esta solucionado.

Muchas gracias!

Hola buenos dias, ahora estamos con el mismo error, me podrias dar una pista de como corregiste el error en la base de datos.
De ante mano muchas gracias.
Saludos.

Hola Nahuel,

Puede que sea un permiso en el usuario de base de datos para ejecutar la función f_insc_cursada_eliminar de Postgres. El usuarios de base de datos esta en la sección accesos del archivo instalacion/config.php.

Para revisar si el usuario de Postgres tiene permisos en la función f_insc_cursada_eliminar podes usar la siguiente query:


SELECT proname, rolname
  FROM pg_proc pr,
       pg_type tp,
       pg_authid id
 WHERE proowner = id.oid
   AND tp.oid = pr.prorettype
   AND tp.typname <> 'trigger'
   AND pr.pronamespace IN (
       SELECT oid
         FROM pg_namespace
        WHERE nspname NOT LIKE 'pg_%'
          AND nspname != 'information_schema'
          AND proname = 'f_insc_cursada_eliminar'
);

Fuentes:
https://stackoverflow.com/questions/3021879/how-to-check-permissions-to-functions-under-psql-console
https://stackoverflow.com/questions/40759177/postgresql-show-all-the-privileges-for-a-concrete-user
https://linuxhint.com/check-postgres-user-privileges/

Si es posible envíame los logs y lo vemos.

saludos.
4