IBL #1309
100%
Descrição
Acesso de docente associa o mesmo ao nível Técnico, e não localiza calendário acadêmico do CAP (Fundamental/Médio).
Acessei a lista de docentes do cap (https://www.ufpe.br/cap/corpo-docente), escolhi o docente “Alfredo Matos Moura Junior” para testar. Acessei os dados do servidor em “SIGAdmin / Suporte Técnico / Consultar Servidores”, e em seguida fiz o primeiro acesso no SIGAA, autorizando o acesso em seguida com o usuário admin (Usuários /Permissão / Autorizar Usuários). O login/senha que criei foi “alfredo.matos/secret”.
Tentei logar com o usuário, houve erro de calendário acadêmico não encontrado, mesmo já existindo um calendário acadêmico para o COLÉGIO DE APLICAÇÃO / Nível Fundamental. Debugando percebi que o usuário estava sendo associado ao nível TÉCNICO:
// verifica cargo do docente
if (Cargo.DOCENTE_MEDIO_TECNICO.contains(usuario.getServidor().getCargo().getId())) {
//usuario.setNivelEnsino(NivelEnsino.TECNICO);
//dados.nivelDocente = String.valueOf(NivelEnsino.TECNICO);
}
if (Cargo.DOCENTE_SUPERIOR.contains(usuario.getServidor().getCargo().getId())) {
// graduacao = true;
usuario.setNivelEnsino(NivelEnsino.GRADUACAO);
dados.nivelDocente = String.valueOf(NivelEnsino.GRADUACAO);
}
if (dados.nivelDocente == null) {
dados.nivelDocente = String.valueOf(NivelEnsino.GRADUACAO);
usuario.setNivelEnsino(NivelEnsino.GRADUACAO);
}
}
O código proveniente do cargo do servidor é DOCENTE_ENSINO_BAS_TEC_TECNOLOGICO_EFETIVO_ = 707001;
E ele acaba sendo associado ao nível Técnico (‘T’). Daí na hora de logar o sistema não encontra o calendário acadêmico:
public static CalendarioAcademico getCalendarioByParametros(Integer ano, Integer periodo,Unidade unidade, Character nivel, ModalidadeEducacao modalidade,
ConvenioAcademico convenio, Curso curso, CurriculoAdapter curriculo) throws DAOException {
if (nivel == null && !isEmpty(curso))
nivel = curso.getNivel();
if( NivelEnsino.isAlgumNivelStricto(nivel) || (nivel == null && unidade.getTipoAcademica() == TipoUnidadeAcademica.PROGRAMA_POS) ) {
nivel = NivelEnsino.STRICTO;
if (ParametroHelper.getInstance().getParametroBoolean(ParametrosStrictoSensu.CALENDARIO_POR_CURSO) && curso != null)
nivel = curso.getNivel();
}
boolean isCalendarioPorModalidade = ParametroHelper.getInstance().getParametroBoolean(ParametrosGraduacao.CALENDARIO_POR_MODALIDADE_ENSINO);
if (modalidade == null && !isEmpty(curso) && curso.isADistancia())
modalidade = curso.getModalidadeEducacao();
if(!isCalendarioPorModalidade)
modalidade = new ModalidadeEducacao(ModalidadeEducacao.PRESENCIAL);
if (convenio == null && !isEmpty(curso))
convenio = curso.getConvenio();
if (NivelEnsino.isAlgumNivelStricto(nivel) && !ParametroHelper.getInstance().getParametroBoolean(ParametrosStrictoSensu.CALENDARIO_POR_CURSO))
curso = null;
CalendarioAcademicoDao cdao = getDAO(CalendarioAcademicoDao.class);
try {
CalendarioAcademico cal = null;
cdao.setOpenSessionInView(false);
if (isNotEmpty(curriculo)) {
cal = cdao.findByCurriculo(ano, periodo, curso, nivel, curriculo);
if (cal != null) return cal;
}
if (!isEmpty(curso))
cal = cdao.findByCurso(ano, periodo, curso, nivel);
if (cal == null) {
if (nivel != null && nivel.charValue() == NivelEnsino.GRADUACAO) {
if ( modalidade != null && modalidade.isADistancia()) {
// carrega um geral do EAD
cal = cdao.findByModalidade(ano, periodo, UNIDADE_DIREITO_GLOBAL, nivel, modalidade);
} else if ( convenio != null ) {
cal = cdao.findByConvenio(ano, periodo, UNIDADE_DIREITO_GLOBAL, nivel, convenio);
}
if (cal == null)
cal = cdao.findByAnoPeriodo(ano, periodo, UNIDADE_DIREITO_GLOBAL.getId(), NivelEnsino.GRADUACAO);
} else {
// tenta da gestora, se não der carrega um geral do nível de ensino.
if (unidade != null) {
cal = cdao.findByAnoPeriodo(ano, periodo, unidade.getId(), nivel);
if ( cal == null )
cal = cdao.findByAnoPeriodoModalidade(ano, periodo, unidade.getId(), nivel, modalidade);
}
if (cal == null) {
if (NivelEnsino.isAlgumNivelStricto(nivel))
nivel = NivelEnsino.STRICTO;
if(unidade != null)
cal = cdao.findByAnoPeriodo(ano, periodo, unidade.getId(), nivel);
if(cal == null){
cal = cdao.findByAnoPeriodo(ano, periodo, UNIDADE_DIREITO_GLOBAL.getId(), nivel);
}
if(cal == null && nivel.equals(NivelEnsino.RESIDENCIA)){
/** Busca relacionado a unidade global por modalidade. */
cal = cdao.findByAnoPeriodoModalidade(ano, periodo, UNIDADE_DIREITO_GLOBAL.getId(), nivel, modalidade);
}
}
}
// se ainda assim estiver nulo, carrega os parâmetros da graduação
// (acontece enquanto existirem alunos sem gestora acadêmica)
if (cal == null)
cal = cdao.findByAnoPeriodo(ano, periodo, UNIDADE_DIREITO_GLOBAL.getId(), NivelEnsino.GRADUACAO);
// se ainda assim estiver nulo, busca um calendário de qualquer nível de ensino que esteja ativo. Isso acontece quando não houver calendário de graduação ativo.
if (cal == null)
cal = cdao.findByParametros(ano, periodo, new Unidade(UNIDADE_DIREITO_GLOBAL.getId()), null, null, null, null, null);
}
return cal;
} finally {
cdao.close();
}
Histórico
#1 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- Tempo estimado ajustado para 4.00 h
- Atribuído para ajustado para BRUNO CHAVES DE FREITAS
- Situação alterado de Nova para Em andamento
- Data prevista ajustado para 11/09/2018
#2 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Questionei à UFRN como lidam com isso, pois lá eles têm o técnico e o fundamental.
#3 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
O André da UFRN ainda está analisando a situação.
Enquanto isso, eu tive a ideia de setar o nível Básico (B) na classe AcessoServidor caso o usuário tenha o cargo "Prof. Ens. Bas. Tec. Tecnologico". Para isso, tive que cadastrar um calendário também vinculado ao nível Básico, foi preciso customizar o formulário de cadastro de calendário para isso ser possível:
+++ b/SIGAA/geral/br/ufrn/sigaa/jsf/CalendarioMBean.java
@@ -1375,6 +1375,7 @@ public class CalendarioMBean extends SigaaAbstractController<CalendarioAcademico
new SelectItem(NivelEnsino.FUNDAMENTAL + "", "FUNDAMENTAL"),
new SelectItem(NivelEnsino.MEDIO + "", "MÉDIO"),
new SelectItem(NivelEnsino.TECNICO + "", "TÉCNICO"),
+ new SelectItem(NivelEnsino.BASICO + "", "BÁSICO (FUND/MÉD/TÉC.)"),
new SelectItem(NivelEnsino.INTEGRADO + "", "INTEGRADO"),
new SelectItem(NivelEnsino.GRADUACAO + "", "GRADUAÇÃO"),
new SelectItem(NivelEnsino.LATO + "", "LATO-SENSU"),
Mudanças na branch ufpe_sprint05.
Testei no sistema e consegui logar com alfredo.matos.
#4 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Contudo, quando tentei clicar em uma turma para acessar o Portal Docente, deu falta de parâmetro 3_1_74. Pegamos o parâmetro do banco de referência:
INSERT INTO comum.parametro (nome, descricao, valor, id_subsistema, id_sistema, codigo, tempo_maximo, tipo, padrao, valor_minimo, valor_maximo) VALUES ('CHAT_IMPLEMENTACAO_PADRAO', 'Classe de implementação do serviço de chat nos sistemas (deve ser uma implementação da interface br.ufrn.arq.chat.GerenciadorChat)', 'br.ufrn.arq.chat.GerenciadorChatXMPP', NULL, 3, '3_1_74', NULL, NULL, '', NULL, NULL);
Script salvo na pasta NTIDocs/Projetos/SIGs/Misc/Scripts SIGAA.
#5 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- % Terminado alterado de 0 para 50
#6 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Segui outra alternativa em virtude das dependências:
- Parametrizei o código em AcessoServidor com um novo parâmetro UTILIZA_NIVEL_TECNICO, caso seja true o sistema se comporta do mesmo jeito que na UFRN, ou seja, utiliza o nível Técnico. Caso false, seta o nível Médio para o servidor.
Desta forma fica mais simples e mais fácil de fazer futuros merges, além de menos arriscado. As mudanças estão na ufpe_sprint05.
O script para o novo parâmetro foi salvo na pasta SIGS/MISC para rodar em produção:
--Chamado #1309
--Customização para setar o nível MÉDIO ao invés de Técnico para docentes com cargo "Prof. Ens. Bás. Médio e Tecn", feito através da classe AcessoServidor.java
INSERT INTO comum.parametro (nome, descricao, valor, id_subsistema, id_sistema, codigo, tempo_maximo, tipo, padrao, valor_minimo, valor_maximo)
VALUES ('UTILIZA_NIVEL_TECNICO', 'Indicativo se a instituição oferece o ensino técnico.', 'false', NULL, 2, '2_10300_4', NULL, NULL, '', NULL, NULL);
#7 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- % Terminado alterado de 50 para 100
- Situação alterado de Em andamento para Concluída