====== Atualização para IFRN/16.1 ====== ===== Passo 1 ===== Dados gerais ^ ^ ^ |Branch Criada no IFCE|%%atualiza_suap_ifrnmaster%%| |Tag Base do IFRN |16.1| |Data de início da atualização|22/02/2016| |Data de fim da atualização| - | |Tag Criada ao Final|ifce7.0 (22/02/2016)| |Tag Antes da atualização|ifce6.0| |OBS|Foi feita atualização do postgresql 9.3 para 9.4| 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 | ? | ----------------------- Use o comando pip install -r deploy/requirements.txt para instalar a partir do arquivo gerado pelo pip freeze estável deles. ===== 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 Username for 'https://gitlab.ifrn.edu.br':\\ Password for 'https://ifce@gitlab.ifrn.edu.br': \\ ----------------------- ===== Passo 4 ===== Saída do fetch: From http://gitlab.ifrn.edu.br/cosinf/suap * [new branch] AutocompleteWidget-ext_combo_template -> suapifrn/AutocompleteWidget-ext_combo_template * [new branch] Parametrizacao_Referencia_Instituicao -> suapifrn/Parametrizacao_Referencia_Instituicao * [new branch] ae-1 -> suapifrn/ae-1 * [new branch] ae-2 -> suapifrn/ae-2 * [new branch] ae-ajuste-rel-transp -> suapifrn/ae-ajuste-rel-transp * [new branch] ae-coordenador-4 -> suapifrn/ae-coordenador-4 * [new branch] ae-reservas -> suapifrn/ae-reservas * [new branch] ajuste_layout_carteira_funcional -> suapifrn/ajuste_layout_carteira_funcional * [new branch] ajustes_avaliacao_avaliador -> suapifrn/ajustes_avaliacao_avaliador * [new branch] almoxarifado-debug -> suapifrn/almoxarifado-debug * [new branch] almoxarifado_valor_medio -> suapifrn/almoxarifado_valor_medio * [new branch] app_pesquisa -> suapifrn/app_pesquisa * [new branch] app_pesquisa_testes -> suapifrn/app_pesquisa_testes * [new branch] app_seguro_aula_campo -> suapifrn/app_seguro_aula_campo * [new branch] auditoria-cgu -> suapifrn/auditoria-cgu * [new branch] avaliacao_error -> suapifrn/avaliacao_error * [new branch] central-servicos-indicador-tempo-atendimento-uo -> suapifrn/central-servicos-indicador-tempo-atendimento-uo * [new branch] central-servicos-novos-recursos -> suapifrn/central-servicos-novos-recursos * [new branch] central-servicos-remover-base-conhecimento -> suapifrn/central-servicos-remover-base-conhecimento * [new branch] chamado1057 -> suapifrn/chamado1057 * [new branch] chamado1573 -> suapifrn/chamado1573 * [new branch] chamado1708 -> suapifrn/chamado1708 * [new branch] chamado1719 -> suapifrn/chamado1719 * [new branch] chamado1746 -> suapifrn/chamado1746 * [new branch] chamado_13350 -> suapifrn/chamado_13350 * [new branch] compras -> suapifrn/compras * [new branch] comum-midia -> suapifrn/comum-midia * [new branch] correcao-cnpq_importar -> suapifrn/correcao-cnpq_importar * [new branch] corrigir-transacoes -> suapifrn/corrigir-transacoes * [new branch] dev_controle_papel -> suapifrn/dev_controle_papel * [new branch] dev_estagio_probatorio -> suapifrn/dev_estagio_probatorio * [new branch] dev_titular -> suapifrn/dev_titular * [new branch] django18 -> suapifrn/django18 * [new branch] docs-adm-central-servicos-02 -> suapifrn/docs-adm-central-servicos-02 * [new branch] docs-adm-telefonia-01 -> suapifrn/docs-adm-telefonia-01 * [new branch] docs_pesquisa -> suapifrn/docs_pesquisa * [new branch] edu-admin-diario -> suapifrn/edu-admin-diario * [new branch] edu-ajuste-boletim -> suapifrn/edu-ajuste-boletim * [new branch] edu-ajuste-colacao-grau -> suapifrn/edu-ajuste-colacao-grau * [new branch] edu-ajuste-integralizacao -> suapifrn/edu-ajuste-integralizacao * [new branch] edu-ajuste-migracao -> suapifrn/edu-ajuste-migracao * [new branch] edu-ajuste-minicurso -> suapifrn/edu-ajuste-minicurso * [new branch] edu-ajuste-no-form-prof -> suapifrn/edu-ajuste-no-form-prof * [new branch] edu-ajustes-alessandro -> suapifrn/edu-ajustes-alessandro * [new branch] edu-ajustes-hoje -> suapifrn/edu-ajustes-hoje * [new branch] edu-ajustes-usabilidade-diario -> suapifrn/edu-ajustes-usabilidade-diario * [new branch] edu-ajustes0508 -> suapifrn/edu-ajustes0508 * [new branch] edu-alteracao-estrutura -> suapifrn/edu-alteracao-estrutura * [new branch] edu-alunos-dados-incompletos -> suapifrn/edu-alunos-dados-incompletos * [new branch] edu-avaliacao-integrada -> suapifrn/edu-avaliacao-integrada * [new branch] edu-bug-transferencia-diario -> suapifrn/edu-bug-transferencia-diario * [new branch] edu-chamado-11302 -> suapifrn/edu-chamado-11302 * [new branch] edu-chamado-11662 -> suapifrn/edu-chamado-11662 * [new branch] edu-commando-notificacao-pendencias -> suapifrn/edu-commando-notificacao-pendencias * [new branch] edu-componente-dinamico -> suapifrn/edu-componente-dinamico * [new branch] edu-coordenador-renovacao-matricula -> suapifrn/edu-coordenador-renovacao-matricula * [new branch] edu-correcao-bug -> suapifrn/edu-correcao-bug * [new branch] edu-correcao-index -> suapifrn/edu-correcao-index * [new branch] edu-correcao-migracao -> suapifrn/edu-correcao-migracao * [new branch] edu-correcao-prorrogacao-etapa -> suapifrn/edu-correcao-prorrogacao-etapa * [new branch] edu-correcao-registrar-chamada -> suapifrn/edu-correcao-registrar-chamada * [new branch] edu-data-prova -> suapifrn/edu-data-prova * [new branch] edu-diretorios-documentos -> suapifrn/edu-diretorios-documentos * [new branch] edu-dispensar-enade -> suapifrn/edu-dispensar-enade * [new branch] edu-entregar-etapa -> suapifrn/edu-entregar-etapa * [new branch] edu-estagios -> suapifrn/edu-estagios * [new branch] edu-fotos-lote -> suapifrn/edu-fotos-lote * [new branch] edu-horario-aula-aluno -> suapifrn/edu-horario-aula-aluno * [new branch] edu-importar-componentes -> suapifrn/edu-importar-componentes * [new branch] edu-indicadores -> suapifrn/edu-indicadores * [new branch] edu-libreoffice -> suapifrn/edu-libreoffice * [new branch] edu-master -> suapifrn/edu-master * [new branch] edu-minicursos -> suapifrn/edu-minicursos * [new branch] edu-painel-controle -> suapifrn/edu-painel-controle * [new branch] edu-processo-seletivo -> suapifrn/edu-processo-seletivo * [new branch] edu-prorrogaca-lancamento-etapa -> suapifrn/edu-prorrogaca-lancamento-etapa * [new branch] edu-questionarios -> suapifrn/edu-questionarios * [new branch] edu-recuperacao-bimestral -> suapifrn/edu-recuperacao-bimestral * [new branch] edu-relatorio-alunos -> suapifrn/edu-relatorio-alunos * [new branch] edu-remocao-diario -> suapifrn/edu-remocao-diario * [new branch] edu-remover-disabled-prof -> suapifrn/edu-remover-disabled-prof * [new branch] edu-requisitos-conclusao -> suapifrn/edu-requisitos-conclusao * [new branch] edu-retore -> suapifrn/edu-retore * [new branch] edu-segunda-via-diploma -> suapifrn/edu-segunda-via-diploma * [new branch] edu-sugestoes-matheus -> suapifrn/edu-sugestoes-matheus * [new branch] edu-timetables -> suapifrn/edu-timetables * [new branch] edu-transferencia-turma -> suapifrn/edu-transferencia-turma * [new branch] edu_atividades_docentes -> suapifrn/edu_atividades_docentes * [new branch] edu_nome_social -> suapifrn/edu_nome_social * [new branch] edu_retirar_seguro_aula_campo -> suapifrn/edu_retirar_seguro_aula_campo * [new branch] elemento-despesa -> suapifrn/elemento-despesa * [new branch] envio_protocolo -> suapifrn/envio_protocolo * [new branch] eriton -> suapifrn/eriton * [new branch] error_pesquisa -> suapifrn/error_pesquisa * [new branch] etiqueta_protocolo -> suapifrn/etiqueta_protocolo * [new branch] eventos -> suapifrn/eventos * [new branch] files -> suapifrn/files * [new branch] financeiro-importacao -> suapifrn/financeiro-importacao * [new branch] financeiro-ir_dirf -> suapifrn/financeiro-ir_dirf * [new branch] formato_valor_empenho -> suapifrn/formato_valor_empenho * [new branch] frota-avaliacao -> suapifrn/frota-avaliacao * [new branch] frota-correcao -> suapifrn/frota-correcao * [new branch] frota_081215 -> suapifrn/frota_081215 * [new branch] frota_ajustes -> suapifrn/frota_ajustes * [new branch] google_apps_sso -> suapifrn/google_apps_sso * [new branch] gt-patrimonio -> suapifrn/gt-patrimonio * [new branch] i2146 -> suapifrn/i2146 * [new branch] ifpb_edu_recuperacao -> suapifrn/ifpb_edu_recuperacao * [new branch] ifpb_importador -> suapifrn/ifpb_importador * [new branch] impressao_processo -> suapifrn/impressao_processo * [new branch] index -> suapifrn/index * [new branch] ir_dirf -> suapifrn/ir_dirf * [new branch] issue_2196 -> suapifrn/issue_2196 * [new branch] issue_2226 -> suapifrn/issue_2226 * [new branch] layout -> suapifrn/layout * [new branch] layout-index -> suapifrn/layout-index * [new branch] layout-saude -> suapifrn/layout-saude * [new branch] master -> suapifrn/master * [new branch] middleware-servidor-sem-setor -> suapifrn/middleware-servidor-sem-setor * [new branch] move_arquivos -> suapifrn/move_arquivos * [new branch] notificar-grupo -> suapifrn/notificar-grupo * [new branch] nup -> suapifrn/nup * [new branch] orcamento-descentralizacao -> suapifrn/orcamento-descentralizacao * [new branch] patrimonio -> suapifrn/patrimonio * [new branch] patrimonio-elemento-despesa -> suapifrn/patrimonio-elemento-despesa * [new branch] patrimonio-novo-fluxo_teste -> suapifrn/patrimonio-novo-fluxo_teste * [new branch] patrimonio-plano-contas -> suapifrn/patrimonio-plano-contas * [new branch] patrimonio_docs -> suapifrn/patrimonio_docs * [new branch] pesquisa_180116 -> suapifrn/pesquisa_180116 * [new branch] pesquisa_281215 -> suapifrn/pesquisa_281215 * [new branch] pesquisa_novo_app -> suapifrn/pesquisa_novo_app * [new branch] pessoa_interessada_setor -> suapifrn/pessoa_interessada_setor * [new branch] planejamento-ajuste -> suapifrn/planejamento-ajuste * [new branch] portaria_2 -> suapifrn/portaria_2 * [new branch] processo_eletronico -> suapifrn/processo_eletronico * [new branch] processo_recaptcha -> suapifrn/processo_recaptcha * [new branch] progressao_bug -> suapifrn/progressao_bug * [new branch] projeto_suapdev -> suapifrn/projeto_suapdev * [new branch] projetos_edital_cultura -> suapifrn/projetos_edital_cultura * [new branch] projetos_extensao -> suapifrn/projetos_extensao * [new branch] projetos_recurso -> suapifrn/projetos_recurso * [new branch] protocolo-melhorias -> suapifrn/protocolo-melhorias * [new branch] protocolo_formato_numero_15_4 -> suapifrn/protocolo_formato_numero_15_4 * [new branch] protocolo_interessado_setor -> suapifrn/protocolo_interessado_setor * [new branch] protocolo_interessado_setor2 -> suapifrn/protocolo_interessado_setor2 * [new branch] reserva-sala-ajustes -> suapifrn/reserva-sala-ajustes * [new branch] reserva-sala-ajustes-2 -> suapifrn/reserva-sala-ajustes-2 * [new branch] reserva-sala-ajustes-3 -> suapifrn/reserva-sala-ajustes-3 * [new branch] reserva-sala-tarefa-1815 -> suapifrn/reserva-sala-tarefa-1815 * [new branch] rh_ajuste_avaliador -> suapifrn/rh_ajuste_avaliador * [new branch] rh_formatacao_moeda_rubrica -> suapifrn/rh_formatacao_moeda_rubrica * [new branch] rh_solicitacao_cracha -> suapifrn/rh_solicitacao_cracha * [new branch] rsc_ajuste_pagamento -> suapifrn/rsc_ajuste_pagamento * [new branch] rsc_bug_avaliadores_extras -> suapifrn/rsc_bug_avaliadores_extras * [new branch] rsc_correcao_qtd_item -> suapifrn/rsc_correcao_qtd_item * [new branch] rsc_filtro_avaliacao_pagamento -> suapifrn/rsc_filtro_avaliacao_pagamento * [new branch] saude-2 -> suapifrn/saude-2 * [new branch] saude-3 -> suapifrn/saude-3 * [new branch] saude-4 -> suapifrn/saude-4 * [new branch] saude-ajustes -> suapifrn/saude-ajustes * [new branch] saude-enfermagem -> suapifrn/saude-enfermagem * [new branch] saude-nutricao -> suapifrn/saude-nutricao * [new branch] saude-odontologia -> suapifrn/saude-odontologia * [new branch] saude_170216 -> suapifrn/saude_170216 * [new branch] scroll-infinito-autocomplete -> suapifrn/scroll-infinito-autocomplete * [new branch] servidor_sem_setor -> suapifrn/servidor_sem_setor * [new branch] sica_ifrn -> suapifrn/sica_ifrn * [new branch] simple_tag -> suapifrn/simple_tag * [new branch] site -> suapifrn/site * [new branch] squash-migrations -> suapifrn/squash-migrations * [new branch] suap-autoenv -> suapifrn/suap-autoenv * [new branch] suap-bugs -> suapifrn/suap-bugs * [new branch] suap-gestao -> suapifrn/suap-gestao * [new branch] suap-gestao-doc-visao2 -> suapifrn/suap-gestao-doc-visao2 * [new branch] suap-midia1 -> suapifrn/suap-midia1 * [new branch] tarefa-1113 -> suapifrn/tarefa-1113 * [new branch] tarefa-2022 -> suapifrn/tarefa-2022 * [new branch] tarefa_1131 -> suapifrn/tarefa_1131 * [new branch] tarefa_1497 -> suapifrn/tarefa_1497 * [new branch] test-gitlab -> suapifrn/test-gitlab * [new branch] test-suap -> suapifrn/test-suap * [new branch] teste -> suapifrn/teste * [new branch] testes-gitlab -> suapifrn/testes-gitlab * [new branch] titular_correcao_tamanho_campos -> suapifrn/titular_correcao_tamanho_campos * [new branch] treinamento_suap -> suapifrn/treinamento_suap * [new branch] unaccent -> suapifrn/unaccent * [new tag] 16.1 -> 16.1 ----------------------- ===== Passo 5 ===== Após corrigir os conflitos, comitar e enviar a branch git commit -am "resolver conflitos" git push origin atualiza_suap_ifrnmaster --------------- ===== Passo 6 ===== sudo pip install xhtml2pdf --------------- ===== Passo 7 ===== sudo python manage.py sync ===== Passo 8 ====== Problemas: django.db.utils.ProgrammingError: relation "progressoes_avaliacaomodelo" already exists Solução: drop table progressoes_avaliacaoservidorcriterio; drop table progressoes_avaliacaomodelocriterio; drop table progressoes_avaliacaomodelo; drop table progressoes_avaliacaoservidor; ===== Passo 9 ===== Rodar: python manage.py sync ===== Passo 10 ===== Comentado a linha na migration %%edu/migrations/0064_auto_20151127_1440.py%%: # migrations.RunPython(editar_atividade_complementar_deferida) ===== Passo 11 ===== progressoes.0001_initial KeyError: ('progressoes', u'avaliacaomodelo') Deletada tabelas de AvalicaoModelo e referências: %%progressoes_avaliacaomodelo%% %%progressoes_avaliacaomodelocriterio%% ===== Passo 11 ===== Cnpq: File %%"/opt/suap/cnpq/migrations/0012_auto_20150811_1624.py"%%, line 11, in migrate registro_patente.curriculo = registro_patente.software_set.all()[0].curriculo Solução: Adicionado coluna (tipo timestamp with zone) manualmente a tabela ===== Passo 12 ===== %%migration projetos.0046_auto_20151001_1152 deve ficar antes da projetos.0040_atualizar_coordenador_projeto%% Inserir linha da migration no Banco para projetos %%001_initial%% %%Adicionada coluna {monitor_id integer null} na tabela projetos_projeto%% %%Remover coluna monitor_id (em produção não fazer)%% Alternativa, mover o código da 46 para a 40 e comentar a 46 ===== Passo 13 ===== %%projetos.0040_atualizar_coordenador_projeto%% Cannot ALTER TABLE "projetos_projeto" because it has pending trigger events Comentada a linha que dava o erro. ===== Passo 14 ===== Migration 001_initial do módulo de clipping. Rodar seguinte sql: Insert into django_migrations (app,name,applied) VALUES ('clipping','0001_initial','2016-04-04 08:00:00.0000000-03'); ===== Passo 15 ===== Problema ao executar migration %%0029_auto_20160107_0911.py%%: Deve-se remover a view: %%vw_professor_sisproen%% e depois de rodadas as migrations cria-lá novamente rodando o seguinte script: CREATE OR REPLACE VIEW vw_professor_sisproen AS SELECT pessoa_fisica.pessoa_ptr_id AS id, pessoa_fisica.cpf, pessoa_fisica.rg, to_char(pessoa_fisica.nascimento_data::timestamp with time zone, 'DD-MM-YYYY'::text) AS data_nascimento, pessoa_fisica.sexo, pessoa_fisica.username AS matricula_siape, pessoa.nome, pessoa.email_secundario AS email, pessoa.excluido FROM edu_professor JOIN pessoa_fisica ON edu_professor.pessoa_fisica_id = pessoa_fisica.pessoa_ptr_id JOIN pessoa ON pessoa_fisica.pessoa_ptr_id = pessoa.id ORDER BY pessoa.nome; ALTER TABLE vw_professor_sisproen OWNER TO suap; Remover também a view: %%vw_cafe_conta%% e depois de rodadas as migrations, executar: CREATE OR REPLACE VIEW vw_cafe_conta AS SELECT pf.cpf, s.matricula, au.password AS senha, 'md5' AS algoritmo, 'IFCE' AS dominio FROM servidor s LEFT JOIN pessoa_fisica pf ON s.funcionario_ptr_id = pf.pessoa_ptr_id LEFT JOIN auth_user au ON au.id = pf.user_id LEFT JOIN pessoa p ON pf.pessoa_ptr_id = p.id WHERE p.email_secundario::text <> ''::text AND p.email_secundario IS NOT NULL AND pf.cpf::text <> ''::text AND pf.cpf::text <> ' . . - '::text AND pf.cpf::text <> '___.___.___-__'::text; ALTER TABLE vw_cafe_conta OWNER TO suap; Remover também a view: %%vw_cafe_email%% e depois de rodadas as migrations, executar: CREATE OR REPLACE VIEW vw_cafe_email AS SELECT pf.cpf, p.email_secundario FROM edu_aluno e, pessoa_fisica pf, pessoa p WHERE e.situacao_id = 1 AND e.pessoa_fisica_id = pf.pessoa_ptr_id AND p.id = pf.pessoa_ptr_id AND pf.cpf::text <> ''::text AND pf.cpf::text <> ' . . - '::text AND pf.cpf::text <> '___.___.___-__'::text AND p.email_secundario::text <> ''::text AND p.email_secundario IS NOT NULL UNION SELECT pf.cpf, p.email AS email_secundario FROM servidor s LEFT JOIN pessoa_fisica pf ON s.funcionario_ptr_id = pf.pessoa_ptr_id LEFT JOIN pessoa p ON pf.pessoa_ptr_id = p.id WHERE s.excluido = false AND p.email_secundario::text <> ''::text AND p.email_secundario IS NOT NULL AND pf.cpf::text <> ''::text AND pf.cpf::text <> ' . . - '::text AND pf.cpf::text <> '___.___.___-__'::text; ALTER TABLE vw_cafe_email OWNER TO suap; Remover também a view: %%vw_cafe_identificacao%% e depois de rodadas as migrations, executar: CREATE OR REPLACE VIEW vw_cafe_identificacao AS SELECT p.nome, pf.cpf, pf.nascimento_data FROM edu_aluno e, pessoa_fisica pf, pessoa p WHERE e.situacao_id = 1 AND e.pessoa_fisica_id = pf.pessoa_ptr_id AND p.id = pf.pessoa_ptr_id AND pf.cpf::text <> ''::text AND pf.cpf::text <> ' . . - '::text AND pf.cpf::text <> '___.___.___-__'::text AND p.email_secundario::text <> ''::text AND p.email_secundario IS NOT NULL UNION SELECT p.nome, pf.cpf, pf.nascimento_data FROM servidor s LEFT JOIN pessoa_fisica pf ON s.funcionario_ptr_id = pf.pessoa_ptr_id LEFT JOIN pessoa p ON pf.pessoa_ptr_id = p.id WHERE p.email_secundario::text <> ''::text AND p.email_secundario IS NOT NULL AND pf.cpf::text <> ''::text AND pf.cpf::text <> ' . . - '::text AND pf.cpf::text <> '___.___.___-__'::text; ALTER TABLE vw_cafe_identificacao OWNER TO suap; Remover também a view: %%vw_consulta_processo_servidor%% e depois de rodadas as migrations, executar: CREATE OR REPLACE VIEW vw_consulta_processo_servidor AS SELECT p.data_cadastro, p.numero_processo, p.numero_documento, p.assunto, s.matricula, s.email_institucional, s.email_siape FROM protocolo_processo p, servidor s WHERE p.pessoa_interessada_id = s.funcionario_ptr_id; ALTER TABLE vw_consulta_processo_servidor OWNER TO suap; ===== Passo 16: ===== Problema ao executar migration %%rh.0031_auto_20160321_1021.py%%: ProgrammingError: permission denied to create extension "unaccent" HINT: Must be superuser to create this extension. ("CREATE EXTENSION unaccent;") Solução: realizar o comando na máquina onde o servidor do postgre estiver instalado. sudo apt-get install postgresql-contrib-9.4 depois pode-se criar manualmente pelo pg admin CREATE EXTENSION IF NOT EXISTS unaccent; CREATE EXTENSION IF NOT EXISTS pg_trgm; SELECT unaccent('unaccent', upper('ródrigo')) depois ir na árvore em extensions e escolher unaccent e %%pg_trgm%% (fazer isso com o usuário postgres) ===== passo 17 ===== django.db.utils.OperationalError: cannot ALTER TABLE "projetos_projeto" because it has pending trigger events ===== passo 18 ===== Problema com usuário sem nome na tabela %%pessoa_física%% (first name e last name) Remover os seguintes usuários da tabela de grupos e usuários: DELETE FROM auth_user_groups WHERE user_id = 4055 OR user_id = 4056 OR user_id = 67; -- (usuários fantasmas da Geila, Mariana, Neila) Select para saber os nomes fantasmas SELECT * from auth_user where username !~* '[0-9]+' and (first_name is null or first_name = '') and (last_name is null or last_name = '') order by id ===== passo 19 ===== Urls Modificado arquivo patrimonio/urls.py As urls de detalhamento de categoria: (r'^detalhamento_categoria/(?P(\d+[.])?\d+([.]\d+)?)/(?P\d+)/$', 'total_atual_categoria'), (r'^detalhamento_categoria/(?P(\d+[.])?\d+([.]\d+)?)/(?P\d+)/(?P\d+)/$', 'total_atual_categoria'), ERRO: coluna %%cnpq_curriculovittaelattes.data_extracao%% não existe "edu_situacaomatricula_descricao_key" DETAIL: Key (descricao)=(Certificado ENEM) already exists remover a constraint para ordenar depois coloca-la de volta ALTER TABLE edu_situacaomatricula ADD CONSTRAINT edu_situacaomatricula_descricao_key UNIQUE(descricao); update edu_situacaomatricula set descricao = 'Formado' where id = 19 Could not load edu.SituacaoMatriculaPeriodo(pk=21): duplicate key value violates unique constraint %%"edu_situacaomatriculaperiodo_descricao_key"%% remover a constraint para ordenar depois coloca-la de volta ALTER TABLE edu_situacaomatriculaperiodo ADD CONSTRAINT edu_situacaomatriculaperiodo_descricao_key UNIQUE(descricao); UPDATE edu_situacaomatriculaperiodo SET descricao= 'Intercâmbio' WHERE id = 24; Gunicorn deve ficar com a sintaxe do master atual, correspondente a versão instalada na máquina de produção [Errno 2] No such file or directory: %%'/opt/suap/rh/arquivos_siape/'%% OSError at %%/rh/upload_arquivos_extrator/%% Mkdir dos dois diretorios depois dar um chmod a+w para as permissoes MultiValueDictKeyError at %%/admin/planejamento/acaoproposta/3/change/%% Trocar meta_id = self.request.GET['meta'] Por meta_id = self.request.GET.get('meta') Importar alunos Erro: 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 4647, in definir_ano_let_prev_conclusao modalidade_id = self.curso_campus.modalidade.id AttributeError: 'NoneType' object has no attribute 'id' Solucao: Não havia o preenchimento da coluna %%modalidade_id%%, na tabela de cursos (edu_cursocampos) pois os valores não eram trazidos corretamente do Q academico, é necessario inserir na base as seguintes modalidade bem como subir a correção do codigo: INSERT INTO edu_modalidade( id, descricao, nivel_ensino_id) VALUES (0, 'Sem modalidade', null), (18, 'Concomitante', 3), (19, 'Bacharelado', 3), (20, 'Propedêutico', 2); Importar SIAFI Alterar a verificação com .REF para .ref e .TXT por .txt Duplicidade financeiro_classificacaoinstitucional apagar Adicionar os dois ultimos parameotrs no arquivo de layout Passar None ao invés de IT-DA-CONTRATACAO no metodo getItens