====== 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~~