posts: display validation warnings in flash notice.

This commit is contained in:
evazion
2017-11-25 12:42:09 -06:00
parent b62b16b5a2
commit 07a4bdcb21
5 changed files with 20 additions and 3 deletions

View File

@@ -110,6 +110,10 @@ private
def respond_with_post_after_update(post)
respond_with(post) do |format|
format.html do
if post.warnings.any?
flash[:notice] = post.warnings.full_messages.join(".\n \n")
end
if post.errors.any?
@error_message = post.errors.full_messages.join("; ")
render :template => "static/error", :status => 500

View File

@@ -53,7 +53,12 @@ class UploadsController < ApplicationController
def create
@upload = Upload.create(params[:upload].merge(:server => Socket.gethostname))
@upload.process! if @upload.errors.empty?
if @upload.errors.empty?
post = @upload.process!
flash[:notice] = post.warnings.full_messages.join(".\n \n") if post.present? && post.warnings.any?
end
save_recent_tags
respond_with(@upload)
end

View File

@@ -43,5 +43,9 @@ class ApplicationRecord < ActiveRecord::Base
end
end
def warnings
@warnings ||= ActiveModel::Errors.new(self)
end
include ApiMethods
end

View File

@@ -148,6 +148,8 @@ class Upload < ApplicationRecord
else
update_attribute(:status, "error: " + post.errors.full_messages.join(", "))
end
post
end
def process!(force = false)
@@ -155,7 +157,7 @@ class Upload < ApplicationRecord
return if !force && status =~ /processing|completed|error/
process_upload
create_post_from_upload
post = create_post_from_upload
rescue Timeout::Error, Net::HTTP::Persistent::Error => x
if @tries > 3
@@ -164,9 +166,11 @@ class Upload < ApplicationRecord
@tries += 1
retry
end
nil
rescue Exception => x
update_attributes(:status => "error: #{x.class} - #{x.message}", :backtrace => x.backtrace.join("\n"))
nil
ensure
delete_temp_file

View File

@@ -112,7 +112,7 @@
<% end %>
<div class="ui-corner-all ui-state-highlight" id="notice" style="<%= "display: none;" unless flash[:notice] %>">
<span><%= flash[:notice] %></span>
<span><%= format_text(flash[:notice], inline: true) %>.</span>
<a href="#" id="close-notice-link">close</a>
</div>