Merge pull request #3134 from evazion/fix-ugoira-replacement

Fix #3133: Allow replacing ugoira posts
This commit is contained in:
Albert Yi
2017-06-09 15:56:49 -07:00
committed by GitHub
2 changed files with 23 additions and 5 deletions

View File

@@ -17,11 +17,6 @@ class PostReplacement < ActiveRecord::Base
end
def process!
# TODO for ugoiras we need to replace the frame data.
if post.is_ugoira?
raise NotImplementedError.new("Replacing ugoira images not yet supported.")
end
# TODO images hosted on s3 need to be deleted from s3 instead of the local filesystem.
if Danbooru.config.use_s3_proxy?(post)
raise NotImplementedError.new("Replacing S3 hosted images not yet supported.")
@@ -45,6 +40,7 @@ class PostReplacement < ActiveRecord::Base
post.source = upload.source
post.tag_string = upload.tag_string
rescale_notes
update_ugoira_frame_data(upload)
post.comments.create!({creator: User.system, body: comment_replacement_message, do_not_bump_post: true}, without_protection: true)
ModAction.log(modaction_replacement_message)
@@ -67,6 +63,11 @@ class PostReplacement < ActiveRecord::Base
end
end
def update_ugoira_frame_data(upload)
post.pixiv_ugoira_frame_data.destroy if post.pixiv_ugoira_frame_data.present?
upload.ugoira_service.save_frame_data(post) if post.is_ugoira?
end
module SearchMethods
def search(params = {})
q = all

View File

@@ -153,5 +153,22 @@ class PostReplacementTest < ActiveSupport::TestCase
assert_not(File.exists?(old_large_file_path))
end
end
context "a post that is replaced by a ugoira" do
should "save the frame data" do
@post.replace!(replacement_url: "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=62247364")
@post.reload
assert_equal(80, @post.image_width)
assert_equal(82, @post.image_height)
assert_equal(2804, @post.file_size)
assert_equal("zip", @post.file_ext)
assert_equal("cad1da177ef309bf40a117c17b8eecf5", @post.md5)
assert_equal("cad1da177ef309bf40a117c17b8eecf5", Digest::MD5.file(@post.file_path).hexdigest)
assert_equal("https://i1.pixiv.net/img-zip-ugoira/img/2017/04/04/08/57/38/62247364_ugoira1920x1080.zip", @post.source)
assert_equal([{"file"=>"000000.jpg", "delay"=>125}, {"file"=>"000001.jpg", "delay"=>125}], @post.pixiv_ugoira_frame_data.data)
end
end
end
end