Updated test result check. Added postgresql support. Do not import articles a second time on reimport (use message_id for identifier).

This commit is contained in:
Martin Edenhofer 2016-02-04 00:35:49 +01:00
parent b1a706bd6c
commit a080d62611
2 changed files with 26 additions and 14 deletions

View file

@ -677,7 +677,13 @@ module Import::Zendesk
end end
end end
local_ticket = Ticket.create_or_update( local_ticket_fields ) local_ticket = Ticket.find_by(id: local_ticket_fields[:id])
if local_ticket
local_ticket.update_attributes(local_ticket_fields)
else
local_ticket = Ticket.create(local_ticket_fields)
_reset_pk('tickets')
end
zendesk_ticket_tags = [] zendesk_ticket_tags = []
zendesk_ticket.tags.each { |tag| zendesk_ticket.tags.each { |tag|
@ -704,6 +710,7 @@ module Import::Zendesk
ticket_id: local_ticket.id, ticket_id: local_ticket.id,
body: zendesk_article.html_body, body: zendesk_article.html_body,
internal: !zendesk_article.public, internal: !zendesk_article.public,
message_id: zendesk_article.id,
updated_by_id: @zendesk_user_mapping[ zendesk_article.author_id ] || 1, updated_by_id: @zendesk_user_mapping[ zendesk_article.author_id ] || 1,
created_by_id: @zendesk_user_mapping[ zendesk_article.author_id ] || 1, created_by_id: @zendesk_user_mapping[ zendesk_article.author_id ] || 1,
} }
@ -719,19 +726,14 @@ module Import::Zendesk
end end
if zendesk_article.via.channel == 'web' if zendesk_article.via.channel == 'web'
local_article_fields[:message_id] = zendesk_article.id
local_article_fields[:type_id] = article_type_web.id local_article_fields[:type_id] = article_type_web.id
elsif zendesk_article.via.channel == 'email' elsif zendesk_article.via.channel == 'email'
local_article_fields[:from] = zendesk_article.via.source.from.address local_article_fields[:from] = zendesk_article.via.source.from.address
local_article_fields[:to] = zendesk_article.via.source.to.address # Notice zendesk_article.via.from.original_recipients=[\"another@gmail.com\", \"support@example.zendesk.com\"] local_article_fields[:to] = zendesk_article.via.source.to.address # Notice zendesk_article.via.from.original_recipients=[\"another@gmail.com\", \"support@example.zendesk.com\"]
local_article_fields[:message_id] = zendesk_article.id
local_article_fields[:type_id] = article_type_email.id local_article_fields[:type_id] = article_type_email.id
elsif zendesk_article.via.channel == 'sample_ticket' elsif zendesk_article.via.channel == 'sample_ticket'
local_article_fields[:message_id] = zendesk_article.id
local_article_fields[:type_id] = article_type_note.id local_article_fields[:type_id] = article_type_note.id
elsif zendesk_article.via.channel == 'twitter' elsif zendesk_article.via.channel == 'twitter'
local_article_fields[:message_id] = zendesk_article.id
local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'mention' local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'mention'
article_type_twitter_status.id article_type_twitter_status.id
else else
@ -742,7 +744,6 @@ module Import::Zendesk
local_article_fields[:from] = zendesk_article.via.source.from.facebook_id local_article_fields[:from] = zendesk_article.via.source.from.facebook_id
local_article_fields[:to] = zendesk_article.via.source.to.facebook_id local_article_fields[:to] = zendesk_article.via.source.to.facebook_id
local_article_fields[:message_id] = zendesk_article.id
local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'post' local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'post'
article_type_facebook_feed_post.id article_type_facebook_feed_post.id
@ -752,7 +753,12 @@ module Import::Zendesk
end end
# create article # create article
local_article = Ticket::Article.create( local_article_fields ) local_article = Ticket::Article.find_by(message_id: local_article_fields[:message_id])
if local_article
local_article.update_attributes(local_article_fields)
else
local_article = Ticket::Article.create( local_article_fields )
end
zendesk_attachments = zendesk_article.attachments zendesk_attachments = zendesk_article.attachments
@ -1029,4 +1035,10 @@ module Import::Zendesk
} }
end end
# reset primary key sequences
def self._reset_pk(table)
return if ActiveRecord::Base.connection_config[:adapter] != 'postgresql'
ActiveRecord::Base.connection.reset_pk_sequence!(table)
end
end end

View file

@ -279,15 +279,15 @@ class ZendeskImportTest < ActiveSupport::TestCase
data: { data: {
title: 'Bob Smith, here is the test ticket you requested', title: 'Bob Smith, here is the test ticket you requested',
note: 'test email', note: 'test email',
create_article_type_id: 1, create_article_type_id: 10,
create_article_sender_id: 2, create_article_sender_id: 2,
article_count: 2, article_count: 4,
state_id: 3, state_id: 3,
group_id: 3, group_id: 3,
priority_id: 3, priority_id: 1,
owner_id: 1, owner_id: 1,
customer_id: 6, customer_id: 7,
organization_id: 2, organization_id: nil,
}, },
}, },
{ {
@ -318,7 +318,7 @@ class ZendeskImportTest < ActiveSupport::TestCase
group_id: 3, group_id: 3,
priority_id: 2, priority_id: 2,
owner_id: 1, owner_id: 1,
customer_id: 90, customer_id: 91,
organization_id: nil, organization_id: nil,
}, },
}, },