Added functionality to import article attachments as well.

This commit is contained in:
Thorsten Eckel 2015-07-21 15:46:01 +02:00
parent 4f3abbdf0e
commit 8de0f7a061

View file

@ -1,3 +1,5 @@
require 'base64'
module Import module Import
end end
module Import::OTRS module Import::OTRS
@ -634,18 +636,49 @@ module Import::OTRS
article_new[:type_id] = 9 article_new[:type_id] = 9
end end
article_new.delete( :type ) article_new.delete( :type )
article_old = 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_old if article_object
log "update Ticket::Article.find(#{article_new[:id]})" log "update Ticket::Article.find(#{article_new[:id]})"
article_old.update_attributes(article_new) article_object.update_attributes(article_new)
else else
log "add Ticket::Article.find(#{article_new[:id]})" log "add Ticket::Article.find(#{article_new[:id]})"
article = Ticket::Article.new(article_new) article_object = Ticket::Article.new(article_new)
article.id = article_new[:id] article_object.id = article_new[:id]
article.save article_object.save
end end
next if !article['Attachments']
next if article['Attachments'].empty?
# TODO: refactor
# check if there are attachments present
if !article_object.attachments.empty?
# skip attachments if count is equal
next if article_object.attachments.count == article['Attachments'].count
# if the count differs delete all so we
# can have a fresh start
article_object.attachments.each(&:delete)
end
# import article attachments
article['Attachments'].each { |attachment|
Store.add(
object: 'Ticket::Article',
o_id: article_object.id,
filename: Base64.decode64(attachment['Filename']),
data: Base64.decode64(attachment['Content']),
preferences: {
content_type: attachment['ContentType'],
content_id: attachment['ContentID'],
:'content-alternative' => attachment['ContentAlternative'],
},
created_by_id: 1,
)
}
} }
end end