forked from mastodon/mastodon
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Record account suspend/silence time and keep track of domain blocks (m…
…astodon#10660) * Record account suspend/silence time and keep track of domain blocks * Also unblock users who were suspended/silenced before dates were recorded * Add tests * Keep track of suspending date for users suspended through the CLI * Show accurate number of accounts that would be affected by unsuspending an instance * Change migration to set silenced_at and suspended_at * Revert "Also unblock users who were suspended/silenced before dates were recorded" This reverts commit a015c65. * Switch from using suspended and silenced to suspended_at and silenced_at * Add post-deployment migration script to remove `suspended` and `silenced` columns * Use Account#silence! and Account#suspend! instead of updating the underlying property * Add silenced_at and suspended_at migration to post-migration * Change account fabricator to translate suspended and silenced attributes * Minor fixes * Make unblocking domains always retroactive
- Loading branch information
1 parent
4b6f590
commit f661255
Showing
30 changed files
with
226 additions
and
115 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2] | ||
class Account < ApplicationRecord | ||
# Dummy class, to make migration possible across version changes | ||
end | ||
|
||
class DomainBlock < ApplicationRecord | ||
# Dummy class, to make migration possible across version changes | ||
enum severity: [:silence, :suspend, :noop] | ||
|
||
has_many :accounts, foreign_key: :domain, primary_key: :domain | ||
end | ||
|
||
def up | ||
add_column :accounts, :silenced_at, :datetime | ||
add_column :accounts, :suspended_at, :datetime | ||
|
||
# Record suspend date of blocks and silences for users whose limitations match | ||
# a domain block | ||
DomainBlock.where(severity: [:silence, :suspend]).find_each do |block| | ||
scope = block.accounts | ||
if block.suspend? | ||
block.accounts.where(suspended: true).in_batches.update_all(suspended_at: block.created_at) | ||
else | ||
block.accounts.where(silenced: true).in_batches.update_all(silenced_at: block.created_at) | ||
end | ||
end | ||
|
||
# Set dates for accounts which have limitations not related to a domain block | ||
Account.where(suspended: true, suspended_at: nil).in_batches.update_all(suspended_at: Time.now.utc) | ||
Account.where(silenced: true, silenced_at: nil).in_batches.update_all(silenced_at: Time.now.utc) | ||
end | ||
|
||
def down | ||
# Block or silence accounts that have a date set | ||
Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true) | ||
Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true) | ||
|
||
remove_column :accounts, :silenced_at | ||
remove_column :accounts, :suspended_at | ||
end | ||
end |
Oops, something went wrong.