sistemas:suap:edu:importaralunos

Settings.py

ACADEMICO = {}
ACADEMICO['SISTEMA'] = 'q_academico'
ACADEMICO['DATABASE_NAME'] = 'SISTEMA_ACADEMICO'
ACADEMICO['DATABASE_USER'] = 'consultasuap'
ACADEMICO['DATABASE_PASSWORD'] = '<SENHA>'
ACADEMICO['DATABASE_HOST'] = 'bdacademico.ifce.edu.br:1433'

Instituições

No Q-Acadêmico:

SELECT
cod_instituicao AS codigo,
desc_instituicao AS nome,
sigla_instituicao AS sigla
FROM
dbo.INSTITUICOES
ORDER BY
cod_instituicao;
codigonomesigla
1CAMPUS FORTALEZAIFCE-FORTALEZA
2CAMPUS CEDROIFCE-CEDRO
3CAMPUS JUAZEIRO DO NORTEIFCE-JUAZEIRO
12CAMPUS MARACANAÚIFCE-MARACANAÚ
13CAMPUS QUIXADÁIFCE-QUIXADÁ
14CAMPUS SOBRALIFCE-SOBRAL
24CAMPUS LIMOEIRO DO NORTEIFCE-LIMOEIRO
25CAMPUS IGUATUIFCE-IGUATU
26CAMPUS CRATOIFCE CRATO
47CAMPUS CANINDÉIFCE-CANINDÉ
67CAMPUS ACARAÚIFCE-ACARAÚ
68CAMPUS TAUÁIFCE-TAUÁ
69CAMPUS CRATEÚSIFCE-CRATEÚS
77CAMPUS TIANGUÁIFCE-TIANGUÁ
87CAMPUS ARACATIIFCE-ARACATI
97CAMPUS BATURITÉIFCE-BATURITÉ
107CAMPUS JAGUARIBEIFCE-JAGUARIBE
108CAMPUS MORADA NOVAIFCE-MORADA
109CAMPUS TABULEIRO DO NORTEIFCE-TABULEIRO
110CAMPUS UBAJARAIFCE-UBAJARA
111CAMPUS CAUCAIAIFCE-CAUCAIA
112CAMPUS CAMOCIMIFCE-CAMOCIM
113CAMPUS UMIRIMIFCE-UMIRIM
124REITORIAIFCE-REITORIA
125CAMPUS GUARAMIRANGAIFCE-GUARAMIRANGA
145CAMPUS JAGUARUANAIFCE-JAGUARUANA
155CAMPUS ITAPIPOCAIFCE-ITAPIPOCA
176CAMPUS PECÉMIFCE-PECÉM
197CAMPUS PARACURUIFCE-PARACURU
207CAMPUS BOA VIAGEMIFCE-BOA VIAGEM

Modalidade CURSOS

No Q-Acadêmico:

select * from SITUACOES_TABELAS where NOME_TABELA = 'CURSOS'
AND 
NOME_COLUNA = 'MODALIDADE_CURSO';
NOME_TABELANOME_COLUNAVALORDESCRICAO
CURSOSMODALIDADE_CURSO0Integrado
CURSOSMODALIDADE_CURSO1Concomitante
CURSOSMODALIDADE_CURSO2Subsequente
CURSOSMODALIDADE_CURSO3Bacharelado
CURSOSMODALIDADE_CURSO4Tecnologia
CURSOSMODALIDADE_CURSO5Licenciatura
CURSOSMODALIDADE_CURSO8Aperfeiçoamento
CURSOSMODALIDADE_CURSO9Especialização
CURSOSMODALIDADE_CURSO10Residência Médica
CURSOSMODALIDADE_CURSO11Mestrado
CURSOSMODALIDADE_CURSO12Mestrado Profissional
CURSOSMODALIDADE_CURSO13Doutorado
CURSOSMODALIDADE_CURSO14Pós-Doutorado
CURSOSMODALIDADE_CURSO15Propedêutico
CURSOSMODALIDADE_CURSO16Fic
SELECT
 c.cod_curso AS codigo,
 c.desc_curso AS nome,
 c.cod_curso_matricula AS cod_turma,
 c.cod_instituicao AS instituicao,
 c.cod_curso_habilitado AS curso_habilitado,
 c.desc_historico AS descricao_historico,
 c.autorizacao AS autorizacao,
 c.reconhecimento AS reconhecimento,
   (select top 1 m.n_periodos from matrizes_curriculares m where m.cod_curso = c.cod_curso order by cod_matriz_curricular desc) AS numero_periodos,
 c.dt_inicio AS data_inicio,
 c.exige_enade AS exige_enade,
 c.modalidade_curso as modalidade_curso
 FROM cursos c
 LEFT JOIN turnos t ON c.COD_TURNO = t.COD_TURNO
 where c.cod_instituicao <=124
 ORDER BY c.desc_curso;

