Projeto

Geral

Perfil

IBL #1309

EAP #1771: SIGAA - Implantação Total

EAP #895: Módulo Ensino Fundamental

Acesso de docente associa o mesmo ao nível Técnico, e não localiza calendário acadêmico do CAP (Fundamental/Médio)

Adicionado por BRUNO CHAVES DE FREITAS mais de 7 anos atrás. Atualizado mais de 7 anos atrás.

Situação:
Concluída
Prioridade:
4. Normal
Atribuído para:
Início:
10/09/2018
Data prevista:
11/09/2018
% Terminado:

100%

Tempo estimado:
4.00 h
BuzzValue:
1

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 FREITASmais 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 FREITASmais 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 FREITASmais 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 FREITASmais 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 FREITASmais de 7 anos

  • % Terminado alterado de 0 para 50

#6 Atualizado por BRUNO CHAVES DE FREITASmais 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 FREITASmais de 7 anos

  • % Terminado alterado de 50 para 100
  • Situação alterado de Em andamento para Concluída

Exportar para Atom PDF