From 170b3ba32e8276119ec8ca798300e9acb0b94ca2 Mon Sep 17 00:00:00 2001 From: Luciano Almeida Date: Tue, 28 Nov 2017 12:06:43 -0200 Subject: [PATCH 1/2] =?UTF-8?q?Migra=20propriedades=20e=20ajusta=20para=20?= =?UTF-8?q?nova=20exporta=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Luciano Almeida --- sapl/legacy/migracao_documentos.py | 122 ++++++++++++++++++----------- 1 file changed, 77 insertions(+), 45 deletions(-) diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py index 1d2d38dcc..0c75f858a 100644 --- a/sapl/legacy/migracao_documentos.py +++ b/sapl/legacy/migracao_documentos.py @@ -3,13 +3,14 @@ import os import re import magic +import yaml from sapl.base.models import CasaLegislativa from sapl.legacy.migration import warn from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa, Proposicao) from sapl.norma.models import NormaJuridica -from sapl.parlamentares.models import Parlamentar +from sapl.parlamentares.models import Parlamentar, Municipio from sapl.protocoloadm.models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo) from sapl.sessao.models import SessaoPlenaria @@ -29,17 +30,7 @@ EXTENSOES = { 'text/html': '.html', 'text/rtf': '.rtf', 'text/x-python': '.py', - 'text/plain': '.ksh', - 'text/plain': '.c', - 'text/plain': '.h', 'text/plain': '.txt', - 'text/plain': '.bat', - 'text/plain': '.pl', - 'text/plain': '.asc', - 'text/plain': '.text', - 'text/plain': '.pot', - 'text/plain': '.brf', - 'text/plain': '.srt', # sem extensao 'application/octet-stream': '', # binário @@ -47,26 +38,31 @@ EXTENSOES = { } DOCS = { - CasaLegislativa: [( - 'logotipo', - 'props_sapl/logo_casa.gif', - 'casa/logotipo/logo_casa.gif')], - Parlamentar: [( - 'fotografia', - 'parlamentar/fotos/{}_foto_parlamentar', - 'public/parlamentar/{0}/{0}_foto_parlamentar{1}')], - MateriaLegislativa: [( - 'texto_original', - 'materia/{}_texto_integral', - 'public/materialegislativa/{2}/{0}/{0}_texto_integral{1}')], - DocumentoAcessorio: [( - 'arquivo', - 'materia/{}', - 'public/documentoacessorio/{2}/{0}/{0}{1}')], - NormaJuridica: [( - 'texto_integral', - 'norma_juridica/{}_texto_integral', - 'public/normajuridica/{2}/{0}/{0}_texto_integral{1}')], + CasaLegislativa: [ + ('logotipo', + 'props_sapl/logo_casa.gif', + 'casa/logotipo/logo_casa.gif') + ], + Parlamentar: [ + ('fotografia', + 'parlamentar/fotos/{}_foto_parlamentar', + 'public/parlamentar/{0}/{0}_foto_parlamentar{1}') + ], + MateriaLegislativa: [ + ('texto_original', + 'materia/{}_texto_integral', + 'public/materialegislativa/{2}/{0}/{0}_texto_integral{1}') + ], + DocumentoAcessorio: [ + ('arquivo', + 'materia/{}', + 'public/documentoacessorio/{2}/{0}/{0}{1}') + ], + NormaJuridica: [ + ('texto_integral', + 'norma_juridica/{}_texto_integral', + 'public/normajuridica/{2}/{0}/{0}_texto_integral{1}') + ], SessaoPlenaria: [ ('upload_ata', 'ata_sessao/{}_ata_sessao', @@ -75,20 +71,20 @@ DOCS = { 'anexo_sessao/{}_texto_anexado', 'public/sessaoplenaria/{0}/anexo/{0}_texto_anexado{1}') ], - Proposicao: [( - 'texto_original', - 'proposicao/{}', - 'private/proposicao/{0}/{0}{1}')], - DocumentoAdministrativo: [( - 'texto_integral', - 'administrativo/{}_texto_integral', - 'private/documentoadministrativo/{0}/{0}_texto_integral{1}') + Proposicao: [ + ('texto_original', + 'proposicao/{}', + 'private/proposicao/{0}/{0}{1}')], + DocumentoAdministrativo: [ + ('texto_integral', + 'administrativo/{}_texto_integral', + 'private/documentoadministrativo/{0}/{0}_texto_integral{1}') ], - DocumentoAcessorioAdministrativo: [( - 'arquivo', - 'administrativo/{}', - 'private/documentoacessorioadministrativo/{0}/' - '{0}_acessorio_administrativo{1}') + DocumentoAcessorioAdministrativo: [ + ('arquivo', + 'administrativo/{}', + 'private/documentoacessorioadministrativo/{0}/' + '{0}_acessorio_administrativo{1}') ], } @@ -163,7 +159,7 @@ def migrar_docs_por_ids(model): print('#### Migrando {} de {} ####'.format(campo, model.__name__)) dir_origem, nome_origem = os.path.split(em_media(base_origem)) - pat = re.compile('^{}$'.format(nome_origem.format('(\d+)'))) + pat = re.compile('^{}\.\w+$'.format(nome_origem.format('(\d+)'))) if not os.path.isdir(dir_origem): print(' >>> O diretório {} não existe! Abortado.'.format( @@ -197,6 +193,41 @@ def migrar_docs_por_ids(model): obj.save() +def migrar_info_da_casa(): + props = 'media/sapl_documentos/propriedades.yaml' + campos_usados = { + 'cod_casa': 'codigo', + 'nom_casa': 'nome', + 'sgl_casa': 'sigla', + 'end_casa': 'endereco', + 'num_cep': 'cep', + 'num_tel': 'telefone', + 'num_fax': 'fax', + 'end_web_casa': 'endereco_web', + 'end_email_casa': 'email', + 'sgl_casa': 'sigla', + 'txt_informacao_geral': 'informacao_geral', + } + campos_nao_usados = [ + 'cor_borda', 'cor_fundo', 'cor_principal', 'id_logo', + 'ind_acesso_info_adm', 'txt_senha_inicial', 'versao', + ] + + f = open(props, 'r') + propriedades = yaml.safe_load(f) + for campo in campos_nao_usados: + propriedades.pop(campo) + cod_localidade = propriedades.pop('cod_localidade') + municipio = Municipio.objects.get(pk=cod_localidade) + + casa = CasaLegislativa.objects.first() + for nome_campo, valor in propriedades.items(): + setattr(casa, campos_usados[nome_campo], valor) + casa.municipio = municipio.nome + casa.uf = municipio.uf + casa.save() + + def migrar_documentos(): # aqui supomos que uma pasta chamada sapl_documentos está em MEDIA_ROOT # com o conteúdo da pasta de mesmo nome do zope @@ -207,6 +238,7 @@ def migrar_documentos(): # restaurar a pasta sapl_documentos ao estado inicial migrar_docs_logo() + migrar_info_da_casa() for model in [ Parlamentar, MateriaLegislativa, From 2eba9c1926b5ea428df57c9e976e10d7593a6ddc Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Tue, 30 Jan 2018 17:18:01 -0200 Subject: [PATCH 2/2] =?UTF-8?q?Refatora=20migra=C3=A7=C3=A3o=20das=20propr?= =?UTF-8?q?iedades=20da=20casa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao_documentos.py | 82 +++++++++++++----------------- 1 file changed, 35 insertions(+), 47 deletions(-) diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py index 0c75f858a..a31e02b50 100644 --- a/sapl/legacy/migracao_documentos.py +++ b/sapl/legacy/migracao_documentos.py @@ -6,11 +6,11 @@ import magic import yaml from sapl.base.models import CasaLegislativa -from sapl.legacy.migration import warn +from sapl.legacy.migration import exec_legado, warn from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa, Proposicao) from sapl.norma.models import NormaJuridica -from sapl.parlamentares.models import Parlamentar, Municipio +from sapl.parlamentares.models import Parlamentar from sapl.protocoloadm.models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo) from sapl.sessao.models import SessaoPlenaria @@ -74,7 +74,8 @@ DOCS = { Proposicao: [ ('texto_original', 'proposicao/{}', - 'private/proposicao/{0}/{0}{1}')], + 'private/proposicao/{0}/{0}{1}') + ], DocumentoAdministrativo: [ ('texto_integral', 'administrativo/{}_texto_integral', @@ -106,16 +107,36 @@ def mover_documento(origem, destino): os.rename(origem, destino) -def get_casa_legislativa(): +def migrar_propriedades_da_casa(): + print('#### Migrando propriedades da casa ####') + caminho = em_media('sapl_documentos/propriedades.yaml') + with open(caminho, 'r') as arquivo: + propriedades = yaml.safe_load(arquivo) casa = CasaLegislativa.objects.first() if not casa: - casa = CasaLegislativa.objects.create(**{k: 'PREENCHER...' for k in [ - 'codigo', 'nome', 'sigla', 'endereco', 'cep', 'municipio', 'uf', - ]}) - return casa + casa = CasaLegislativa() + campos_para_propriedades = [('codigo', 'cod_casa'), + ('nome', 'nom_casa'), + ('sigla', 'sgl_casa'), + ('endereco', 'end_casa'), + ('cep', 'num_cep'), + ('telefone', 'num_tel'), + ('fax', 'num_fax'), + ('endereco_web', 'end_web_casa'), + ('email', 'end_email_casa'), + ('sigla', 'sgl_casa'), + ('informacao_geral', 'txt_informacao_geral')] + for campo, prop in campos_para_propriedades: + setattr(casa, campo, propriedades[prop]) + # Localidade + sql_localidade = ''' + select nom_localidade, sgl_uf from localidade + where cod_localidade = {}'''.format(propriedades['cod_localidade']) + [(casa.municipio, casa.uf)] = exec_legado(sql_localidade) + casa.save() -def migrar_docs_logo(): +def migrar_logotipo_da_casa(): print('#### Migrando logotipo da casa ####') [(_, origem, destino)] = DOCS[CasaLegislativa] props_sapl = os.path.dirname(origem) @@ -132,7 +153,7 @@ def migrar_docs_logo(): ', '.join(sobrando)) mover_documento(origem, destino) - casa = get_casa_legislativa() + casa = CasaLegislativa.objects.first() casa.logotipo = destino casa.save() @@ -193,41 +214,6 @@ def migrar_docs_por_ids(model): obj.save() -def migrar_info_da_casa(): - props = 'media/sapl_documentos/propriedades.yaml' - campos_usados = { - 'cod_casa': 'codigo', - 'nom_casa': 'nome', - 'sgl_casa': 'sigla', - 'end_casa': 'endereco', - 'num_cep': 'cep', - 'num_tel': 'telefone', - 'num_fax': 'fax', - 'end_web_casa': 'endereco_web', - 'end_email_casa': 'email', - 'sgl_casa': 'sigla', - 'txt_informacao_geral': 'informacao_geral', - } - campos_nao_usados = [ - 'cor_borda', 'cor_fundo', 'cor_principal', 'id_logo', - 'ind_acesso_info_adm', 'txt_senha_inicial', 'versao', - ] - - f = open(props, 'r') - propriedades = yaml.safe_load(f) - for campo in campos_nao_usados: - propriedades.pop(campo) - cod_localidade = propriedades.pop('cod_localidade') - municipio = Municipio.objects.get(pk=cod_localidade) - - casa = CasaLegislativa.objects.first() - for nome_campo, valor in propriedades.items(): - setattr(casa, campos_usados[nome_campo], valor) - casa.municipio = municipio.nome - casa.uf = municipio.uf - casa.save() - - def migrar_documentos(): # aqui supomos que uma pasta chamada sapl_documentos está em MEDIA_ROOT # com o conteúdo da pasta de mesmo nome do zope @@ -237,8 +223,10 @@ def migrar_documentos(): # Isto significa que para rodar novamente esta função é preciso # restaurar a pasta sapl_documentos ao estado inicial - migrar_docs_logo() - migrar_info_da_casa() + # esta ordem é importante + migrar_propriedades_da_casa() + migrar_logotipo_da_casa() + for model in [ Parlamentar, MateriaLegislativa,