diff options
author | Patrick Figel <patrick@figel.email> | 2017-04-29 02:44:03 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-04-29 02:44:03 +0200 |
commit | 197af5de70221498f44c60ebfbffd4d4c803dead (patch) | |
tree | d348fa89a5f20398074f6b72bee2848f02783a8b | |
parent | 27301312a698e0fd2d1898d9e1c579d7f9ee861f (diff) |
Set unknown attachment type when adding domain blocks (#2605)
Follow-up to #2599. When a domain block with `reject_media` is added or `rake mastodon:media:remove_remote` is invoked, mastodon deletes the locally cached attachments and avatars but does not reflect that change in the database, causing the `file` fields to still have values. This change persists the deletion in the database and sets the attachment type to unknown. This also introduces a one-off rake task that sets all attachments without a local file to the "unknown" type. The upgrade notes for the next release should contain a post-upgrade step with `rake mastodon:media:set_unknown`.
-rw-r--r-- | app/services/block_domain_service.rb | 3 | ||||
-rw-r--r-- | lib/tasks/mastodon.rake | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb index 5d13cfc0e..d15a1e83c 100644 --- a/app/services/block_domain_service.rb +++ b/app/services/block_domain_service.rb @@ -39,12 +39,15 @@ class BlockDomainService < BaseService blocked_domain_accounts.find_each do |account| account.avatar.destroy account.header.destroy + account.save end end def clear_account_attachments media_from_blocked_domain.find_each do |attachment| attachment.file.destroy + attachment.type = :unknown + attachment.save end end diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 2f2d10a48..985747936 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -53,8 +53,18 @@ namespace :mastodon do task remove_remote: :environment do MediaAttachment.where.not(remote_url: '').where('created_at < ?', 1.week.ago).find_each do |media| media.file.destroy + media.type = :unknown + media.save end end + + desc 'Set unknown attachment type for remote-only attachments' + task set_unknown: :environment do + Rails.logger.debug 'Setting unknown attachment type for remote-only attachments...' + # rubocop:disable Rails/SkipsModelValidations + MediaAttachment.where(file_file_name: nil).where.not(type: :unknown).in_batches.update_all(type: :unknown) + Rails.logger.debug 'Done!' + end end namespace :push do |