Browse Source

Merge pull request #1090 from interlegis/1030-migracao-textos-norma

fix #1030 - migracao textos norma
pull/1091/head
Luciano Henrique Nunes de Almeida 8 years ago
committed by GitHub
parent
commit
0864b8c9a3
  1. 6
      sapl/base/search_indexes.py
  2. 30
      sapl/legacy/migracao_documentos.py

6
sapl/base/search_indexes.py

@ -7,6 +7,8 @@ from haystack import indexes
from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa
from sapl.norma.models import NormaJuridica from sapl.norma.models import NormaJuridica
from textract.exceptions import ExtensionNotSupported
class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable): class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True) text = indexes.CharField(document=True, use_template=True)
@ -32,15 +34,19 @@ class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):
if arquivo: if arquivo:
try: try:
arquivo.open() arquivo.open()
arquivo.close()
except OSError: except OSError:
return self.prepared_data return self.prepared_data
if not os.path.splitext(arquivo.path)[1][:1]: if not os.path.splitext(arquivo.path)[1][:1]:
return self.prepared_data return self.prepared_data
try:
extracted_data = textract.process( extracted_data = textract.process(
arquivo.path).decode( arquivo.path).decode(
'utf-8').replace('\n', ' ') 'utf-8').replace('\n', ' ')
except ExtensionNotSupported:
return self.prepared_data
extracted_data = extracted_data.replace('\t', ' ') extracted_data = extracted_data.replace('\t', ' ')

30
sapl/legacy/migracao_documentos.py

@ -11,6 +11,7 @@ from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa,
from sapl.norma.models import NormaJuridica from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import Parlamentar from sapl.parlamentares.models import Parlamentar
from sapl.protocoloadm.models import DocumentoAdministrativo from sapl.protocoloadm.models import DocumentoAdministrativo
from sapl.protocoloadm.models import DocumentoAcessorioAdministrativo
from sapl.sessao.models import SessaoPlenaria from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MEDIA_ROOT from sapl.settings import MEDIA_ROOT
from sapl.utils import delete_texto, save_texto from sapl.utils import delete_texto, save_texto
@ -29,6 +30,17 @@ 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': '.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
@ -53,7 +65,7 @@ DOCS = {
'materia/{}', 'materia/{}',
'documentoacessorio/{0}/{0}{1}')], 'documentoacessorio/{0}/{0}{1}')],
NormaJuridica: [( NormaJuridica: [(
'texto_original', 'texto_integral',
'norma_juridica/{}_texto_integral', 'norma_juridica/{}_texto_integral',
'normajuridica/{0}/{0}_texto_integral{1}')], 'normajuridica/{0}/{0}_texto_integral{1}')],
SessaoPlenaria: [ SessaoPlenaria: [
@ -71,7 +83,13 @@ DOCS = {
DocumentoAdministrativo: [( DocumentoAdministrativo: [(
'texto_integral', 'texto_integral',
'administrativo/{}_texto_integral', 'administrativo/{}_texto_integral',
'documentoadministrativo/{0}/{0}_texto_integral{1}')], 'documentoadministrativo/{0}/{0}_texto_integral{1}')
],
DocumentoAcessorioAdministrativo: [(
'arquivo',
'administrativo/{}',
'documentoacessorioadministrativo/{0}/{0}_acessorio_administrativo{1}')
],
} }
DOCS = {tipo: [(campo, DOCS = {tipo: [(campo,
@ -105,9 +123,14 @@ def migrar_docs_logo():
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)
# a pasta props_sapl deve conter apenas o origem e metadatas! # a pasta props_sapl deve conter apenas o origem e metadatas!
# Edit: Aparentemente há diretório que contém properties ao invés de
# metadata. O assert foi modificado para essa situação.
assert set(os.listdir(em_media(props_sapl))) < { assert set(os.listdir(em_media(props_sapl))) < {
'logo_casa.gif', '.metadata', 'logo_casa.gif.metadata'} 'logo_casa.gif', '.metadata', 'logo_casa.gif.metadata',
'.properties', 'logo_casa.gif.properties', '.objects'}
mover_documento(origem, destino) mover_documento(origem, destino)
casa = get_casa_legislativa() casa = get_casa_legislativa()
casa.logotipo = destino casa.logotipo = destino
@ -199,6 +222,7 @@ def migrar_documentos():
SessaoPlenaria, SessaoPlenaria,
Proposicao, Proposicao,
DocumentoAdministrativo, DocumentoAdministrativo,
DocumentoAcessorioAdministrativo,
]: ]:
migrar_docs_por_ids(tipo) migrar_docs_por_ids(tipo)

Loading…
Cancel
Save