====== Atualização para IFRN/15.4 ======
===== Passo 1 =====
Dados gerais
^ ^ ^
|Branch Criada no IFCE|%%atualiza_suap_ifrnmaster2%%|
|Tag Base do IFRN |15.4|
|Data de início da atualização|15/01/2016|
|Data de fim da atualização|28/01/2016|
|Tag Criada ao Final|ifce6.0 (28/01/2016)|
|Tag Antes da atualização|ifce5.0.1 (15/01/2016)|
Pacotes (/opt/suap/deploy/requirements.txt)
^ PACOTE ^ VERSÃO ^ - ^ PACOTE ^ VERSÃO ^
| Django | 1.7.7 | - | six | 1.9.0 |
| django-ckeditor | 4.4.7 | - | django_extensions | 1.2.5 |
| django-localflavor | 1.0 | - | django_pagination | 1.0.7 |
| cython | 0.19.2 | - | feedparser | 5.1.3 |
| gunicorn | 18.0 | - | ipdb | 0.8 |
| mechanize | 0.2.5 | - | Pillow | 2.2.1 |
| psycopg2 | 2.5.1 | - | pypdf | 1.13 |
| pymssql | 2.0.1 | - | python-ldap | 2.3.13 |
| python-dateutil | ? | - | reportlab | 2.5 |
| suds | 0.4 | - | xlwt | 0.7.5 |
| xlrd | 0.9.2 | - | xlutils | 1.7.1 |
| simplejson | 3.3.1 | - | django-tables2 | 0.16.0 |
| django-tables2-reports | 0.0.10 | - | qrcode | 4.0.4 |
| pisa | 3.0.33 | - | docutils | 0.11 |
| sphinx | 1.2.2 | - | pycrypto | ? |
| pylint | ? | - | djangorestframework | 2.4.4 |
| django-rest-swagger | 0.2.0 | - | python-magic | ? |
-----------------------
===== Passo 2 =====
Criar a tag %%atualiza_suap_ifrnmaster2%%
git checkout -b atualiza_suap_ifrnmaster2
git remote add suapifrn http://gitlab.ifrn.edu.br/cosinf/suap.git
-----------------------
===== Passo 3 =====
Baixar as atualizações do IFRN
git fetch suapifrn
-----------------------
===== Passo 4 =====
Saída do fetch:
* [new branch] ajuste_data_referencia_rsc -> suapifrn/ajuste_data_referencia_rsc
* [new branch] ajuste_layout_carteira_funcional -> suapifrn/ajuste_layout_carteira_funcional
* [new branch] auditoria-cgu -> suapifrn/auditoria-cgu
* [new branch] dev_controle_papel -> suapifrn/dev_controle_papel
8b8aa84..dfcbbd0 dev_estagio_probatorio -> suapifrn/dev_estagio_probatorio
* [new branch] edu-ajuste-curso-campus -> suapifrn/edu-ajuste-curso-campus
* [new branch] edu-enem -> suapifrn/edu-enem
3f73456..b5a8712 edu-indicadores -> suapifrn/edu-indicadores
* [new branch] edu-master -> suapifrn/edu-master
cb2610b..4b1878d edu-minicursos -> suapifrn/edu-minicursos
f16957c..7e57b13 edu_atividades_docentes -> suapifrn/edu_atividades_docentes
88e5117..02d02fa financeiro-importacao -> suapifrn/financeiro-importacao
* [new branch] formato_valor_empenho -> suapifrn/formato_valor_empenho
* [new branch] frota_081215 -> suapifrn/frota_081215
4d1e06b..a4b15fe gt-patrimonio -> suapifrn/gt-patrimonio
* [new branch] i2146 -> suapifrn/i2146
c61d9a1..3164142 ir_dirf -> suapifrn/ir_dirf
3526330..79496ae layout -> suapifrn/layout
* [new branch] layout-saude -> suapifrn/layout-saude
29d06a7..d7c1bdf master -> suapifrn/master
* [new branch] move_arquivos -> suapifrn/move_arquivos
* [new branch] pesquisa_281215 -> suapifrn/pesquisa_281215
8039c5a..80e94fe plan_v2 -> suapifrn/plan_v2
4606aa2..323b61a processo_eletronico -> suapifrn/processo_eletronico
a869937..7c423c4 prog_tempo_servico -> suapifrn/prog_tempo_servico
* [new branch] projetos_recurso -> suapifrn/projetos_recurso
1467fc8..4295f89 rh_solicitacao_cracha -> suapifrn/rh_solicitacao_cracha
* [new branch] saude_avaliacao_atendimento -> suapifrn/saude_avaliacao_atendimento
* [new branch] sica_ifrn -> suapifrn/sica_ifrn
* [new branch] suap-autoenv -> suapifrn/suap-autoenv
* [new branch] suap-bugs -> suapifrn/suap-bugs
* [new branch] suap-gestao -> suapifrn/suap-gestao
* [new branch] test-suap -> suapifrn/test-suap
c547ce8..66829e1 unaccent -> suapifrn/unaccent
* [new tag] 16.1 -> 16.1
-----------------------
===== Passo 5 =====
Fazer o merge da tag IFRN/15.4 com a branch %%atualiza_suap_ifrnmaster2%% do IFCE e resolver os conflitos.
git merge 15.4
-----------------------
===== Passo 6 =====
Saída dos conflitos
eles estarão identificados no código como <<<<<<< HEAD e >>>>>>> 15.4
Mesclagem automática de suap/settings_base.py
CONFLITO (conteúdo): conflito de mesclagem em suap/settings_base.py
Mesclagem automática de rh/importador.py
Mesclagem automática de protocolo/models.py
Mesclagem automática de ponto/views.py
Mesclagem automática de patrimonio/views.py
Mesclagem automática de ldap_backend/utils.py
Mesclagem automática de frota/views.py
Mesclagem automática de frota/models.py
Mesclagem automática de frota/admin.py
Mesclagem automática de edu/q_academico.py
CONFLITO (modificar/delete): edu/fixtures/initial_data.json excluído em HEAD e modificado em 15.4. Versão 15.4 de edu/fixtures/initial_data.json deixada na árvore.
Mesclagem automática de djtools/utils.py
Mesclagem automática de djtools/templatetags/djtools_templatefilters.py
Mesclagem automática de djtools/static/djtools/jquery/jquery.autocomplete.js
Mesclagem automática de deploy/requirements.txt
Mesclagem automática de comum/views.py
CONFLITO (conteúdo): conflito de mesclagem em comum/views.py
Mesclagem automática de comum/utils.py
Mesclagem automática de comum/templates/login.html
CONFLITO (conteúdo): conflito de mesclagem em comum/templates/login.html
Mesclagem automática de comum/templates/admin/base.html
CONFLITO (conteúdo): conflito de mesclagem em comum/templates/admin/base.html
Removendo comum/static/comum/img/modulos/usuarios.png
Removendo comum/static/comum/img/modulos/turma.png
Removendo comum/static/comum/img/modulos/rh.png
Removendo comum/static/comum/img/modulos/projetos.png
Removendo comum/static/comum/img/modulos/notificacoes.png
Removendo comum/static/comum/img/modulos/matriz.png
Removendo comum/static/comum/img/modulos/maquina.png
Removendo comum/static/comum/img/modulos/frota.png
Removendo comum/static/comum/img/modulos/estacionamento.png
Removendo comum/static/comum/img/modulos/edu.png
Removendo comum/static/comum/img/modulos/diario.png
Removendo comum/static/comum/img/modulos/departamento.png
Removendo comum/static/comum/img/modulos/curso.png
Removendo comum/static/comum/img/modulos/configuracao.png
Removendo comum/static/comum/img/modulos/busca.png
Removendo comum/static/comum/img/modulos/autenticacao.png
Removendo comum/static/comum/img/modulos/almoxarifado.png
Removendo comum/static/comum/img/modulos/academico.png
Mesclagem automática de comum/static/comum/css/login.css
CONFLITO (conteúdo): conflito de mesclagem em comum/static/comum/css/login.css
Mesclagem automática de comum/static/comum/css/estilo.css
CONFLITO (conteúdo): conflito de mesclagem em comum/static/comum/css/estilo.css
Mesclagem automática de comum/models.py
Mesclagem automática de comum/forms.py
Mesclagem automática de almoxarifado/views.py
Mesclagem automática de almoxarifado/models.py
Mesclagem automática de ae/views.py
Automatic merge failed; fix conflicts and then commit the result.
-----------------------
===== Passo 7 =====
Após corrigir os conflitos, comitar e enviar a branch
git commit -am "resolver conflitos"
git push origin atualiza_suap_ifrnmaster2
---------------
===== Passo 8 =====
Dropar a coluna ativa da tabela %%materiais_categoria%% para resolver o problema: django.db.utils.ProgrammingError: column "ativa" of relation %%"materiais_categoria"%% already exists
ALTER TABLE materiais_categoria DROP COLUMN ativa;
-----------------------
===== Passo 9 =====
Foram identificadas alguns problemas na base de dados com o módulo "edu":
As entidades Nível de Ensino, Modalidade, Situação de Matrícula e Situação de Matrícula no Período deixaram de ser cadastros abertos e se tornaram "constantes" (embora estejam armazenados em uma tabela do banco de dados).
---------------
9.1) No Postgresql, deve-se remover o unique da coluna descrição da tabela edu_situacaomatricula
---------------
1) tabela: edu.nivelensino - não houveram problemas
^ IFRN ^^ IFCE ^^
|PK|descricao |pk|descricao |
|1 |Fundamental |1 |Fundamental |
|2 |Médio |2 |Médio |
|3 |Graduação |3 |Graduação |
|4 |Pós-graduação|4 |Pós-graduação|
---------------
2) tabela: edu.modalidade - ids 1, 3, 5, 6 e 7 não existem na base do IFRN
^ IFRN ^^^ IFCE ^^^
|PK |descricao |%%nivel_ensino%%|pk|descricao |%%nivel_ensino%%|
| | | |1 |@orange:Pós-graduação | |
|2 |Licenciatura |3 |2 |Licenciatura |3 |
| | | |3 |@orange:Graduação Tecnológica | |
|4 |Engenharia |3 |4 |Engenharia |3 |
| | | |5 |@orange:Técnicos Integrados EJA| |
| | | |6 |@orange:Técnicos Integrados | |
| | | |7 |@orange:Técnicos Subsequentes | |
|8 |FIC |1 |8 |FIC |1 |
|9 |Mestrado |4 |9 |Mestrado |4 |
|10 |Especialização |4 |10|Especialização |4 |
|11 |Integrado |2 |11|Integrado |2 |
|12 |Integrado EJA |2 |12|Integrado EJA |2 |
|13 |Subsequente |2 |13|Subsequente |2 |
|14 |Tecnologia |3 |14|Tecnologia |3 |
|15 |Aperfeiçoamento |4 |15|Aperfeiçoamento |4 |
|16 |Doutorado |4 |16|Doutorado |4 |
|17 |Proeja FIC Fundamental|1 |17|Proeja FIC Fundamental |1 |
Solução: Ao dar select na tabela edu_cursocampus (que usa a tabela edu_modalidade como chave estrangeira) nas modalidades em laranja (1,3,5,6,7) verificamos que elas não devolvem registros. Então podemos apagá-las.
select * from edu_cursocampus where modalidade_id = 1;
select * from edu_cursocampus where modalidade_id = 3;
select * from edu_cursocampus where modalidade_id = 5;
select * from edu_cursocampus where modalidade_id = 6;
select * from edu_cursocampus where modalidade_id = 7;
delete from edu_modalidade where id = 1;
delete from edu_modalidade where id = 3;
delete from edu_modalidade where id = 5;
delete from edu_modalidade where id = 6;
delete from edu_modalidade where id = 7;
---------------
3) edu.situacaomatricula
^ IFRN ^^^^ IFCE ^^^^
|PK|ativo|%%codigo_academico%%|descricao |PK|ativo|%%codigo_academico%%|descricao|
|1 |true |0 |Matriculado |1 |true |0 |Matriculado|
|2 |false|2 |Trancado |2 |TRUE |2 |Trancado|
|3 |false|3 |Jubilado |3 |false|3 |Jubilado|
|4 |false|4 |Transferido Interno|4 |false|4 |Transferido Interno|
|5 |true |5 |Concludente |5 |true |5 |Concludente|
|6 |false|6 |Concluído |6 |false|6 |Concluído|
|7 |false|7 |Falecido |7 |false|7 |Falecido|
|8 |false|8 |Afastado |8 |false|8 |Afastado|
|9 |false|9 |Evasão |9 |false|9 |Evasão|
|10|false|10 |Cancelado |10|false|10 |Cancelado|
|11|false|11 |Transferido Externo|11|false|11 |Transferido Externo|
|12|false|12 |Estagiario (Concludente)|12|true|12|Estagiario (Concludente)|
|13|false|13 |Aguardando Colação de Grau|13|true|13|Aguardando Colação de Grau|
|14|false|15 |Certificado ENEM |14|true |14 |Intercâmbio|
|15|false|16 |Aguardando Seminário|15|false|15|Certificado ENEM|
|16|false|19 |Aguardando ENADE |16|false|16 |Aguardando Seminário|
|17|false|14 |Intercâmbio |17|false|17 |Egresso|
|18|false|17 |Egresso |18|false|18 |Formado|
|19|false|18 |Formado |19|true |19 |Aguardando ENADE|
|20|false|20 |Cancelamento Compulsório|20|false|20|Cancelamento Compulsório|
|21|true |21 |Matrícula Vínculo Institucional|21|false|21|Matrícula Vínculo Institucional|
|99|false|null |Trancado Voluntariamente| | | | |
|100|false|null|Não concluído| | | | |
Solução:
a)No SUAP, colocar como ativo = false as seguintes situações de matrícula (Ensino - Cadastros gerais - Situações de matrícula):
Data de realização: 19/01/2016
http://suap.ifce.edu.br/admin/edu/situacaomatricula/2/
http://suap.ifce.edu.br/admin/edu/situacaomatricula/12/
http://suap.ifce.edu.br/admin/edu/situacaomatricula/13/
http://suap.ifce.edu.br/admin/edu/situacaomatricula/14/
http://suap.ifce.edu.br/admin/edu/situacaomatricula/19/
b) No SUAP, colocar como ativo = true as seguintes situações de matrícula (Ensino - Cadastros gerais - Situações de matrícula):
http://suap.ifce.edu.br/admin/edu/situacaomatricula/21
c) Obter a quantidade de alunos referentes a cada situação
^ situacao_id ^ quantidade ^
|1|35687|
|2|1846|
|3|66|
|4|1983|
|5|2342|
|6|15139|
|7|23 |
|8|26 |
|9|23710|
|10|4522|
|11|1035|
|12|394 |
|13|51 |
|14|82 |
|15|4 |
|16|0 |
|17|0 |
|18|3607|
|19|319|
d) Remover a constraint UNIQUE do campo descrição da tabela %%edu_situacaomatricula_descricao_key%%
Data de realização: 20/01/2016
ALTER TABLE edu_situacaomatricula DROP CONSTRAINT edu_situacaomatricula_descricao_key;
e) Altere a tabela %%edu_situacaomatricula%% para ficar igual a do IFRN.
f) Atualizar os dados dos alunos (ver arquivo %%atualiza_situacaomatricula_aluno.txt%%)
{{:sistemas:suap:atualiza_situacaomatricula_aluno.txt.zip|}}
g) Criar a constraint do campo descricao da tabela %%edu_situacaomatricula%%
ALTER TABLE edu_situacaomatricula ADD CONSTRAINT edu_situacaomatricula_descricao_key UNIQUE (descricao);
---------------
4) tabela: edu.situacaomatriculaperiodo
^ IFRN ^^^ IFCE ^^^
|PK |%%codigo_academico%%|descricao|pk|%%codigo_academico%%|descricao|
|1|0|Em Aberto|1|0|Em Aberto|
|2|1|Matriculado|2|1|Matriculado|
|3|2|Trancada|3|2|Trancada|
|4|3|Cancelada|4|3|Cancelada|
|5|4|Afastado|5|4|Afastado|
|6|5|Transf. Externa|6|5|Transf. Externa|
|7|6|Transf. Instituição|7|6|Transf. Instituição|
|8|7|Transf. Turno|8|7|Transf. Turno|
|9|8|Transf. Curso|9|8|Transf. Curso|
|10|9|Dependência|10|9|Aprov. C/ Dependência|
|11|10|Aprovado|11|10|Aprovado|
|12|11|Reprovado|12|11|Reprovado|
|13|12|Vindo de Transferência|13|12|Vindo de Transferência|
|14|13|Jubilado|14|13|Jubilado|
|15|14|Evasão|15|14|Evasão|
|16|15|Rep. Falta|16|15|Rep. Falta|
|17|18|Estágio e/ou Monografia|17|18|Estágio e/ou Monografia|
|18|19|Período Fechado|18|19|Período Fechado|
|19|20|Fechado c/ Pendência|19|20|Fechado c/ Pendência|
|20|21|Aproveit. Módulo|20|21|Aproveit. Módulo|
|21|23|Matrícula Vínculo Institucional|21|22|Intercâmbio|
|22|24|Certificado ENEM|22|23|Matrícula Vínculo Institucional|
|23|25|Cancelamento Compulsório|23|24|Certificado ENEM|
|24|22|Intercâmbio|24|25|Cancelamento compulsório|
|99|null|Trancado Voluntariamente| | | |
a) No SUAP, trocar a descrição da situação da matrícula "Aprov.c/Dependência" para "Dependência".
http://suap.ifce.edu.br/admin/edu/situacaomatriculaperiodo/10/
b) Remover a constraint UNIQUE do campo descricao da tabela %%edu_situacaomatriculaperiodo%%
ALTER TABLE edu_situacaomatriculaperiodo DROP CONSTRAINT edu_situacaomatriculaperiodo_descricao_key;
c) Alterar a tabela %%edu_situacaomatriculaperiodo%% para ficar igual a do IFRN.
d) Excluir os históricos
delete from edu_historicosituacaomatricula;
delete from edu_historicosituacaomatriculaperiodo;
delete from edu_matriculaperiodo;
e) Criar a constraint
ALTER TABLE edu_situacaomatriculaperiodo ADD CONSTRAINT edu_situacaomatriculaperiodo_descricao_key UNIQUE (descricao);
f) Fazer o Sync
python manage.py sync
g) Saída das migrations
Applying ae.0004_auto_20150401_1510... OK
Applying centralservicos.0011_auto_20150407_1038... OK
Applying contratos.0003_auto_20151112_1049... OK
Applying edu.0009_registroalunoinep_uo... OK
Applying edu.0010_auto_20150407_1419... OK
Applying edu.0011_auto_20150407_1447... OK
Applying edu.0010_auto_20150406_1946... OK
Applying edu.0011_aproveitamentocomponente... OK
Applying edu.0012_merge... OK
Applying edu.0013_auto_20150416_0933... OK
Applying edu.0014_componentecurricular_componente_curricular_associado... OK
Applying edu.0015_auto_20150423_1302... OK
Applying frota.0004_auto_20151112_1049... OK
Applying ldap_backend.0002_auto_20151112_1049... OK
Applying materiais.0002_categoria_ativa... OK
Applying ponto.0003_auto_20150401_0756... OK
Applying projetos.0013_auto_20150331_1418... OK
Applying projetos.0014_auto_20150430_1056... OK
Applying protocolo.0003_auto_20150331_0924... OK
Applying rsc.0001_initial... OK
Applying rh.0005_avaliador... OK
Applying rsc.0002_auto_20150311_1618... OK
Applying rsc.0003_auto_20150316_1138... OK
Applying rsc.0004_auto_20150320_1928... OK
Applying rsc.0005_auto_20150321_2333... OK
Applying rsc.0006_auto_20150322_1139... OK
Applying rsc.0007_instituicao... OK
Applying rh.0006_remove_avaliador_instituicao_origem... OK
Applying rh.0007_avaliador_instituicao_origem... OK
Applying rh.0008_remove_avaliador_banco... OK
Applying rh.0009_avaliador_banco... OK
Applying rh.0010_auto_20150401_1628... OK
Applying rh.0011_auto_20150401_1635... OK
Applying rh.0012_auto_20150406_0933... OK
Applying rh.0005_auto_20150330_1724... OK
Applying rh.0006_auto_20150401_0756... OK
Applying rh.0013_merge... OK
Applying rh.0013_auto_20150407_1055... OK
Applying rh.0014_merge... OK
Applying rsc.0008_auto_20150327_1317... OK
Applying rsc.0009_auto_20150401_1628... OK
Applying rsc.0010_auto_20150401_1635... OK
Applying rsc.0009_auto_20150401_1424... OK
Applying rsc.0011_merge... OK
Applying rsc.0012_delete_instituicao... OK
Applying rsc.0013_auto_20150407_1055... OK
g) Importar os alunos
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
python manage.py edu_importar_dados 2012
python manage.py edu_importar_dados 2011
python manage.py edu_importar_dados 2010
python manage.py edu_importar_dados 2009
python manage.py edu_importar_dados 2008
python manage.py edu_importar_dados 2007
python manage.py edu_importar_dados 2006
python manage.py edu_importar_dados 2005
python manage.py edu_importar_dados 2004
python manage.py edu_importar_dados 2003
python manage.py edu_importar_dados 2002
python manage.py edu_importar_dados 2001
python manage.py edu_importar_dados 2000
...
---------------
===== Passo 10 =====
No terminal, limpe as sessions
rm deploy/sessions/sessionid*
-----------------------
===== Passo 11 =====
Após rodar o sync apareceram os seguintes erros:
[warning] grupos não existentes nos permissions.xml: [(45, u'academico Administrador'), (46, u'academico_gerente'), (7, u'Auditor de almoxarifado'), (131, u'contracheques Administrador'), (10, u'cursos_auditor'), (42, u'Gerenciadores de prestadores de servi\xe7o'), (1, u'Gerente de Controle de Documento'), (2, u'Operador de Controle de Documento'), (49, u'ponto Administrador'), (38, u'ponto_gerente'), (39, u'ponto_gerente_sistemico'), (37, u'ponto_operador'), (36, u'ponto_padrao'), (135, u'processo_seletivo Administrador'), (23, u'rh_operador'), (22, u'rh_portariaremanejamento_operador')]
===== Passo 12 =====
Criar a tag ifce6.0
git tag ifce6.0
git push --tags origin master
-----------
Última revisão: ~~LASTMOD~~