https://gist.github.com/rodrigosantosbr/aacbc01749318b9093f8aa33a9f55987

Passo 1

Realizar a consulta para verificar se há algum aluno em algum curso onde este curso está sem uma diretoria ligada a ele. segue o código para saber o retorno do valor diretoria_id:

select p.nome, pf.cpf, ea.matricula, ec.descricao, ec.descricao_historico, ec.diretoria_id    
from edu_aluno ea, edu_cursocampus ec, pessoa_fisica pf, pessoa p
where p.id = pf.pessoa_ptr_id
and   pf.pessoa_ptr_id  = ea.pessoa_fisica_id
and   ea.curso_campus_id = ec.id
and   diretoria_id is null

Passo 2

Realizar a execução por ordem obrigatoriamente decrescente dos seguintes scripts.

python manage.py edu_importar_dados 2016
python manage.py edu_importar_dados 2015
python manage.py edu_importar_dados 2014
python manage.py edu_importar_dados 2013

Possíveis erros encontrados

Chave do erro Traceback Solução
KeyError: 4770
Traceback (most recent call last): 
  File "/opt/suap/djtools/management/commands/__init__.py", 
    line 33, in execute super(BaseCommandPlus, self).execute(args,options) 
  ...
  File "/opt/suap/edu/management/commands/edu_importar_dados.py", 
alunos_criados, alunos_atualizados = dao.importar_alunos(
                prefixo_matricula=prefixo_matricula,verbose=verbose) 
  File "/opt/suap/edu/q_academico.py", line 412, in importar_alunos 
    curso_campus = cache_cursos[str(m['curso_codigo'])].id, 
KeyError: '4770' Command edu_importar_dados FAILED
Erro indicando que o curso está no Q-Acadêmico mas não está no SUAP, é necessário fazer a importação da estrutura antes dos alunos. No arquivo edu_importar_dados.py. comentar da linha 31(alunos_criados...) até a 42 (historico.save()...) e descomentar da linha 25 (dao.importar_diretorias()) até a linha 29 (dao.importar_polos_ead...) . Ao término da operação desfazer as ações de comentários indicada nesta solução alterando para o estado anterior
KeyError: 'nome'
Traceback (most recent call last):
  File "/opt/suap/djtools/management/commands/__init__.py", line 33, in execute
    super(BaseCommandPlus, self).execute(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", 
    line 338, in execute output = self.handle(*args, **options)
  ...
  File "/opt/suap/edu/management/commands/edu_importar_dados.py", 
    line 29, in handle dao.importar_polos_ead(verbose)
  File "/opt/suap/edu/q_academico.py", line 236, in importar_polos_ead
    print row['nome'].encode('latin-1')
KeyError: 'nome'
Linha de código com problema de encoding, foi necessário comentá-la pois é um comando apenas de print na linha 236. Por garantia a linha 209 também foi comentada pois possui o mesmo comando.
KeyError: 'modalidade.id'
 Traceback (most recent call last):
  File "/opt/suap/djtools/management/commands/__init__.py", line 33, in execute
    super(BaseCommandPlus, self).execute(*args, **options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/newrelic-2.64.0.48/newrelic/api/function_trace.py", line 104, in literal_wrapper
    return wrapped(*args, **kwargs)
  File "/opt/suap/edu/management/commands/edu_importar_dados.py", line 33, in handle
    alunos_criados, alunos_atualizados = dao.importar_alunos(prefixo_matricula=prefixo_matricula,verbose=verbose)
  File "/opt/suap/edu/q_academico.py", line 486, in importar_alunos
    novo_aluno.definir_ano_let_prev_conclusao()
  File "/opt/suap/edu/models.py", line 4648, in definir_ano_let_prev_conclusao
    modalidade_id = self.curso_campus.modalidade.id
AttributeError: 'NoneType' object has no attribute 'id'
 
Existem cursos sem modalidade, é preciso importar as modalidades dos cursos na tabela cursos do Qacademico.
  • sistemas/suap/edu/importaralunos.txt
  • Última modificação: 2021/08/25 10:33
  • (edição externa)