[Solucionado] Problemas con carrera "#"

Gente,
tenemos un problema “grave”.
En nuestra regional, la carrera Ing. Industrial se codifico con el cardinal (#) como codigo de carrera.
Estamos en version 2.9.0 y tenemos problemas con los alumnos de esta carrera. No pueden inscribirse a examen, no pueden ver su plan de estudio, no pueden realizar ninguna consulta asociada a su plan.
Suponemos que en alguna parte, esta filtrando el caracter #…
Les adjunto el log del error, para que nos ayuden, ya que comienzan las inscripciones a examenes y no sabemos como solucionar esto.
Hasta la versión 2.7.0 inclusive no tuvimos nunca este problema.
Espero sus respuestas.

Marcela Vera


20150623_181745___5466.txt (17.6 KB)

Puede ser que en algunos filtros donde se ingresaba el codigo de carrera se estaba validando que sea de tipo alfanumerico con lo cual no estaba permitiendo ingresar estos otros caracteres.
Esto se esta actualizando para la version 2.9.1

Veremos si es necesario ajustar esto con un parche para la version 2.9.0 asi pueden seguir adelante. Los mantenemos en contacto.

Alejandro,
tenemos cierta urgencia con esto, ya que mañana miércoles 24/06 comienza la inscripción a exámenes, y tenemos mas de 1.000 alumnos de Ingeniería Industrial en condiciones de rendir materias.
Saludos.

Marcela Vera

Hola Marcela, acabamos de generar un caso como el que reportan ustedes. Con caracteres especiales en código de carrera, materia, legajo del alumno, turno de examen, etc. Pudimos realizar el proceso de inscripción a exámenes tanto desde gestión como desde 3w. En el ambiente del 3w, utilicé las fuentes del colab de su institución. La inscripción a exámenes fue probada tanto para Regulares como Libres
Te adjunto las imagenes de la prueba
Desde gestión también tienen problemas para la inscripción a exámenes?


insc_examenes_caract_esp.png

insc_examenes_caract_esp.png

comprobante_insc.png

comprobante_insc.png

Hola,
Desde Gestión no hemos tenido ningun tipo de problemas para inscribir a los alumnos. En 3w, directamente no muestra ninguna materia de la carrera # , que vemos en Gestión que el alumno tiene regulares y en condiciones de rendir, para que seleccione para inscribirse a examen…
Ante cualquier consulta en 3W si el alumno selecciona la carrera de Industrial, la pantalla queda en blanco.
¿que seguimos mirando?
Saludos.

Marcela Vera

Marcela, el error : ‘’ PERSONA: Error interno. La carrera activa: no esta entre las carreras del alumno’’
Sale del php: /modelo/entidades/persona.php, función: set_carrera_activa
Si podés hacé un debug de las variables $id, y el valor de $this->get_carreras().
Por lo que veo en el log, $id está vacía?

También ver valores de la función: get_id_carrera_activa, del mismo php.
Qué devuelve: kernel::sesion()->get(‘__persona_carrera’); y qué devuelve: $this->get_carrera_defecto().

Cuando el alumno ingresa al sistema lo hace a traves de una carrera, queda en variables de sesion sus datos, sera alli que esa carrera con numeral en el codigo (codigo = #) al setear ese codigo de carrera en la session se este seteando en nulo o string vacío y es que a partir de alli no funciona nada en el sistema para los alumnos de esa carrera?

En que S.O tienen instalado el sistema? Será problema del encoding?

Gente,
lo que notamos es que en algún momento “escapa” o blanquea el carácter #, porque queda vacío cuando se selecciona. El alumno ingresa con una carrera, la primera a la que se inscribió, sin problemas, pero cuando selecciona la carrera # , no funciona nada mas.
El sistema esta instalado sobre un Debian 7.
Saludos

Marcela Vera

Probaremos este caso ingresando por otra carrera y luego cambiando a la del problema y veremos que pasa…

Buenas,

En /modelo/entidades/persona.php, función: set_carrera_activa el $id está vacío y el arreglo de carreras está OK.
En siu\operaciones\acceso\controlador->accion__cambiar_carrera si tiro un var_dump($_GET);exit; antes de $carrera = $this… me devuelve array(3) { [“__o”]=> string(6) “acceso” [“__a”]=> string(15) “cambiar_carrera” [“id”]=> string(0) “” } por lo que acá llega vacío.

Sigo debugueando, donde puede estar limpiando el GET?

Aclaro, la carrera tiene el simbolo # solamente, no es Industrial# o algo asi, solo el simbolo.

Si, lo vimos en el archivo de log que enviaste al comienzo.

Probando con una url codificada funciona, es decir, la url http://localhost/v290/acceso/cambiar_carrera?id=[b]#[/b]&op=inicio_alumno no funciona pero http://localhost/v290/acceso/cambiar_carrera?id=[b]%23[/b]&op=inicio_alumno si funciona.
Donde se puede modificar o agregar un codificador para la url? o que deberíamos tocar?
Gracias

Modifiqué en src\siu\www\js\guarani.js lo siguiente:
$(‘#js-select-carreras’).change(function() {
var carrera = $(this).val();
window.location.replace(url_cambio_carrera + “?id=” + encodeURIComponent(carrera) + “&op=” + kernel_config.op_actual);

Con eso soluciono el selector de carreras. Donde más se puede estar enviando el id de carrera por get? al loguearse?

Si esa sería la solución. Estamos revisando el sistema y pareciera que no se pasa en ningun otro lado por get. Si encontramos algo les avisaremos.

Nicolás, haciendo una revisión del código encontré estos lugares donde se levanta el id de carrera por get:

operaciones/planes_estudio/controlador.php

  • accion__cargar_plan_estudio
  • accion__generar_pdf
  • accion__buscar_planes
  • accion__buscar_versiones

operaciones/actas/controlador.php

  • accion__evaluaciones

operaciones/notas_cursada/controlador.php

  • accion__ficha_alumno

operaciones/fecha_examen/controlador.php

  • accion__buscar_planes (acá lo pasa hasheado el código, no deberían tener problemas)
  • accion__buscar_materias (ídem)

operaciones/notas_examen/controlador

  • accion__ficha_alumno

operaciones/acceso/controlador (ya mencionado anteriormente)

  • accion__cambiar_carrera

En todos los casos, el validador es de tipo texto.
Deberían probar estas acciones de cada operación, y en caso de tener el mismo problema, aplicar la solución que postearon en el lugar donde arman esas urls.

Probamos todas las acciones que muestran y están funcionando. Vamos a tenerlas en cuenta por si surge algún problema.

Muchas gracias.

Encontramos un problema en la consulta de fecha de examen. Las materias de la carrera # tambien empiezan con #.
Cuando utilizamos el filtro nos manda a la url “http://localhost/v290/acceso/login?ref=http://10.1.1.44/v290/[b]7001[/b]&formulario_filtro[fecha_desde]=23/06/2015&formulario_filtro[fecha_hasta]=30/06/2015&formulario_filtro[tipo_mesa]=?co=1
donde la materia que se quiere consultar es la #7001.
Hay que tocar en pagelet_filtro.js no?

Gracias

Hola Nicolás, en el caso de fecha de examen, efectivamente la url de la acción filtrar se arma en operaciones/fecha_examen/filtro/pagelet_filtro.js en la función ‘filtrar’.
Si te fijás, está pasando los filtros serializados, debería quedar algo así:


 kernel.ajax.load(info.url_buscar + '?' + encodeURIComponent($filtro.serialize()), id, {
            historia: true,
            type: 'get',
            show_loading: true,
            forzar_cambio_op: true
        });

Probalo y avisanos si funcionó.

Ahora voy a relevar donde se manda por url el código de materia y también plan y te paso el listado. Tienen algún identificador más con caracteres especiales?

Hola,
Tenemos otra carrera cuyo código comienza con “&” y las materias de esa carrera tambien comienzan con igual símbolo.
Saludos

Marcela Vera

Si vimos en el log que enviaste al principio que tenien una carrera con codigo que empieza con &.