2018-02-13 18:18:20 +01:00
class Champs :: PieceJustificativeChamp < Champ
2018-06-15 14:27:33 +02:00
PIECE_JUSTIFICATIVE_FILE_MAX_SIZE = 200 . megabytes
PIECE_JUSTIFICATIVE_FILE_ACCEPTED_FORMATS = [
" application/pdf " ,
" application/msword " ,
" application/vnd.openxmlformats-officedocument.wordprocessingml.document " ,
" application/vnd.ms-excel " ,
" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet " ,
" application/vnd.ms-powerpoint " ,
" application/vnd.openxmlformats-officedocument.presentationml.presentation " ,
" application/vnd.oasis.opendocument.text " ,
" application/vnd.oasis.opendocument.presentation " ,
" application/vnd.oasis.opendocument.spreadsheet " ,
" image/png " ,
" image/jpeg "
]
2020-03-24 18:05:36 +01:00
def main_value_name
:piece_justificative_file
end
2018-07-25 19:34:06 +02:00
def search_terms
# We don’ t know how to search inside documents yet
end
2018-06-14 17:44:03 +02:00
def mandatory_and_blank?
mandatory? && ! piece_justificative_file . attached?
end
2018-06-15 14:27:33 +02:00
def piece_justificative_file_errors
errors = [ ]
if piece_justificative_file . attached? && piece_justificative_file . previous_changes . present?
if piece_justificative_file . blob . byte_size > PIECE_JUSTIFICATIVE_FILE_MAX_SIZE
2018-12-24 17:43:12 +01:00
errors << " Le fichier #{ piece_justificative_file . filename } est trop lourd, il doit faire au plus #{ PIECE_JUSTIFICATIVE_FILE_MAX_SIZE . to_s ( :human_size , precision : 2 ) } "
2018-06-15 14:27:33 +02:00
end
if ! piece_justificative_file . blob . content_type . in? ( PIECE_JUSTIFICATIVE_FILE_ACCEPTED_FORMATS )
2018-12-24 17:43:12 +01:00
errors << " Le fichier #{ piece_justificative_file . filename } est dans un format que nous n'acceptons pas "
2018-06-15 14:27:33 +02:00
end
# FIXME: add Clamav check
end
if errors . present?
2019-05-21 11:36:19 +02:00
piece_justificative_file . purge_later
2018-06-15 14:27:33 +02:00
end
errors
end
2019-05-02 11:37:35 +02:00
def for_api
2019-04-25 12:56:25 +02:00
if piece_justificative_file . attached? && ( piece_justificative_file . virus_scanner . safe? || piece_justificative_file . virus_scanner . pending? )
2019-12-19 18:15:37 +01:00
piece_justificative_file . service_url
2018-05-11 14:59:20 +02:00
end
end
2018-02-13 18:18:20 +01:00
end