From 26b936de06235dd5d557e9c36dd468d0d14ce6a8 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Mon, 3 Apr 2017 10:15:20 -0300 Subject: [PATCH] =?UTF-8?q?Impede=20o=20upload=20de=20arquivos=20sem=20ext?= =?UTF-8?q?ens=C3=A3o=20nome?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/search_indexes.py | 6 +++++- sapl/utils.py | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 = []