Skip to content

Commit

Permalink
Followup for issue zammad#1394 - Reindex elastic search not possible …
Browse files Browse the repository at this point in the history
…because of <null>/Twitter::NullObject.
  • Loading branch information
znuny-robo committed Oct 23, 2018
1 parent 8b554e9 commit 5492f4f
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ def initialize(id)
def perform
article = Ticket::Article.find(@article_id)

# set retry count
article.preferences['delivery_retry'] ||= 0
article.preferences['delivery_retry'] += 1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ def perform
article = Ticket::Article.find(@article_id)

# set retry count
record.preferences['delivery_retry'] ||= 0
record.preferences['delivery_retry'] += 1
article.preferences['delivery_retry'] ||= 0
article.preferences['delivery_retry'] += 1

ticket = Ticket.lookup(id: article.ticket_id)
log_error(article, "Can't find ticket.preferences for Ticket.find(#{article.ticket_id})") if !ticket.preferences
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ def perform
article = Ticket::Article.find(@article_id)

# set retry count
record.preferences['delivery_retry'] ||= 0
record.preferences['delivery_retry'] += 1
article.preferences['delivery_retry'] ||= 0
article.preferences['delivery_retry'] += 1

ticket = Ticket.lookup(id: article.ticket_id)
log_error(article, "Can't find ticket.preferences for Ticket.find(#{article.ticket_id})") if !ticket.preferences
Expand Down Expand Up @@ -62,7 +62,7 @@ def perform
mention_ids.push user.id
end
article.to = to
article.preferences['twitter'] = {
article.preferences['twitter'] = TweetBase.preferences_cleanup(
mention_ids: mention_ids,
geo: tweet.geo,
retweeted: tweet.retweeted?,
Expand All @@ -74,7 +74,7 @@ def perform
favorited: tweet.favorited?,
truncated: tweet.truncated?,
created_at: tweet.created_at,
}
)
end
else
raise "Unknown tweet type '#{tweet.class}'"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class FixedTwitterTicketArticlePreferences5 < ActiveRecord::Migration[5.0]
class FixedTwitterTicketArticlePreferences6 < ActiveRecord::Migration[5.0]
def up

# return if it's a new setup
Expand All @@ -21,7 +21,7 @@ def up
next
end
if sub_level.class == Twitter::Place || sub_level.class == Twitter::Geo
value[sub_key] = sub_level.attrs
value[sub_key] = sub_level.to_h
changed = true
next
end
Expand All @@ -31,6 +31,17 @@ def up
changed = true
end
end

if article.preferences[:twitter]&.key?(:geo) && article.preferences[:twitter][:geo].nil?
article.preferences[:twitter][:geo] = {}
changed = true
end

if article.preferences[:twitter]&.key?(:place) && article.preferences[:twitter][:place].nil?
article.preferences[:twitter][:place] = {}
changed = true
end

next if !changed

article.save!
Expand Down
16 changes: 12 additions & 4 deletions lib/tweet_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ def to_article(tweet, user, ticket, channel)
end

article_preferences = {
twitter: twitter_preferences,
twitter: self.class.preferences_cleanup(twitter_preferences),
links: [
{
url: "https://twitter.com/statuses/#{tweet.id}",
Expand All @@ -228,7 +228,7 @@ def to_article(tweet, user, ticket, channel)
type_id: Ticket::Article::Type.find_by(name: article_type).id,
sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id,
internal: false,
preferences: preferences_cleanup(article_preferences),
preferences: article_preferences,
)
end

Expand Down Expand Up @@ -366,7 +366,7 @@ def direct_message_limit_reached(tweet, factor = 1)
false
end

def preferences_cleanup(preferences)
def self.preferences_cleanup(preferences)

# replace Twitter::NullObject with nill to prevent elasticsearch index issue
preferences.each_value do |value|
Expand All @@ -378,14 +378,22 @@ def preferences_cleanup(preferences)
next
end
if sub_level.class == Twitter::Place || sub_level.class == Twitter::Geo
value[sub_key] = sub_level.attrs
value[sub_key] = sub_level.to_h
next
end
next if sub_level.class != Twitter::NullObject

value[sub_key] = nil
end
end

if preferences[:geo].blank?
preferences[:geo] = {}
end
if preferences[:place].blank?
preferences[:place] = {}
end

preferences
end

Expand Down
4 changes: 2 additions & 2 deletions test/unit/ticket_article_twitter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class TicketArticleTwitter < ActiveSupport::TestCase
from: '@example',
body: 'some tweet',
internal: false,
preferences: TweetBase.new.preferences_cleanup(preferences),
preferences: TweetBase.preferences_cleanup(preferences),
updated_by_id: 1,
created_by_id: 1,
)
Expand Down Expand Up @@ -97,7 +97,7 @@ class TicketArticleTwitter < ActiveSupport::TestCase
from: '@example',
body: 'some tweet',
internal: false,
preferences: TweetBase.new.preferences_cleanup(preferences),
preferences: TweetBase.preferences_cleanup(preferences),
updated_by_id: 1,
created_by_id: 1,
)
Expand Down

0 comments on commit 5492f4f

Please sign in to comment.