post replacements: add option to fix source after replacement.

Adds a "Final Source" field to the post replacement dialog. If
specified, the post's source field will be changed to this value after
replacement.

This makes fixing the source back to the HTML page after
replacement easier.
This commit is contained in:
evazion
2017-06-22 15:19:41 -05:00
parent 55512130e1
commit c27668d2ef
4 changed files with 16 additions and 4 deletions

View File

@@ -23,6 +23,6 @@ class PostReplacementsController < ApplicationController
private private
def create_params def create_params
params.require(:post_replacement).permit(:replacement_url) params.require(:post_replacement).permit(:replacement_url, :final_source)
end end
end end

View File

@@ -4,7 +4,8 @@ class PostReplacement < ApplicationRecord
belongs_to :post belongs_to :post
belongs_to :creator, class_name: "User" belongs_to :creator, class_name: "User"
before_validation :initialize_fields before_validation :initialize_fields
attr_accessible :replacement_url attr_accessible :replacement_url, :final_source
attr_accessor :final_source
def initialize_fields def initialize_fields
self.creator = CurrentUser.user self.creator = CurrentUser.user
@@ -37,7 +38,7 @@ class PostReplacement < ApplicationRecord
post.image_width = upload.image_width post.image_width = upload.image_width
post.image_height = upload.image_height post.image_height = upload.image_height
post.file_size = upload.file_size post.file_size = upload.file_size
post.source = upload.source post.source = final_source.presence || upload.source
post.tag_string = upload.tag_string post.tag_string = upload.tag_string
rescale_notes rescale_notes
update_ugoira_frame_data(upload) update_ugoira_frame_data(upload)

View File

@@ -1,5 +1,6 @@
<%= format_text(WikiPage.titled(Danbooru.config.replacement_notice_wiki_page).first.try(&:body), ragel: true) %> <%= format_text(WikiPage.titled(Danbooru.config.replacement_notice_wiki_page).first.try(&:body), ragel: true) %>
<%= simple_form_for(post_replacement, url: post_replacements_path(post_id: post_replacement.post_id), method: :post) do |f| %> <%= simple_form_for(post_replacement, url: post_replacements_path(post_id: post_replacement.post_id), method: :post) do |f| %>
<%= f.input :replacement_url, label: "New Source", input_html: { value: "" } %> <%= f.input :replacement_url, label: "Replacement URL", hint: "The source URL to download the replacement from.", as: :string, input_html: { value: post_replacement.post.normalized_source } %>
<%= f.input :final_source, label: "Final Source", hint: "If present, the source field will be changed to this after replacement.", as: :string, input_html: { value: post_replacement.post.source } %>
<% end %> <% end %>

View File

@@ -190,5 +190,15 @@ class PostReplacementTest < ActiveSupport::TestCase
assert(File.exists?(@post.large_file_path)) assert(File.exists?(@post.large_file_path))
end end
end end
context "a post when given a final_source" do
should "change the source to the final_source" do
replacement_url = "http://data.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_orwwptNBCE1wsfqepo1_raw.png"
final_source = "https://noizave.tumblr.com/post/162094447052"
@post.replace!(replacement_url: replacement_url, final_source: final_source)
assert_equal(final_source, @post.source)
end
end
end end
end end