mirror of
https://github.com/discourse/discourse.git
synced 2025-03-22 13:26:40 +08:00
FEATURE: Pre-setting user locale via bulk invite (#15195)
This commit is contained in:
parent
4bb91754ad
commit
28bf9599f5
app/jobs/regular
spec
@ -111,7 +111,8 @@ module Jobs
|
||||
email = invite[:email]
|
||||
groups = get_groups(invite[:groups])
|
||||
topic = get_topic(invite[:topic_id])
|
||||
user_fields = get_user_fields(invite.except(:email, :groups, :topic_id))
|
||||
locale = invite[:locale]
|
||||
user_fields = get_user_fields(invite.except(:email, :groups, :topic_id, :locale))
|
||||
|
||||
begin
|
||||
if user = Invite.find_user_by_email(email)
|
||||
@ -133,13 +134,26 @@ module Jobs
|
||||
end
|
||||
user.save_custom_fields
|
||||
end
|
||||
|
||||
if locale.present?
|
||||
user.locale = locale
|
||||
user.save!
|
||||
end
|
||||
else
|
||||
if user_fields.present?
|
||||
if user_fields.present? || locale.present?
|
||||
user = User.where(staged: true).find_by_email(email)
|
||||
user ||= User.new(username: UserNameSuggester.suggest(email), email: email, staged: true)
|
||||
user_fields.each do |user_field, value|
|
||||
user.set_user_field(user_field, value)
|
||||
|
||||
if user_fields.present?
|
||||
user_fields.each do |user_field, value|
|
||||
user.set_user_field(user_field, value)
|
||||
end
|
||||
end
|
||||
|
||||
if locale.present?
|
||||
user.locale = locale
|
||||
end
|
||||
|
||||
user.save!
|
||||
end
|
||||
|
||||
|
4
spec/fixtures/csv/invites_with_locales.csv
vendored
Normal file
4
spec/fixtures/csv/invites_with_locales.csv
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
email,locale,team
|
||||
test@example.com,de,red
|
||||
test2@example.com,pl,blue
|
||||
test3@example.com,,red
|
|
@ -896,6 +896,8 @@ describe InvitesController do
|
||||
|
||||
let(:csv_file_with_headers) { File.new("#{Rails.root}/spec/fixtures/csv/discourse_headers.csv") }
|
||||
let(:file_with_headers) { Rack::Test::UploadedFile.new(File.open(csv_file_with_headers)) }
|
||||
let(:csv_file_with_locales) { File.new("#{Rails.root}/spec/fixtures/csv/invites_with_locales.csv") }
|
||||
let(:file_with_locales) { Rack::Test::UploadedFile.new(File.open(csv_file_with_locales)) }
|
||||
|
||||
it 'fails if you cannot bulk invite to the forum' do
|
||||
sign_in(Fabricate(:user))
|
||||
@ -947,6 +949,20 @@ describe InvitesController do
|
||||
user2 = User.where(staged: true).find_by_email('test2@example.com')
|
||||
expect(user2.user_fields[user_field.id.to_s]).to eq('europe')
|
||||
end
|
||||
|
||||
it 'can pre-set user locales' do
|
||||
Jobs.run_immediately!
|
||||
sign_in(admin)
|
||||
|
||||
post '/invites/upload_csv.json', params: { file: file_with_locales, name: 'discourse_headers.csv' }
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
user = User.where(staged: true).find_by_email('test@example.com')
|
||||
expect(user.locale).to eq('de')
|
||||
|
||||
user2 = User.where(staged: true).find_by_email('test2@example.com')
|
||||
expect(user2.locale).to eq('pl')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user