Fixing update feature functionality.

This fixes an issue when for some reason a migration update step fails and the user wants to try again, but the migrations aren't executed for the selected features.
This commit is contained in:
Sipke Schoorstra
2014-10-13 16:46:42 -07:00
parent 26b64d9076
commit 7f9fce290b
3 changed files with 11 additions and 6 deletions

View File

@@ -221,7 +221,10 @@ namespace Orchard.Modules.Controllers {
_moduleService.DisableFeatures(enabledFeatures, force == true); _moduleService.DisableFeatures(enabledFeatures, force == true);
break; break;
case FeaturesBulkAction.Update: case FeaturesBulkAction.Update:
foreach (var feature in selectedFeatures.Where(x => x.NeedsUpdate)) { var featuresThatNeedUpdate = _dataMigrationManager.GetFeaturesThatNeedUpdate();
var selectedFeaturesThatNeedUpdate = selectedFeatures.Where(x => featuresThatNeedUpdate.Contains(x.Descriptor.Id));
foreach (var feature in selectedFeaturesThatNeedUpdate) {
var id = feature.Descriptor.Id; var id = feature.Descriptor.Id;
try { try {
_reportsCoordinator.Register("Data Migration", "Upgrade " + id, "Orchard installation"); _reportsCoordinator.Register("Data Migration", "Upgrade " + id, "Orchard installation");

View File

@@ -30,6 +30,7 @@
@Html.SelectOption(Model.BulkAction, FeaturesBulkAction.None, T("Choose action...").ToString()) @Html.SelectOption(Model.BulkAction, FeaturesBulkAction.None, T("Choose action...").ToString())
@Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Enable, T("Enable").ToString()) @Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Enable, T("Enable").ToString())
@Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Disable, T("Disable").ToString()) @Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Disable, T("Disable").ToString())
@Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Update, T("Update").ToString())
@Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Toggle, T("Toggle").ToString()) @Html.SelectOption(Model.BulkAction, FeaturesBulkAction.Toggle, T("Toggle").ToString())
</select> </select>
<button type="submit" name="submit.BulkExecute" value="yes">@T("Execute")</button> <button type="submit" name="submit.BulkExecute" value="yes">@T("Execute")</button>

View File

@@ -22,7 +22,7 @@ namespace Orchard.Data.Migration {
private readonly IContentDefinitionManager _contentDefinitionManager; private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly ITransactionManager _transactionManager; private readonly ITransactionManager _transactionManager;
private List<string> _processedFeatures; private readonly List<string> _processedFeatures;
public DataMigrationManager( public DataMigrationManager(
IEnumerable<IDataMigration> dataMigrations, IEnumerable<IDataMigration> dataMigrations,
@@ -118,11 +118,11 @@ namespace Orchard.Data.Migration {
while (lookupTable.ContainsKey(current)) { while (lookupTable.ContainsKey(current)) {
try { try {
Logger.Information("Applying migration for {0} from version {1}", feature, current); Logger.Information("Applying migration for {0} from version {1}.", feature, current);
current = (int)lookupTable[current].Invoke(migration, new object[0]); current = (int)lookupTable[current].Invoke(migration, new object[0]);
} }
catch (Exception ex) { catch (Exception ex) {
Logger.Error(ex, "An unexpected error occurred while applying migration on {0} from version {1}", feature, current); Logger.Error(ex, "An unexpected error occurred while applying migration on {0} from version {1}.", feature, current);
throw; throw;
} }
} }
@@ -139,15 +139,16 @@ namespace Orchard.Data.Migration {
} }
} }
catch (Exception e) { catch (Exception e) {
Logger.Error(e, "Error while running migration version {0} for {1}", current, feature); Logger.Error(e, "Error while running migration version {0} for {1}.", current, feature);
_transactionManager.Cancel(); _transactionManager.Cancel();
throw new OrchardException(T("Error while running migration version {0} for {1}.", current, feature), e);
} }
} }
} }
public void Uninstall(string feature) { public void Uninstall(string feature) {
Logger.Information("Uninstalling feature: {0}", feature); Logger.Information("Uninstalling feature: {0}.", feature);
var migrations = GetDataMigrations(feature); var migrations = GetDataMigrations(feature);