Browse Source

Merge branch '1561-migrar-props'

Fix #1561
pull/1689/head
Marcio Mazza 7 years ago
parent
commit
bccddd2490
  1. 126
      sapl/legacy/migracao_documentos.py

126
sapl/legacy/migracao_documentos.py

@ -3,9 +3,10 @@ import os
import re import re
import magic import magic
import yaml
from sapl.base.models import CasaLegislativa 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, from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa,
Proposicao) Proposicao)
from sapl.norma.models import NormaJuridica from sapl.norma.models import NormaJuridica
@ -29,17 +30,7 @@ EXTENSOES = {
'text/html': '.html', 'text/html': '.html',
'text/rtf': '.rtf', 'text/rtf': '.rtf',
'text/x-python': '.py', 'text/x-python': '.py',
'text/plain': '.ksh',
'text/plain': '.c',
'text/plain': '.h',
'text/plain': '.txt', '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 # sem extensao
'application/octet-stream': '', # binário 'application/octet-stream': '', # binário
@ -47,26 +38,31 @@ EXTENSOES = {
} }
DOCS = { DOCS = {
CasaLegislativa: [( CasaLegislativa: [
'logotipo', ('logotipo',
'props_sapl/logo_casa.gif', 'props_sapl/logo_casa.gif',
'casa/logotipo/logo_casa.gif')], 'casa/logotipo/logo_casa.gif')
Parlamentar: [( ],
'fotografia', Parlamentar: [
'parlamentar/fotos/{}_foto_parlamentar', ('fotografia',
'public/parlamentar/{0}/{0}_foto_parlamentar{1}')], 'parlamentar/fotos/{}_foto_parlamentar',
MateriaLegislativa: [( 'public/parlamentar/{0}/{0}_foto_parlamentar{1}')
'texto_original', ],
'materia/{}_texto_integral', MateriaLegislativa: [
'public/materialegislativa/{2}/{0}/{0}_texto_integral{1}')], ('texto_original',
DocumentoAcessorio: [( 'materia/{}_texto_integral',
'arquivo', 'public/materialegislativa/{2}/{0}/{0}_texto_integral{1}')
'materia/{}', ],
'public/documentoacessorio/{2}/{0}/{0}{1}')], DocumentoAcessorio: [
NormaJuridica: [( ('arquivo',
'texto_integral', 'materia/{}',
'norma_juridica/{}_texto_integral', 'public/documentoacessorio/{2}/{0}/{0}{1}')
'public/normajuridica/{2}/{0}/{0}_texto_integral{1}')], ],
NormaJuridica: [
('texto_integral',
'norma_juridica/{}_texto_integral',
'public/normajuridica/{2}/{0}/{0}_texto_integral{1}')
],
SessaoPlenaria: [ SessaoPlenaria: [
('upload_ata', ('upload_ata',
'ata_sessao/{}_ata_sessao', 'ata_sessao/{}_ata_sessao',
@ -75,20 +71,21 @@ DOCS = {
'anexo_sessao/{}_texto_anexado', 'anexo_sessao/{}_texto_anexado',
'public/sessaoplenaria/{0}/anexo/{0}_texto_anexado{1}') 'public/sessaoplenaria/{0}/anexo/{0}_texto_anexado{1}')
], ],
Proposicao: [( Proposicao: [
'texto_original', ('texto_original',
'proposicao/{}', 'proposicao/{}',
'private/proposicao/{0}/{0}{1}')], 'private/proposicao/{0}/{0}{1}')
DocumentoAdministrativo: [(
'texto_integral',
'administrativo/{}_texto_integral',
'private/documentoadministrativo/{0}/{0}_texto_integral{1}')
], ],
DocumentoAcessorioAdministrativo: [( DocumentoAdministrativo: [
'arquivo', ('texto_integral',
'administrativo/{}', 'administrativo/{}_texto_integral',
'private/documentoacessorioadministrativo/{0}/' 'private/documentoadministrativo/{0}/{0}_texto_integral{1}')
'{0}_acessorio_administrativo{1}') ],
DocumentoAcessorioAdministrativo: [
('arquivo',
'administrativo/{}',
'private/documentoacessorioadministrativo/{0}/'
'{0}_acessorio_administrativo{1}')
], ],
} }
@ -110,16 +107,36 @@ def mover_documento(origem, destino):
os.rename(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() casa = CasaLegislativa.objects.first()
if not casa: if not casa:
casa = CasaLegislativa.objects.create(**{k: 'PREENCHER...' for k in [ casa = CasaLegislativa()
'codigo', 'nome', 'sigla', 'endereco', 'cep', 'municipio', 'uf', campos_para_propriedades = [('codigo', 'cod_casa'),
]}) ('nome', 'nom_casa'),
return 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 ####') print('#### Migrando logotipo da casa ####')
[(_, origem, destino)] = DOCS[CasaLegislativa] [(_, origem, destino)] = DOCS[CasaLegislativa]
props_sapl = os.path.dirname(origem) props_sapl = os.path.dirname(origem)
@ -136,7 +153,7 @@ def migrar_docs_logo():
', '.join(sobrando)) ', '.join(sobrando))
mover_documento(origem, destino) mover_documento(origem, destino)
casa = get_casa_legislativa() casa = CasaLegislativa.objects.first()
casa.logotipo = destino casa.logotipo = destino
casa.save() casa.save()
@ -163,7 +180,7 @@ def migrar_docs_por_ids(model):
print('#### Migrando {} de {} ####'.format(campo, model.__name__)) print('#### Migrando {} de {} ####'.format(campo, model.__name__))
dir_origem, nome_origem = os.path.split(em_media(base_origem)) 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): if not os.path.isdir(dir_origem):
print(' >>> O diretório {} não existe! Abortado.'.format( print(' >>> O diretório {} não existe! Abortado.'.format(
@ -206,7 +223,10 @@ def migrar_documentos():
# Isto significa que para rodar novamente esta função é preciso # Isto significa que para rodar novamente esta função é preciso
# restaurar a pasta sapl_documentos ao estado inicial # restaurar a pasta sapl_documentos ao estado inicial
migrar_docs_logo() # esta ordem é importante
migrar_propriedades_da_casa()
migrar_logotipo_da_casa()
for model in [ for model in [
Parlamentar, Parlamentar,
MateriaLegislativa, MateriaLegislativa,

Loading…
Cancel
Save