diff --git a/sapl/base/search_indexes.py b/sapl/base/search_indexes.py index 1bb379091..18401b868 100644 --- a/sapl/base/search_indexes.py +++ b/sapl/base/search_indexes.py @@ -1,8 +1,9 @@ +import os.path import textract +from django.template import Context, loader from haystack import indexes from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa -from django.template import Context, loader class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable): @@ -32,6 +33,9 @@ class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable): 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', ' ') diff --git a/sapl/utils.py b/sapl/utils.py index c40160958..3a857f337 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -1,5 +1,6 @@ import hashlib import logging +import os import re from datetime import date from functools import wraps @@ -364,6 +365,10 @@ TIPOS_IMG_PERMITIDOS = ( def fabrica_validador_de_tipos_de_arquivo(lista, nome): def restringe_tipos_de_arquivo(value): + if not os.path.splitext(value.path)[1][:1]: + raise ValidationError(_( + 'Não é possível fazer upload de arquivos sem extensão.')) + mime = magic.from_buffer(value.read(), mime=True) if mime not in lista: raise ValidationError(_('Tipo de arquivo não suportado')) @@ -371,6 +376,7 @@ def fabrica_validador_de_tipos_de_arquivo(lista, nome): restringe_tipos_de_arquivo.__name__ = nome return restringe_tipos_de_arquivo + restringe_tipos_de_arquivo_txt = fabrica_validador_de_tipos_de_arquivo( TIPOS_TEXTO_PERMITIDOS, 'restringe_tipos_de_arquivo_txt') restringe_tipos_de_arquivo_img = fabrica_validador_de_tipos_de_arquivo( @@ -382,6 +388,7 @@ def intervalos_tem_intersecao(a_inicio, a_fim, b_inicio, b_fim): menor_fim = min(a_fim, b_fim) return maior_inicio <= menor_fim + """ def permissoes(nome_grupo, app_label): lista_permissoes = []