mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-26 12:21:36 +03:00
Fixed importer mapping for renamed default_locale, active_timezone, ghost_* settings
refs #10318
refs 2614565d5a
- Adds importer mapping for fields as in referenced migration
- The intention is to allow exports from v2/v3 to still be compatilbe with current version
- Adds a mapper for deprecated fields and imports them with new settings "keys"
This commit is contained in:
parent
2de1c07dd4
commit
8ea245fc7c
@ -4,8 +4,15 @@ const _ = require('lodash');
|
|||||||
const BaseImporter = require('./base');
|
const BaseImporter = require('./base');
|
||||||
const models = require('../../../../models');
|
const models = require('../../../../models');
|
||||||
const defaultSettings = require('../../../schema').defaultSettings;
|
const defaultSettings = require('../../../schema').defaultSettings;
|
||||||
|
|
||||||
const labsDefaults = JSON.parse(defaultSettings.labs.labs.defaultValue);
|
const labsDefaults = JSON.parse(defaultSettings.labs.labs.defaultValue);
|
||||||
const deprecatedSettings = ['active_apps', 'installed_apps'];
|
const ignoredSettings = ['active_apps', 'installed_apps'];
|
||||||
|
const deprecatedSupportedSettingsMap = {
|
||||||
|
default_locale: 'lang',
|
||||||
|
active_timezone: 'timezone',
|
||||||
|
ghost_head: 'codeinjection_head',
|
||||||
|
ghost_foot: 'codeinjection_foot'
|
||||||
|
};
|
||||||
|
|
||||||
const isFalse = (value) => {
|
const isFalse = (value) => {
|
||||||
// Catches false, null, undefined, empty string
|
// Catches false, null, undefined, empty string
|
||||||
@ -68,7 +75,16 @@ class SettingsImporter extends BaseImporter {
|
|||||||
|
|
||||||
// Don't import any old, deprecated settings
|
// Don't import any old, deprecated settings
|
||||||
this.dataToImport = _.filter(this.dataToImport, (data) => {
|
this.dataToImport = _.filter(this.dataToImport, (data) => {
|
||||||
return !_.includes(deprecatedSettings, data.key);
|
return !_.includes(ignoredSettings, data.key);
|
||||||
|
});
|
||||||
|
|
||||||
|
// NOTE: import settings removed in v3 and move them to ignored once Ghost v4 changes are done
|
||||||
|
this.dataToImport = this.dataToImport.map((data) => {
|
||||||
|
if (deprecatedSupportedSettingsMap[data.key]) {
|
||||||
|
data.key = deprecatedSupportedSettingsMap[data.key];
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Remove core and theme data types
|
// Remove core and theme data types
|
||||||
|
@ -930,6 +930,46 @@ describe('Integration: Importer', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('imports settings fields deprecated in v2 and removed in v3: slack hook, permalinks', function () {
|
||||||
|
const exportData = exportedLatestBody().db[0];
|
||||||
|
|
||||||
|
exportData.data.settings[0] = testUtils.DataGenerator.forKnex.createSetting({
|
||||||
|
key: 'default_locale',
|
||||||
|
value: 'ua'
|
||||||
|
});
|
||||||
|
|
||||||
|
exportData.data.settings[1] = testUtils.DataGenerator.forKnex.createSetting({
|
||||||
|
key: 'active_timezone',
|
||||||
|
value: 'Pacific/Auckland'
|
||||||
|
});
|
||||||
|
|
||||||
|
exportData.data.settings[2] = testUtils.DataGenerator.forKnex.createSetting({
|
||||||
|
key: 'ghost_foot',
|
||||||
|
value: 'AVADA KEDAVRA'
|
||||||
|
});
|
||||||
|
|
||||||
|
return dataImporter.doImport(exportData, importOptions)
|
||||||
|
.then(function (imported) {
|
||||||
|
imported.problems.length.should.eql(0);
|
||||||
|
return models.Settings.findOne(_.merge({key: 'lang'}, testUtils.context.internal));
|
||||||
|
})
|
||||||
|
.then(function (result) {
|
||||||
|
result.attributes.value.should.eql('ua');
|
||||||
|
})
|
||||||
|
.then(function () {
|
||||||
|
return models.Settings.findOne(_.merge({key: 'timezone'}, testUtils.context.internal));
|
||||||
|
})
|
||||||
|
.then(function (result) {
|
||||||
|
result.attributes.value.should.eql('Pacific/Auckland');
|
||||||
|
})
|
||||||
|
.then(function () {
|
||||||
|
return models.Settings.findOne(_.merge({key: 'codeinjection_foot'}, testUtils.context.internal));
|
||||||
|
})
|
||||||
|
.then(function (result) {
|
||||||
|
result.attributes.value.should.eql('AVADA KEDAVRA');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('does import settings with string booleans', function () {
|
it('does import settings with string booleans', function () {
|
||||||
const exportData = exportedLatestBody().db[0];
|
const exportData = exportedLatestBody().db[0];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user