Browse Source

Impede o upload de arquivos sem extensão nome

pull/991/head
Eduardo Calil 8 years ago
parent
commit
26b936de06
  1. 6
      sapl/base/search_indexes.py
  2. 7
      sapl/utils.py

6
sapl/base/search_indexes.py

@ -1,8 +1,9 @@
import os.path
import textract import textract
from django.template import Context, loader
from haystack import indexes from haystack import indexes
from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa from sapl.materia.models import DocumentoAcessorio, MateriaLegislativa
from django.template import Context, loader
class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable): class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):
@ -32,6 +33,9 @@ class DocumentoAcessorioIndex(indexes.SearchIndex, indexes.Indexable):
except OSError: except OSError:
return self.prepared_data return self.prepared_data
if not os.path.splitext(arquivo.path)[1][:1]:
return self.prepared_data
extracted_data = textract.process( extracted_data = textract.process(
arquivo.path).decode( arquivo.path).decode(
'utf-8').replace('\n', ' ') 'utf-8').replace('\n', ' ')

7
sapl/utils.py

@ -1,5 +1,6 @@
import hashlib import hashlib
import logging import logging
import os
import re import re
from datetime import date from datetime import date
from functools import wraps from functools import wraps
@ -364,6 +365,10 @@ TIPOS_IMG_PERMITIDOS = (
def fabrica_validador_de_tipos_de_arquivo(lista, nome): def fabrica_validador_de_tipos_de_arquivo(lista, nome):
def restringe_tipos_de_arquivo(value): 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) mime = magic.from_buffer(value.read(), mime=True)
if mime not in lista: if mime not in lista:
raise ValidationError(_('Tipo de arquivo não suportado')) 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 restringe_tipos_de_arquivo.__name__ = nome
return restringe_tipos_de_arquivo return restringe_tipos_de_arquivo
restringe_tipos_de_arquivo_txt = fabrica_validador_de_tipos_de_arquivo( restringe_tipos_de_arquivo_txt = fabrica_validador_de_tipos_de_arquivo(
TIPOS_TEXTO_PERMITIDOS, 'restringe_tipos_de_arquivo_txt') TIPOS_TEXTO_PERMITIDOS, 'restringe_tipos_de_arquivo_txt')
restringe_tipos_de_arquivo_img = fabrica_validador_de_tipos_de_arquivo( 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) menor_fim = min(a_fim, b_fim)
return maior_inicio <= menor_fim return maior_inicio <= menor_fim
""" """
def permissoes(nome_grupo, app_label): def permissoes(nome_grupo, app_label):
lista_permissoes = [] lista_permissoes = []

Loading…
Cancel
Save