mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
REFACTOR: Track manual locked user levels separately from groups
This commit is contained in:
@@ -83,6 +83,17 @@ ColumnDropper.drop(
|
||||
}
|
||||
)
|
||||
|
||||
ColumnDropper.drop(
|
||||
table: 'users',
|
||||
after_migration: 'AddTrustLevelLocksToUsers',
|
||||
columns: %w[
|
||||
trust_level_locked
|
||||
],
|
||||
on_drop: ->() {
|
||||
STDERR.puts 'Removing user trust_level_locked!'
|
||||
}
|
||||
)
|
||||
|
||||
# User for the smoke tests
|
||||
if ENV["SMOKE"] == "1"
|
||||
UserEmail.seed do |ue|
|
||||
|
||||
27
db/migrate/20171123200157_add_trust_level_locks_to_users.rb
Normal file
27
db/migrate/20171123200157_add_trust_level_locks_to_users.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
class AddTrustLevelLocksToUsers < ActiveRecord::Migration[5.1]
|
||||
def up
|
||||
add_column :users, :group_locked_trust_level, :integer, null: true
|
||||
add_column :users, :manual_locked_trust_level, :integer, null: true
|
||||
|
||||
execute <<~SQL
|
||||
UPDATE users SET manual_locked_trust_level = trust_level WHERE trust_level_locked
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
UPDATE users SET group_locked_trust_level = x.tl
|
||||
FROM users AS u
|
||||
INNER JOIN (
|
||||
SELECT gu.user_id, MAX(g.grant_trust_level) AS tl
|
||||
FROM group_users AS gu
|
||||
INNER JOIN groups AS g ON gu.group_id = g.id
|
||||
WHERE g.grant_trust_level IS NOT NULL
|
||||
GROUP BY gu.user_id
|
||||
) AS x ON x.user_id = u.id
|
||||
WHERE users.id = u.id
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user