Fix site upload validations (#22479)
* Fix site settings media upload handling of DimensionsValidationError Fixes #22234 * Fix underlying validations not being performed for site uploads
This commit is contained in:
parent
42f9693d00
commit
acec1fb745
|
@ -66,6 +66,7 @@ class Form::AdminSettings
|
|||
validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) }
|
||||
validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) }
|
||||
validates :site_short_description, length: { maximum: 200 }, if: -> { defined?(@site_short_description) }
|
||||
validate :validate_site_uploads
|
||||
|
||||
KEYS.each do |key|
|
||||
define_method(key) do
|
||||
|
@ -87,11 +88,16 @@ class Form::AdminSettings
|
|||
define_method("#{key}=") do |file|
|
||||
value = public_send(key)
|
||||
value.file = file
|
||||
rescue Mastodon::DimensionsValidationError => e
|
||||
errors.add(key.to_sym, e.message)
|
||||
end
|
||||
end
|
||||
|
||||
def save
|
||||
return false unless valid?
|
||||
# NOTE: Annoyingly, files are processed and can error out before
|
||||
# validations are called, and `valid?` clears errors…
|
||||
# So for now, return early if errors aren't empty.
|
||||
return false unless errors.empty? && valid?
|
||||
|
||||
KEYS.each do |key|
|
||||
next unless instance_variable_defined?("@#{key}")
|
||||
|
@ -116,4 +122,16 @@ class Form::AdminSettings
|
|||
value
|
||||
end
|
||||
end
|
||||
|
||||
def validate_site_uploads
|
||||
UPLOAD_KEYS.each do |key|
|
||||
next unless instance_variable_defined?("@#{key}")
|
||||
upload = instance_variable_get("@#{key}")
|
||||
next if upload.valid?
|
||||
|
||||
upload.errors.each do |error|
|
||||
errors.import(error, attribute: key)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue