Merge pull request #4332 from tgxworld/bunch_of_fixes_for_backup
Bunch of fixes for backup
This commit is contained in:
commit
9353013b40
14
Gemfile.lock
14
Gemfile.lock
|
@ -42,12 +42,12 @@ GEM
|
||||||
activerecord (>= 3.2, < 6.0)
|
activerecord (>= 3.2, < 6.0)
|
||||||
rake (>= 10.4, < 12.0)
|
rake (>= 10.4, < 12.0)
|
||||||
arel (6.0.3)
|
arel (6.0.3)
|
||||||
aws-sdk (2.3.7)
|
aws-sdk (2.3.22)
|
||||||
aws-sdk-resources (= 2.3.7)
|
aws-sdk-resources (= 2.3.22)
|
||||||
aws-sdk-core (2.3.7)
|
aws-sdk-core (2.3.22)
|
||||||
jmespath (~> 1.0)
|
jmespath (~> 1.0)
|
||||||
aws-sdk-resources (2.3.7)
|
aws-sdk-resources (2.3.22)
|
||||||
aws-sdk-core (= 2.3.7)
|
aws-sdk-core (= 2.3.22)
|
||||||
babel-source (5.8.34)
|
babel-source (5.8.34)
|
||||||
babel-transpiler (0.7.0)
|
babel-transpiler (0.7.0)
|
||||||
babel-source (>= 4.0, < 6)
|
babel-source (>= 4.0, < 6)
|
||||||
|
@ -136,14 +136,12 @@ GEM
|
||||||
progress (~> 3.0, >= 3.0.1)
|
progress (~> 3.0, >= 3.0.1)
|
||||||
image_size (1.4.1)
|
image_size (1.4.1)
|
||||||
in_threads (1.3.1)
|
in_threads (1.3.1)
|
||||||
jmespath (1.2.4)
|
jmespath (1.3.0)
|
||||||
json_pure (>= 1.8.1)
|
|
||||||
jquery-rails (4.0.5)
|
jquery-rails (4.0.5)
|
||||||
rails-dom-testing (~> 1.0)
|
rails-dom-testing (~> 1.0)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (1.8.3)
|
json (1.8.3)
|
||||||
json_pure (1.8.3)
|
|
||||||
jwt (1.5.2)
|
jwt (1.5.2)
|
||||||
kgio (2.10.0)
|
kgio (2.10.0)
|
||||||
librarian (0.1.2)
|
librarian (0.1.2)
|
||||||
|
|
|
@ -52,12 +52,18 @@ module BackupRestore
|
||||||
rescue Exception => ex
|
rescue Exception => ex
|
||||||
log "EXCEPTION: " + ex.message
|
log "EXCEPTION: " + ex.message
|
||||||
log ex.backtrace.join("\n")
|
log ex.backtrace.join("\n")
|
||||||
|
@success = false
|
||||||
else
|
else
|
||||||
@success = true
|
@success = true
|
||||||
"#{@archive_basename}.tar.gz"
|
"#{@archive_basename}.tar.gz"
|
||||||
ensure
|
ensure
|
||||||
notify_user rescue nil
|
begin
|
||||||
remove_old rescue nil
|
notify_user
|
||||||
|
remove_old
|
||||||
|
rescue => ex
|
||||||
|
Rails.logger.error("#{ex}\n" + ex.backtrace.join("\n"))
|
||||||
|
end
|
||||||
|
|
||||||
clean_up
|
clean_up
|
||||||
@success ? log("[SUCCESS]") : log("[FAILED]")
|
@success ? log("[SUCCESS]") : log("[FAILED]")
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Helper functions for dealing with errors and objects that have
|
# Helper functions for dealing with errors and objects that have
|
||||||
# child objects with errors
|
# child objects with errors
|
||||||
module HasErrors
|
module HasErrors
|
||||||
|
attr_reader :errors
|
||||||
|
|
||||||
def errors
|
def errors
|
||||||
@errors ||= ActiveModel::Errors.new(self)
|
@errors ||= ActiveModel::Errors.new(self)
|
||||||
|
|
|
@ -160,6 +160,16 @@ class PostCreator
|
||||||
@post
|
@post
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create!
|
||||||
|
create
|
||||||
|
|
||||||
|
if !self.errors.full_messages.empty?
|
||||||
|
raise ActiveRecord::RecordNotSaved.new("Failed to create post", self)
|
||||||
|
end
|
||||||
|
|
||||||
|
@post
|
||||||
|
end
|
||||||
|
|
||||||
def self.track_post_stats
|
def self.track_post_stats
|
||||||
Rails.env != "test".freeze || @track_post_stats
|
Rails.env != "test".freeze || @track_post_stats
|
||||||
end
|
end
|
||||||
|
@ -172,6 +182,10 @@ class PostCreator
|
||||||
PostCreator.new(user, opts).create
|
PostCreator.new(user, opts).create
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.create!(user, opts)
|
||||||
|
PostCreator.new(user, opts).create!
|
||||||
|
end
|
||||||
|
|
||||||
def self.before_create_tasks(post)
|
def self.before_create_tasks(post)
|
||||||
set_reply_info(post)
|
set_reply_info(post)
|
||||||
|
|
||||||
|
|
|
@ -47,12 +47,13 @@ class SystemMessage
|
||||||
title = I18n.t("system_messages.#{type}.subject_template", params)
|
title = I18n.t("system_messages.#{type}.subject_template", params)
|
||||||
raw = I18n.t("system_messages.#{type}.text_body_template", params)
|
raw = I18n.t("system_messages.#{type}.text_body_template", params)
|
||||||
|
|
||||||
PostCreator.create(Discourse.system_user,
|
PostCreator.create!(Discourse.system_user,
|
||||||
title: title,
|
title: title,
|
||||||
raw: raw,
|
raw: raw,
|
||||||
archetype: Archetype.private_message,
|
archetype: Archetype.private_message,
|
||||||
target_usernames: @recipient.username,
|
target_usernames: @recipient.username,
|
||||||
subtype: TopicSubtype.system_message)
|
subtype: TopicSubtype.system_message,
|
||||||
|
skip_validations: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def defaults
|
def defaults
|
||||||
|
|
|
@ -9,10 +9,10 @@ describe PostCreator do
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
|
let(:topic) { Fabricate(:topic, user: user) }
|
||||||
|
|
||||||
context "new topic" do
|
context "new topic" do
|
||||||
let(:category) { Fabricate(:category, user: user) }
|
let(:category) { Fabricate(:category, user: user) }
|
||||||
let(:topic) { Fabricate(:topic, user: user) }
|
|
||||||
let(:basic_topic_params) { {title: "hello world topic", raw: "my name is fred", archetype_id: 1} }
|
let(:basic_topic_params) { {title: "hello world topic", raw: "my name is fred", archetype_id: 1} }
|
||||||
let(:image_sizes) { {'http://an.image.host/image.jpg' => {"width" => 111, "height" => 222}} }
|
let(:image_sizes) { {'http://an.image.host/image.jpg' => {"width" => 111, "height" => 222}} }
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ describe PostCreator do
|
||||||
|
|
||||||
# more integration testing ... maximise our testing
|
# more integration testing ... maximise our testing
|
||||||
context 'existing topic' do
|
context 'existing topic' do
|
||||||
let!(:topic) { Fabricate(:topic, user: user) }
|
let(:topic) { Fabricate(:topic, user: user) }
|
||||||
let(:creator) { PostCreator.new(user, raw: 'test reply', topic_id: topic.id, reply_to_post_number: 4) }
|
let(:creator) { PostCreator.new(user, raw: 'test reply', topic_id: topic.id, reply_to_post_number: 4) }
|
||||||
|
|
||||||
it 'ensures the user can create the post' do
|
it 'ensures the user can create the post' do
|
||||||
|
@ -752,8 +752,6 @@ describe PostCreator do
|
||||||
end
|
end
|
||||||
|
|
||||||
context "events" do
|
context "events" do
|
||||||
let(:topic) { Fabricate(:topic, user: user) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@posts_created = 0
|
@posts_created = 0
|
||||||
@topics_created = 0
|
@topics_created = 0
|
||||||
|
@ -796,7 +794,25 @@ describe PostCreator do
|
||||||
expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:watching])
|
expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:watching])
|
||||||
expect(topic_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:auto_watch])
|
expect(topic_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:auto_watch])
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#create!' do
|
||||||
|
it "should return the post if it was successfully created" do
|
||||||
|
title = "This is a valid title"
|
||||||
|
raw = "This is a really awesome post"
|
||||||
|
|
||||||
|
post_creator = PostCreator.new(user, title: title, raw: raw)
|
||||||
|
post = post_creator.create
|
||||||
|
|
||||||
|
expect(post).to eq(Post.last)
|
||||||
|
expect(post.topic.title).to eq(title)
|
||||||
|
expect(post.raw).to eq(raw)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should raise an error when post fails to be created" do
|
||||||
|
post_creator = PostCreator.new(user, title: '', raw: '')
|
||||||
|
expect { post_creator.create! }.to raise_error(ActiveRecord::RecordNotSaved)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue