From 899838a096308bf6380c7ba16a32e1d2cacbab66 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Tue, 21 Mar 2017 11:49:31 -0300 Subject: [PATCH] =?UTF-8?q?Migra=20texto=20integral=20de=20Mat=C3=A9ria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao_documentos.py | 41 +++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py index 5d03b47d3..a81196e2f 100644 --- a/sapl/legacy/migracao_documentos.py +++ b/sapl/legacy/migracao_documentos.py @@ -1,12 +1,28 @@ +import mimetypes import os import re from glob import glob +import magic + from sapl.base.models import CasaLegislativa +from sapl.materia.models import MateriaLegislativa from sapl.parlamentares.models import Parlamentar from sapl.settings import MEDIA_ROOT # MIGRAÇÃO DE DOCUMENTOS ################################################### +EXTENSOES = { + 'application/msword': '.doc', + 'application/pdf': '.pdf', + 'application/vnd.oasis.opendocument.text': '.odt', + 'application/vnd.openxmlformats-' + 'officedocument.wordprocessingml.document': '.docx', + 'application/xml': '.xml', + 'application/zip': '.zip', + 'image/jpeg': '.jpeg', + 'image/png': '.png', + 'text/html': '.html', +} DOCS = { CasaLegislativa: ( @@ -16,7 +32,12 @@ DOCS = { Parlamentar: ( 'fotografia', 'parlamentar/fotos/{}_foto_parlamentar', - 'parlamentar/{0}/{0}_foto_parlamentar'), + 'parlamentar/{0}/{0}_foto_parlamentar{1}'), + MateriaLegislativa: ( + 'texto_original', + 'materia/{}_texto_integral', + 'materialegislativa/{0}/{0}_texto_integral{1}', + ) } DOCS = {tipo: (campo, @@ -57,6 +78,19 @@ def migrar_docs_logo(): casa.save() +def get_extensao(caminho): + mime = magic.from_file(caminho, mime=True) + try: + return EXTENSOES[mime] + except KeyError as e: + raise Exception('\n'.join([ + 'Extensão não conhecida. Algumas possibilidades são:', ] + + [" '{}': '{}',".format(mime, ext) + for ext in mimetypes.guess_all_extensions(mime)] + + ['Atualize o código do dicionário EXTENSOES!'] + )) from e + + def migrar_docs_por_ids(tipo): campo, base_origem, base_destino = DOCS[tipo] origens = glob(em_media(base_origem.format('*'))) @@ -66,8 +100,8 @@ def migrar_docs_por_ids(tipo): return int(match.group(1)) for origem in origens: - id = get_id(origem) - destino = base_destino.format(id) + id, extensao = get_id(origem), get_extensao(origem) + destino = base_destino.format(id, extensao) mover_documento(origem, destino) obj = tipo.objects.get(pk=id) setattr(obj, campo, destino) @@ -81,3 +115,4 @@ def migrar_documentos(): # apagada migrar_docs_logo() migrar_docs_por_ids(Parlamentar) + migrar_docs_por_ids(MateriaLegislativa)