====== Settings.py ======
ACADEMICO = {}
ACADEMICO['SISTEMA'] = 'q_academico'
ACADEMICO['DATABASE_NAME'] = 'SISTEMA_ACADEMICO'
ACADEMICO['DATABASE_USER'] = 'consultasuap'
ACADEMICO['DATABASE_PASSWORD'] = ''
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;
^codigo^nome^sigla^
|1|CAMPUS FORTALEZA|IFCE-FORTALEZA|
|2|CAMPUS CEDRO|IFCE-CEDRO|
|3|CAMPUS JUAZEIRO DO NORTE|IFCE-JUAZEIRO|
|12|CAMPUS MARACANAÚ|IFCE-MARACANAÚ|
|13|CAMPUS QUIXADÁ|IFCE-QUIXADÁ|
|14|CAMPUS SOBRAL|IFCE-SOBRAL|
|24|CAMPUS LIMOEIRO DO NORTE|IFCE-LIMOEIRO|
|25|CAMPUS IGUATU|IFCE-IGUATU|
|26|CAMPUS CRATO|IFCE CRATO|
|47|CAMPUS CANINDÉ|IFCE-CANINDÉ|
|67|CAMPUS ACARAÚ|IFCE-ACARAÚ|
|68|CAMPUS TAUÁ|IFCE-TAUÁ|
|69|CAMPUS CRATEÚS|IFCE-CRATEÚS|
|77|CAMPUS TIANGUÁ|IFCE-TIANGUÁ|
|87|CAMPUS ARACATI|IFCE-ARACATI|
|97|CAMPUS BATURITÉ|IFCE-BATURITÉ|
|107|CAMPUS JAGUARIBE|IFCE-JAGUARIBE|
|108|CAMPUS MORADA NOVA|IFCE-MORADA|
|109|CAMPUS TABULEIRO DO NORTE|IFCE-TABULEIRO|
|110|CAMPUS UBAJARA|IFCE-UBAJARA|
|111|CAMPUS CAUCAIA|IFCE-CAUCAIA|
|112|CAMPUS CAMOCIM|IFCE-CAMOCIM|
|113|CAMPUS UMIRIM|IFCE-UMIRIM|
|124|REITORIA|IFCE-REITORIA|
|125|CAMPUS GUARAMIRANGA|IFCE-GUARAMIRANGA|
|145|CAMPUS JAGUARUANA|IFCE-JAGUARUANA|
|155|CAMPUS ITAPIPOCA|IFCE-ITAPIPOCA|
|176|CAMPUS PECÉM|IFCE-PECÉM|
|197|CAMPUS PARACURU|IFCE-PARACURU|
|207|CAMPUS BOA VIAGEM|IFCE-BOA VIAGEM|
----------------------------
====== Modalidade CURSOS ======
No Q-Acadêmico:
select * from SITUACOES_TABELAS where NOME_TABELA = 'CURSOS'
AND
NOME_COLUNA = 'MODALIDADE_CURSO';
^%%NOME_TABELA%%^%%NOME_COLUNA%%^%%VALOR%%^%%DESCRICAO%%^
|CURSOS|%%MODALIDADE_CURSO%%|0|Integrado|
|CURSOS|%%MODALIDADE_CURSO%%|1|Concomitante|
|CURSOS|%%MODALIDADE_CURSO%%|2|Subsequente|
|CURSOS|%%MODALIDADE_CURSO%%|3|Bacharelado|
|CURSOS|%%MODALIDADE_CURSO%%|4|Tecnologia|
|CURSOS|%%MODALIDADE_CURSO%%|5|Licenciatura|
|CURSOS|%%MODALIDADE_CURSO%%|8|Aperfeiçoamento|
|CURSOS|%%MODALIDADE_CURSO%%|9|Especialização|
|CURSOS|%%MODALIDADE_CURSO%%|10|Residência Médica|
|CURSOS|%%MODALIDADE_CURSO%%|11|Mestrado|
|CURSOS|%%MODALIDADE_CURSO%%|12|Mestrado Profissional|
|CURSOS|%%MODALIDADE_CURSO%%|13|Doutorado|
|CURSOS|%%MODALIDADE_CURSO%%|14|Pós-Doutorado|
|CURSOS|%%MODALIDADE_CURSO%%|15|Propedêutico|
|CURSOS|%%MODALIDADE_CURSO%%|16|Fic|
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.|