Added functionality to import article attachments as well.
This commit is contained in:
parent
4f3abbdf0e
commit
8de0f7a061
1 changed files with 39 additions and 6 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue