Fixed missing downcase for login of agents and customers.

This commit is contained in:
Martin Edenhofer 2016-01-24 16:58:02 +01:00
parent 87e1a92e39
commit 70f5f21558

View file

@ -6,13 +6,13 @@ module Import::OTRS
=begin =begin
result = request_json( :Subaction => 'List', 1) result = request_json(Subaction: 'List', 1)
return return
{ some json structure } { some json structure }
result = request_json( :Subaction => 'List' ) result = request_json(Subaction: 'List')
return return
@ -131,8 +131,8 @@ module Import::OTRS
=end =end
def self.json(response) def self.json(response)
data = Encode.conv( 'utf8', response.body.to_s ) data = Encode.conv('utf8', response.body.to_s)
JSON.parse( data ) JSON.parse(data)
end end
=begin =begin
@ -257,13 +257,13 @@ module Import::OTRS
return return
{ {
:Ticket => { Ticket: {
:total => 1234, total: 1234,
:done => 13, done: 13,
}, },
:Base => { Base: {
:total => 1234, total: 1234,
:done => 13, done: 13,
}, },
} }
@ -612,7 +612,7 @@ module Import::OTRS
# find owner # find owner
if ticket_new[:owner] if ticket_new[:owner]
user = User.lookup(login: ticket_new[:owner]) user = User.find_by(login: ticket_new[:owner].downcase)
ticket_new[:owner_id] = if user ticket_new[:owner_id] = if user
user.id user.id
else else
@ -623,7 +623,7 @@ module Import::OTRS
# find customer # find customer
if ticket_new[:customer] if ticket_new[:customer]
user = User.lookup(login: ticket_new[:customer]) user = User.lookup(login: ticket_new[:customer].downcase)
ticket_new[:customer_id] = if user ticket_new[:customer_id] = if user
user.id user.id
else else
@ -682,41 +682,41 @@ module Import::OTRS
} }
if article_new[:sender] == 'customer' if article_new[:sender] == 'customer'
article_new[:sender_id] = Ticket::Article::Sender.lookup( name: 'Customer' ).id article_new[:sender_id] = Ticket::Article::Sender.lookup(name: 'Customer').id
article_new.delete( :sender ) article_new.delete(:sender)
end end
if article_new[:sender] == 'agent' if article_new[:sender] == 'agent'
article_new[:sender_id] = Ticket::Article::Sender.lookup( name: 'Agent' ).id article_new[:sender_id] = Ticket::Article::Sender.lookup(name: 'Agent').id
article_new.delete( :sender ) article_new.delete(:sender)
end end
if article_new[:sender] == 'system' if article_new[:sender] == 'system'
article_new[:sender_id] = Ticket::Article::Sender.lookup( name: 'System' ).id article_new[:sender_id] = Ticket::Article::Sender.lookup(name: 'System').id
article_new.delete( :sender ) article_new.delete(:sender)
end end
if article_new[:type] == 'email-external' if article_new[:type] == 'email-external'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'email' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'email').id
article_new[:internal] = false article_new[:internal] = false
elsif article_new[:type] == 'email-internal' elsif article_new[:type] == 'email-internal'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'email' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'email').id
article_new[:internal] = true article_new[:internal] = true
elsif article_new[:type] == 'note-external' elsif article_new[:type] == 'note-external'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'note' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'note').id
article_new[:internal] = false article_new[:internal] = false
elsif article_new[:type] == 'note-internal' elsif article_new[:type] == 'note-internal'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'note' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'note').id
article_new[:internal] = true article_new[:internal] = true
elsif article_new[:type] == 'phone' elsif article_new[:type] == 'phone'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'phone' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'phone').id
article_new[:internal] = false article_new[:internal] = false
elsif article_new[:type] == 'webrequest' elsif article_new[:type] == 'webrequest'
article_new[:type_id] = Ticket::Article::Type.lookup( name: 'web' ).id article_new[:type_id] = Ticket::Article::Type.lookup(name: 'web').id
article_new[:internal] = false article_new[:internal] = false
else else
article_new[:type_id] = 9 article_new[:type_id] = 9
end end
article_new.delete( :type ) article_new.delete(:type)
article_object = Ticket::Article.find_by( id: article_new[:id] ) article_object = Ticket::Article.find_by(id: article_new[:id])
# set state types # set state types
if article_object if article_object
@ -798,8 +798,8 @@ module Import::OTRS
if data =~ /%%(.+?)%%(.+?)%%/ if data =~ /%%(.+?)%%(.+?)%%/
from = $1 from = $1
to = $2 to = $2
state_from = Ticket::State.lookup( name: from ) state_from = Ticket::State.lookup(name: from)
state_to = Ticket::State.lookup( name: to ) state_to = Ticket::State.lookup(name: to)
if state_from if state_from
from_id = state_from.id from_id = state_from.id
end end
@ -922,13 +922,13 @@ module Import::OTRS
} }
# check if state already exists # check if state already exists
state_old = Ticket::State.lookup( id: state_new[:id] ) state_old = Ticket::State.lookup(id: state_new[:id])
# set state types # set state types
if state['TypeName'] == 'pending auto' if state['TypeName'] == 'pending auto'
state['TypeName'] = 'pending action' state['TypeName'] = 'pending action'
end end
state_type = Ticket::StateType.lookup( name: state['TypeName'] ) state_type = Ticket::StateType.lookup(name: state['TypeName'])
state_new[:state_type_id] = state_type.id state_new[:state_type_id] = state_type.id
if state_old if state_old
state_old.update_attributes(state_new) state_old.update_attributes(state_new)
@ -969,7 +969,7 @@ module Import::OTRS
} }
# check if state already exists # check if state already exists
priority_old = Ticket::Priority.lookup( id: priority_new[:id] ) priority_old = Ticket::Priority.lookup(id: priority_new[:id])
# set state types # set state types
if priority_old if priority_old
@ -1010,7 +1010,7 @@ module Import::OTRS
} }
# check if state already exists # check if state already exists
group_old = Group.lookup( id: group_new[:id] ) group_old = Group.lookup(id: group_new[:id])
# set state types # set state types
if group_old if group_old
@ -1070,7 +1070,7 @@ module Import::OTRS
end end
# check if agent already exists # check if agent already exists
user_old = User.lookup( id: user_new[:id] ) user_old = User.lookup(id: user_new[:id])
# check if login is already used # check if login is already used
login_in_use = User.where( "login = ? AND id != #{user_new[:id]}", user_new[:login].downcase ).count login_in_use = User.where( "login = ? AND id != #{user_new[:id]}", user_new[:login].downcase ).count
@ -1084,7 +1084,7 @@ module Import::OTRS
# only update roles if different (reduce sql statements) # only update roles if different (reduce sql statements)
if user_old.role_ids == user_new[:role_ids] if user_old.role_ids == user_new[:role_ids]
user_new.delete( :role_ids ) user_new.delete(:role_ids)
end end
user_old.update_attributes(user_new) user_old.update_attributes(user_new)
@ -1172,7 +1172,7 @@ module Import::OTRS
} }
local_roles.each {|role| local_roles.each {|role|
role_lookup = Role.lookup( name: role ) role_lookup = Role.lookup(name: role)
next if !role_lookup next if !role_lookup
local_role_ids.push role_lookup.id local_role_ids.push role_lookup.id
} }
@ -1203,8 +1203,8 @@ module Import::OTRS
UserCountry: :country, UserCountry: :country,
} }
role_agent = Role.lookup( name: 'Agent' ) role_agent = Role.lookup(name: 'Agent')
role_customer = Role.lookup( name: 'Customer' ) role_customer = Role.lookup(name: 'Customer')
records.each { |user| records.each { |user|
_set_valid(user) _set_valid(user)
@ -1223,17 +1223,17 @@ module Import::OTRS
} }
# check if customer already exists # check if customer already exists
user_old = User.lookup( login: user_new[:login] ) user_old = User.lookup(login: user_new[:login])
# create / update agent # create / update agent
if user_old if user_old
# do not update user if it is already agent # do not update user if it is already agent
if !user_old.role_ids.include?( role_agent.id ) if !user_old.role_ids.include?(role_agent.id)
# only update roles if different (reduce sql statements) # only update roles if different (reduce sql statements)
if user_old.role_ids == user_new[:role_ids] if user_old.role_ids == user_new[:role_ids]
user_new.delete( :role_ids ) user_new.delete(:role_ids)
end end
log "update User.find(#{user_old[:id]})" log "update User.find(#{user_old[:id]})"
user_old.update_attributes(user_new) user_old.update_attributes(user_new)
@ -1252,7 +1252,7 @@ module Import::OTRS
if user['UserCustomerID'] if user['UserCustomerID']
organizations.each {|organization| organizations.each {|organization|
next if user['UserCustomerID'] != organization['CustomerID'] next if user['UserCustomerID'] != organization['CustomerID']
organization = Organization.lookup(name: organization['CustomerCompanyName'] ) organization = Organization.lookup(name: organization['CustomerCompanyName'])
organization_id = organization.id organization_id = organization.id
} }
end end
@ -1285,7 +1285,7 @@ module Import::OTRS
} }
# check if state already exists # check if state already exists
organization_old = Organization.lookup( name: organization_new[:name] ) organization_old = Organization.lookup(name: organization_new[:name])
# set state types # set state types
if organization_old if organization_old
@ -1306,22 +1306,22 @@ module Import::OTRS
# fqdn # fqdn
if setting['Key'] == 'FQDN' if setting['Key'] == 'FQDN'
Setting.set( 'fqdn', setting['Value'] ) Setting.set('fqdn', setting['Value'])
end end
# http type # http type
if setting['Key'] == 'HttpType' if setting['Key'] == 'HttpType'
Setting.set( 'http_type', setting['Value'] ) Setting.set('http_type', setting['Value'])
end end
# system id # system id
if setting['Key'] == 'SystemID' if setting['Key'] == 'SystemID'
Setting.set( 'system_id', setting['Value'] ) Setting.set('system_id', setting['Value'])
end end
# organization # organization
if setting['Key'] == 'Organization' if setting['Key'] == 'Organization'
Setting.set( 'organization', setting['Value'] ) Setting.set('organization', setting['Value'])
end end
# sending emails # sending emails
@ -1332,17 +1332,17 @@ module Import::OTRS
# number generater # number generater
if setting['Key'] == 'Ticket::NumberGenerator' if setting['Key'] == 'Ticket::NumberGenerator'
if setting['Value'] == 'Kernel::System::Ticket::Number::DateChecksum' if setting['Value'] == 'Kernel::System::Ticket::Number::DateChecksum'
Setting.set( 'ticket_number', 'Ticket::Number::Date' ) Setting.set('ticket_number', 'Ticket::Number::Date')
Setting.set( 'ticket_number_date', { checksum: true } ) Setting.set('ticket_number_date', { checksum: true })
elsif setting['Value'] == 'Kernel::System::Ticket::Number::Date' elsif setting['Value'] == 'Kernel::System::Ticket::Number::Date'
Setting.set( 'ticket_number', 'Ticket::Number::Date' ) Setting.set('ticket_number', 'Ticket::Number::Date')
Setting.set( 'ticket_number_date', { checksum: false } ) Setting.set('ticket_number_date', { checksum: false })
end end
end end
# ticket hook # ticket hook
if setting['Key'] == 'Ticket::Hook' if setting['Key'] == 'Ticket::Hook'
Setting.set( 'ticket_hook', setting['Value'] ) Setting.set('ticket_hook', setting['Value'])
end end
} }
end end
@ -1381,7 +1381,7 @@ module Import::OTRS
} }
# fix OTRS 3.1 bug, no close time if ticket is created # fix OTRS 3.1 bug, no close time if ticket is created
if record['StateType'] == 'closed' && ( !record['Closed'] || record['Closed'].empty? ) if record['StateType'] == 'closed' && (!record['Closed'] || record['Closed'].empty?)
record['Closed'] = record['Created'] record['Closed'] = record['Created']
end end
end end
@ -1391,7 +1391,7 @@ module Import::OTRS
data.each { |key, value| data.each { |key, value|
next if !value next if !value
next if value.class != String next if value.class != String
data[key] = Encode.conv( 'utf8', value ) data[key] = Encode.conv('utf8', value)
} }
end end
@ -1411,7 +1411,7 @@ module Import::OTRS
email = nil email = nil
begin begin
email = Mail::Address.new( article['from'] ).address email = Mail::Address.new(article['from']).address
rescue rescue
email = article['from'] email = article['from']
if article['from'] =~ /<(.+?)>/ if article['from'] =~ /<(.+?)>/
@ -1432,9 +1432,9 @@ module Import::OTRS
end end
# do extra decoding because we needed to use field.value # do extra decoding because we needed to use field.value
display_name = Mail::Field.new( 'X-From', display_name ).to_s display_name = Mail::Field.new('X-From', display_name).to_s
roles = Role.lookup( name: 'Customer' ) roles = Role.lookup(name: 'Customer')
begin begin
user = User.create( user = User.create(
login: email, login: email,