discourse/db/fixtures/009_users.rb
Penar Musaraj 9334d2f4f7
FEATURE: add more granular user option levels for email notifications (#7143)
Migrates email user options to a new data structure, where `email_always`, `email_direct` and `email_private_messages` are replace by

* `email_messages_level`, with options: `always`, `only_when_away` and `never` (defaults to `always`)
* `email_level`, with options: `always`, `only_when_away` and `never` (defaults to `only_when_away`)
2019-03-15 10:55:11 -04:00

65 lines
1.5 KiB
Ruby

# kind of odd, but we need it, we also need to nuke usage of User from inside migrations
# very poor form
user = User.find_by("id <> -1 and username_lower = 'system'")
if user
user.username = UserNameSuggester.suggest("system")
user.save
end
UserEmail.seed do |ue|
ue.id = -1
ue.email = "no_email"
ue.primary = true
ue.user_id = -1
end
User.seed do |u|
u.id = -1
u.name = "system"
u.username = "system"
u.username_lower = "system"
u.password = SecureRandom.hex
u.active = true
u.admin = true
u.moderator = true
u.approved = true
u.trust_level = TrustLevel[4]
end
UserOption.where(user_id: -1).update_all(
email_messages_level: UserOption.email_level_types[:never],
email_level: UserOption.email_level_types[:never]
)
Group.user_trust_level_change!(-1, TrustLevel[4])
# User for the smoke tests
if ENV["SMOKE"] == "1"
UserEmail.seed do |ue|
ue.id = 0
ue.email = "smoke_user@discourse.org"
ue.primary = true
ue.user_id = 0
end
smoke_user = User.seed do |u|
u.id = 0
u.name = "smoke_user"
u.username = "smoke_user"
u.username_lower = "smoke_user"
u.password = "P4ssw0rd"
u.active = true
u.approved = true
u.approved_at = Time.now
u.trust_level = TrustLevel[3]
end.first
UserOption.where(user_id: smoke_user.id).update_all(
email_digests: false,
email_messages_level: UserOption.email_level_types[:never],
email_level: UserOption.email_level_types[:never]
)
EmailToken.where(user_id: smoke_user.id).update_all(confirmed: true)
end