Improve note copying validations and errors

fixes #1956; fixes #1957
This commit is contained in:
Toks
2013-08-24 14:23:24 -04:00
parent 6a2e209fe0
commit 70be0368e4
3 changed files with 24 additions and 6 deletions

View File

@@ -324,13 +324,18 @@
data: {
other_post_id: other_post_id
},
complete: function(data) {
if (data.status === 200) {
Danbooru.notice("Successfully copied notes to <a href='" + other_post_id + "'>post #" + other_post_id + "</a>");
success: function(data) {
Danbooru.notice("Successfully copied notes to <a href='" + other_post_id + "'>post #" + other_post_id + "</a>");
},
error: function(data) {
if (data.status === 404) {
Danbooru.error("Error: Invalid destination post");
} else if (data.responseJSON && data.responseJSON.reason) {
Danbooru.error("Error: " + data.responseJSON.reason);
} else {
Danbooru.error("There was an error copying notes to <a href='" + other_post_id + "'>post #" + other_post_id + "</a>");
}
},
}
});
}

View File

@@ -88,7 +88,13 @@ class PostsController < ApplicationController
@post = Post.find(params[:id])
@other_post = Post.find(params[:other_post_id].to_i)
@post.copy_notes_to(@other_post)
render :nothing => true
if @post.errors.any?
@error_message = @post.errors.full_messages.join("; ")
render :json => {:success => false, :reason => @error_message}.to_json, :status => 400
else
head :no_content
end
end
def unvote

View File

@@ -977,7 +977,14 @@ class Post < ActiveRecord::Base
end
def copy_notes_to(other_post)
return if notes.active.length == 0
if id == other_post.id
errors.add :base, "Source and destination posts are the same"
return false
end
unless has_notes?
errors.add :post, "has no notes"
return false
end
notes.active.each do |note|
note.copy_to(other_post)