demarches-normaliennes/app/uploaders/piece_justificative_uploader.rb

60 lines
1.5 KiB
Ruby
Raw Normal View History

2015-08-10 11:05:06 +02:00
# encoding: utf-8
class PieceJustificativeUploader < CarrierWave::Uploader::Base
2016-05-18 11:43:32 +02:00
before :cache, :set_original_filename
2015-08-10 11:05:06 +02:00
# Choose what kind of storage to use for this uploader:
if Features.remote_storage
storage :fog
else
storage :file
end
2015-08-10 11:05:06 +02:00
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
2016-05-18 11:43:32 +02:00
unless Features.remote_storage
"../uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
2015-08-10 11:05:06 +02:00
end
def cache_dir
'/tmp/tps-cache'
end
2015-08-10 11:05:06 +02:00
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_white_list
%w(pdf doc docx xls xlsx ppt pptx odt ods odp)
2015-08-10 11:05:06 +02:00
end
def filename
2016-05-18 11:43:32 +02:00
if original_filename.present? || model.content_secure_token
if Features.remote_storage
filename = "#{model.class.to_s.underscore}-#{secure_token}.#{file.extension.downcase}"
else original_filename
filename = "#{model.class.to_s.underscore}.#{file.extension.downcase}"
end
end
2016-05-18 11:43:32 +02:00
filename
end
def original_filename
model.original_filename
end
private
def secure_token
model.content_secure_token ||= generate_secure_token
end
2015-08-10 11:05:06 +02:00
def generate_secure_token
SecureRandom.uuid
end
2016-05-18 11:43:32 +02:00
def set_original_filename(file)
model.original_filename ||= file.original_filename if file.respond_to?(:original_filename)
end
2015-08-10 11:05:06 +02:00
end