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 os
import re import re
from glob import glob from glob import glob
import magic
from sapl.base.models import CasaLegislativa from sapl.base.models import CasaLegislativa
from sapl.materia.models import MateriaLegislativa
from sapl.parlamentares.models import Parlamentar from sapl.parlamentares.models import Parlamentar
from sapl.settings import MEDIA_ROOT from sapl.settings import MEDIA_ROOT
# MIGRAÇÃO DE DOCUMENTOS ################################################### # 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 = { DOCS = {
CasaLegislativa: ( CasaLegislativa: (
@ -16,7 +32,12 @@ DOCS = {
Parlamentar: ( Parlamentar: (
'fotografia', 'fotografia',
'parlamentar/fotos/{}_foto_parlamentar', '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, DOCS = {tipo: (campo,
@ -57,6 +78,19 @@ def migrar_docs_logo():
casa.save() 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): def migrar_docs_por_ids(tipo):
campo, base_origem, base_destino = DOCS[tipo] campo, base_origem, base_destino = DOCS[tipo]
origens = glob(em_media(base_origem.format('*'))) origens = glob(em_media(base_origem.format('*')))
@ -66,8 +100,8 @@ def migrar_docs_por_ids(tipo):
return int(match.group(1)) return int(match.group(1))
for origem in origens: for origem in origens:
id = get_id(origem) id, extensao = get_id(origem), get_extensao(origem)
destino = base_destino.format(id) destino = base_destino.format(id, extensao)
mover_documento(origem, destino) mover_documento(origem, destino)
obj = tipo.objects.get(pk=id) obj = tipo.objects.get(pk=id)
setattr(obj, campo, destino) setattr(obj, campo, destino)
@ -81,3 +115,4 @@ def migrar_documentos():
# apagada # apagada
migrar_docs_logo() migrar_docs_logo()
migrar_docs_por_ids(Parlamentar) migrar_docs_por_ids(Parlamentar)
migrar_docs_por_ids(MateriaLegislativa)

Loading…
Cancel
Save