Class: Maintenance::FixRejectedEditStatesTask

Inherits:
MaintenanceTasks::Task
  • Object
show all
Includes:
ApplicationHelper
Defined in:
/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb

Instance Method Summary collapse

Methods included from ApplicationHelper

#active_search?, #admin?, #at_least_moderator?, #can_see_deleted_posts?, #check_your_post_privilege, #check_your_privilege, #current_commit, #current_user, #deleted_item?, #direct_request?, #generic_edit_link, #generic_share_link, #generic_share_link_md, #generic_show_link, #i18ns, #license_link, #post_history_share_link, #post_history_share_link_md, #promoted_posts, #query_url, #read_only?, #render_markdown, #safe_page, #safe_per_page, #second_level_post_types, #short_number_to_human, #sign_in_link, #split_words_max_length, #standard?, #stat_panel, #strip_markdown, #system_user, #top_level_post_types, #user_signed_in?

Instance Method Details

#collectionObject



7
8
9
# File '/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb', line 7

def collection
  SuggestedEdit.rejected
end

#initial_revision_before_decided(edit) ⇒ Object



19
20
21
22
23
24
# File '/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb', line 19

def initial_revision_before_decided(edit)
  PostHistory.of_type('initial_revision')
             .where(post: edit.post)
             .order(created_at: :desc)
             .first
end

#last_revision_before_decided(edit) ⇒ Object



11
12
13
14
15
16
17
# File '/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb', line 11

def last_revision_before_decided(edit)
  PostHistory.of_type('post_edited')
             .where(post: edit.post)
             .where(created_at: edit.post.created_at..edit.decided_at)
             .order(created_at: :desc)
             .first
end

#process(edit) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File '/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb', line 37

def process(edit)
  return if valid_before_attributes?(edit)

  last_revision = last_revision_before_decided(edit).presence || initial_revision_before_decided(edit)

  return unless last_revision.present?

  status = edit.update({ before_body: if last_revision.after_state.present?
                                        render_markdown(last_revision.after_state)
                                      else
                                        edit.before_body
                                      end,
                         before_body_markdown: last_revision.after_state,
                         before_tags: last_revision.after_tags.dup,
                         before_tags_cache: last_revision.after_tags.map(&:name),
                         before_title: last_revision.after_title })

  unless status
    Rails.logger.warn("Failed to fix edit ##{edit.id}")
  end
end

#valid_before_attributes?(edit) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
34
35
# File '/var/apps/qpixel/app/tasks/maintenance/fix_rejected_edit_states_task.rb', line 26

def valid_before_attributes?(edit)
  [
    :before_body,
    :before_body_markdown,
    :before_tags_cache,
    :before_title
  ].all? do |attr|
    edit.send(attr).present?
  end
end