FIX: Empty backup names with unicode site titles
If a site title contains unicode it may end up with an empty backup filename because of the rails `parameterize` method we are calling. This fix ensures that the backup filenames default to "discourse" if the parameterized site title is empty. Bug reported [here][1]. [1]: https://meta.discourse.org/t/backup-checksum-and-backup-name-missing-when-unicode-site-name/123192?u=blake
This commit is contained in:
parent
514aaacdf4
commit
c8661674d4
|
@ -83,6 +83,10 @@ module BackupRestore
|
||||||
raise Discourse::InvalidParameters.new(:user_id) unless @user
|
raise Discourse::InvalidParameters.new(:user_id) unless @user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_parameterized_title
|
||||||
|
SiteSetting.title.parameterize.empty? ? "discourse" : SiteSetting.title.parameterize
|
||||||
|
end
|
||||||
|
|
||||||
def initialize_state
|
def initialize_state
|
||||||
@success = false
|
@success = false
|
||||||
@store = BackupRestore::BackupStore.create
|
@store = BackupRestore::BackupStore.create
|
||||||
|
@ -91,7 +95,7 @@ module BackupRestore
|
||||||
@tmp_directory = File.join(Rails.root, "tmp", "backups", @current_db, @timestamp)
|
@tmp_directory = File.join(Rails.root, "tmp", "backups", @current_db, @timestamp)
|
||||||
@dump_filename = File.join(@tmp_directory, BackupRestore::DUMP_FILE)
|
@dump_filename = File.join(@tmp_directory, BackupRestore::DUMP_FILE)
|
||||||
@archive_directory = BackupRestore::LocalBackupStore.base_directory(db: @current_db)
|
@archive_directory = BackupRestore::LocalBackupStore.base_directory(db: @current_db)
|
||||||
filename = @filename_override || "#{SiteSetting.title.parameterize}-#{@timestamp}"
|
filename = @filename_override || "#{get_parameterized_title}-#{@timestamp}"
|
||||||
@archive_basename = File.join(@archive_directory, "#{filename}-#{BackupRestore::VERSION_PREFIX}#{BackupRestore.current_version}")
|
@archive_basename = File.join(@archive_directory, "#{filename}-#{BackupRestore::VERSION_PREFIX}#{BackupRestore.current_version}")
|
||||||
|
|
||||||
@backup_filename =
|
@backup_filename =
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe BackupRestore::Backuper do
|
||||||
|
it 'returns a non-empty parameterized title when site title contains unicode' do
|
||||||
|
SiteSetting.title = 'Ɣ'
|
||||||
|
backuper = BackupRestore::Backuper.new(-1)
|
||||||
|
|
||||||
|
expect(backuper.send(:get_parameterized_title)).to eq("discourse")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns a valid parameterized site title' do
|
||||||
|
SiteSetting.title = "Coding Horror"
|
||||||
|
backuper = BackupRestore::Backuper.new(-1)
|
||||||
|
|
||||||
|
expect(backuper.send(:get_parameterized_title)).to eq("coding-horror")
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue