Repository: interlegis/sapl

Issue:
Migração Textos - Normas Jurídicas
Os textos das normas jurídicas são copiados para a estrutura exemplo:
 media/sapl/normajuridica/6935/6935_texto_integral.pdf

Porém o caminho não é gravado no banco para a norma.

em tempo, comentei o script de migração de documentos na função
```def migrar_docs_logo():
    print('#### Migrando logotipo da casa ####')
    [(_, origem, destino)] = DOCS[CasaLegislativa]
    props_sapl = os.path.dirname(origem)
#    a pasta props_sapl deve conter apenas o origem e metadatas!
#    assert set(os.listdir(em_media(props_sapl))) < {
#        'logo_casa.gif', '.metadata', 'logo_casa.gif.metadata'}
#    mover_documento(origem, destino)
#    casa = get_casa_legislativa()
#    casa.logotipo = destino
#    casa.save()
```
pois na minha dava erro nesta parte



Discussion:

Resolving patch:
diff --git a/sapl/base/search_indexes.py b/sapl/base/search_indexes.py
--- a/sapl/base/search_indexes.py
+++ b/sapl/base/search_indexes.py
@@ -7,6 +7,8 @@
 from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa
 from sapl.norma.models import NormaJuridica
 
+from textract.exceptions import ExtensionNotSupported
+
 
 class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):
     text = indexes.CharField(document=True, use_template=True)
@@ -32,15 +34,19 @@ def prepare(self, obj):
         if arquivo:
             try:
                 arquivo.open()
+                arquivo.close()
             except OSError:
                 return self.prepared_data
 
             if not os.path.splitext(arquivo.path)[1][:1]:
                 return self.prepared_data
 
-            extracted_data = textract.process(
-                arquivo.path).decode(
-                'utf-8').replace('\n', ' ')
+            try:
+                extracted_data = textract.process(
+                    arquivo.path).decode(
+                        'utf-8').replace('\n', ' ')
+            except ExtensionNotSupported:
+                return self.prepared_data
 
             extracted_data = extracted_data.replace('\t', ' ')
 
diff --git a/sapl/legacy/migracao_documentos.py b/sapl/legacy/migracao_documentos.py
--- a/sapl/legacy/migracao_documentos.py
+++ b/sapl/legacy/migracao_documentos.py
@@ -11,6 +11,7 @@
 from sapl.norma.models import NormaJuridica
 from sapl.parlamentares.models import Parlamentar
 from sapl.protocoloadm.models import DocumentoAdministrativo
+from sapl.protocoloadm.models import DocumentoAcessorioAdministrativo
 from sapl.sessao.models import SessaoPlenaria
 from sapl.settings import MEDIA_ROOT
 from sapl.utils import delete_texto, save_texto
@@ -29,6 +30,17 @@
     'text/html': '.html',
     'text/rtf': '.rtf',
     '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
     'application/octet-stream': '',  # binário
@@ -53,7 +65,7 @@
         'materia/{}',
         'documentoacessorio/{0}/{0}{1}')],
     NormaJuridica: [(
-        'texto_original',
+        'texto_integral',
         'norma_juridica/{}_texto_integral',
         'normajuridica/{0}/{0}_texto_integral{1}')],
     SessaoPlenaria: [
@@ -71,7 +83,13 @@
     DocumentoAdministrativo: [(
         '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,
@@ -105,9 +123,14 @@ def migrar_docs_logo():
     print('#### Migrando logotipo da casa ####')
     [(_, origem, destino)] = DOCS[CasaLegislativa]
     props_sapl = os.path.dirname(origem)
+
     # 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))) < {
-        '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)
     casa = get_casa_legislativa()
     casa.logotipo = destino
@@ -199,6 +222,7 @@ def migrar_documentos():
         SessaoPlenaria,
         Proposicao,
         DocumentoAdministrativo,
+      	DocumentoAcessorioAdministrativo,
     ]:
         migrar_docs_por_ids(tipo)
 


Test patch: