From 2eba9c1926b5ea428df57c9e976e10d7593a6ddc Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Tue, 30 Jan 2018 17:18:01 -0200 Subject: [PATCH] =?UTF-8?q?Refatora=20migra=C3=A7=C3=A3o=20das=20proprieda?= =?UTF-8?q?des=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,