Browse Source

Migra texto integral de Matéria

pull/978/head
Marcio Mazza 8 years ago
parent
commit
899838a096
  1. 41
      sapl/legacy/migracao_documentos.py

41
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)

Loading…
Cancel
Save