Added a /Force option to the tenant reset command.

This commit is contained in:
Daniel Stolt
2015-07-23 11:41:55 +01:00
parent 9f9a0cc4e5
commit 33da5617b7
4 changed files with 15 additions and 8 deletions

View File

@@ -30,6 +30,8 @@ namespace Orchard.MultiTenancy.Commands {
public string Modules { get; set; }
[OrchardSwitch]
public bool DropDatabaseTables { get; set; }
[OrchardSwitch]
public bool Force { get; set; }
[CommandHelp("tenant list\r\n\t" + "Display current tenants of the site.")]
[CommandName("tenant list")]
@@ -178,9 +180,9 @@ namespace Orchard.MultiTenancy.Commands {
_tenantService.UpdateTenant(tenant);
}
[CommandHelp("tenant reset <tenantName> /DropDatabaseTables:<true|false>\r\n\t" + "Reset the tenant <tenantName> to its uninitialized, optionally dropping its tables from the database.")]
[CommandHelp("tenant reset <tenantName> /DropDatabaseTables:true|false /Force:true|false\r\n\t" + "Reset the tenant <tenantName> to its uninitialized, optionally dropping its tables from the database.")]
[CommandName("tenant reset")]
[OrchardSwitches("DropDatabaseTables")]
[OrchardSwitches("DropDatabaseTables,Force")]
public void Reset(string tenantName) {
Context.Output.WriteLine(T("Resetting tenant '{0}'...", tenantName));
@@ -190,7 +192,7 @@ namespace Orchard.MultiTenancy.Commands {
return;
}
_tenantService.ResetTenant(tenant, DropDatabaseTables);
_tenantService.ResetTenant(tenant, DropDatabaseTables, Force);
}
}
}

View File

@@ -247,7 +247,7 @@ namespace Orchard.MultiTenancy.Controllers {
}
try {
_tenantService.ResetTenant(tenant, viewModel.DropDatabaseTables);
_tenantService.ResetTenant(tenant, viewModel.DropDatabaseTables, force: false);
return RedirectToAction("Index");
}
catch (Exception ex) {

View File

@@ -26,7 +26,8 @@ namespace Orchard.MultiTenancy.Services {
/// </summary>
/// <param name="settings">A ShellSettings object to identify the tenant to reset.</param>
/// <param name="dropDatabaseTables">A boolean indicated whether tenant database tables should be dropped also.</param>
void ResetTenant(ShellSettings settings, bool dropDatabaseTables);
/// <param name="force">A boolean indicating whether reset should be performed even if the tenant state is <c>TenantState.Running</c>.</param>
void ResetTenant(ShellSettings settings, bool dropDatabaseTables, bool force);
/// <summary>
/// Returns a list of all known database tables in a tenant.

View File

@@ -43,9 +43,13 @@ namespace Orchard.MultiTenancy.Services {
_shellSettingsManager.SaveSettings(settings);
}
public void ResetTenant(ShellSettings settings, bool dropDatabaseTables) {
if (settings.State != TenantState.Disabled)
throw new InvalidOperationException(String.Format("Tenant state is '{0}'; must be '{1}' to perform reset action.", settings.State, TenantState.Disabled));
public void ResetTenant(ShellSettings settings, bool dropDatabaseTables, bool force) {
if (settings.State == TenantState.Uninitialized)
return;
if (settings.State == TenantState.Invalid)
throw new InvalidOperationException(String.Format("Tenant reset action cannot be performed when tenant state is '{0}'.", settings.State));
if (!force && settings.State != TenantState.Disabled)
throw new InvalidOperationException(String.Format("Tenant state is '{0}'; must be '{1}' to perform reset action. The 'force' option can be used to override this.", settings.State, TenantState.Disabled));
ExecuteOnTenantScope(settings, environment => {
ExecuteResetEventHandlers(environment);