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`.
This commit is contained in:
		
							parent
							
								
									27301312a6
								
							
						
					
					
						commit
						197af5de70
					
				| @ -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 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user