* Fix #1642, fix #1912 - Previous change (#1718) did not modify how original file was saved on upload * Fix for when file is missing
This commit is contained in:
		@@ -21,6 +21,8 @@ class Account < ApplicationRecord
 | 
				
			|||||||
  validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
 | 
					  validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
 | 
				
			||||||
  validates_attachment_size :header, less_than: 2.megabytes
 | 
					  validates_attachment_size :header, less_than: 2.megabytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before_post_process :set_file_extensions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Local user profile validations
 | 
					  # Local user profile validations
 | 
				
			||||||
  validates :display_name, length: { maximum: 30 }, if: 'local?'
 | 
					  validates :display_name, length: { maximum: 30 }, if: 'local?'
 | 
				
			||||||
  validates :note, length: { maximum: 160 }, if: 'local?'
 | 
					  validates :note, length: { maximum: 160 }, if: 'local?'
 | 
				
			||||||
@@ -332,4 +334,20 @@ class Account < ApplicationRecord
 | 
				
			|||||||
      self.public_key  = keypair.public_key.to_pem
 | 
					      self.public_key  = keypair.public_key.to_pem
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def set_file_extensions
 | 
				
			||||||
 | 
					    unless avatar.blank?
 | 
				
			||||||
 | 
					      extension = Paperclip::Interpolations.content_type_extension(avatar, :original)
 | 
				
			||||||
 | 
					      basename  = Paperclip::Interpolations.basename(avatar, :original)
 | 
				
			||||||
 | 
					      avatar.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    unless header.blank?
 | 
				
			||||||
 | 
					      extension = Paperclip::Interpolations.content_type_extension(header, :original)
 | 
				
			||||||
 | 
					      basename  = Paperclip::Interpolations.basename(header, :original)
 | 
				
			||||||
 | 
					      header.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ class MediaAttachment < ApplicationRecord
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_create :set_shortcode
 | 
					  before_create :set_shortcode
 | 
				
			||||||
  before_post_process :set_type
 | 
					  before_post_process :set_type_and_extension
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  class << self
 | 
					  class << self
 | 
				
			||||||
    private
 | 
					    private
 | 
				
			||||||
@@ -103,7 +103,13 @@ class MediaAttachment < ApplicationRecord
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def set_type
 | 
					  def set_type_and_extension
 | 
				
			||||||
    self.type = VIDEO_MIME_TYPES.include?(file_content_type) ? :video : :image
 | 
					    self.type = VIDEO_MIME_TYPES.include?(file_content_type) ? :video : :image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    unless file.blank?
 | 
				
			||||||
 | 
					      extension = Paperclip::Interpolations.content_type_extension(file, :original)
 | 
				
			||||||
 | 
					      basename  = Paperclip::Interpolations.basename(file, :original)
 | 
				
			||||||
 | 
					      file.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ Paperclip.options[:read_timeout] = 60
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Paperclip.interpolates :filename do |attachment, style|
 | 
					Paperclip.interpolates :filename do |attachment, style|
 | 
				
			||||||
  return attachment.original_filename if style == :original
 | 
					  return attachment.original_filename if style == :original
 | 
				
			||||||
  [basename(attachment, style), content_type_extension(attachment, style)].delete_if(&:empty?).join('.')
 | 
					  [basename(attachment, style), extension(attachment, style)].delete_if(&:empty?).join('.')
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ENV['S3_ENABLED'] == 'true'
 | 
					if ENV['S3_ENABLED'] == 'true'
 | 
				
			||||||
@@ -39,6 +39,6 @@ if ENV['S3_ENABLED'] == 'true'
 | 
				
			|||||||
    Paperclip::Attachment.default_options[:s3_host_alias] = ENV['S3_CLOUDFRONT_HOST']
 | 
					    Paperclip::Attachment.default_options[:s3_host_alias] = ENV['S3_CLOUDFRONT_HOST']
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
  Paperclip::Attachment.default_options[:path]           = (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
					  Paperclip::Attachment.default_options[:path] = (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
				
			||||||
  Paperclip::Attachment.default_options[:url]            = (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
					  Paperclip::Attachment.default_options[:url]  = (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user