feature: user details are individually exported; shared export field renderer
This commit is contained in:
@@ -687,21 +687,21 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorize(Claims.Device.Actions.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult Export(ExportModel Model)
|
||||
public virtual ActionResult Export(ExportModel model)
|
||||
{
|
||||
if (Model == null || Model.Options == null)
|
||||
if (model == null || model.Options == null)
|
||||
throw new ArgumentNullException("Model");
|
||||
|
||||
// Write Options to Configuration
|
||||
Database.DiscoConfiguration.Devices.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.Devices.LastExportOptions = model.Options;
|
||||
Database.SaveChanges();
|
||||
|
||||
// Start Export
|
||||
var exportContext = new DeviceExport(Model.Options);
|
||||
var exportContext = new DeviceExport(model.Options);
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Device.Export(id, null, null)));
|
||||
|
||||
// Try waiting for completion
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(1)))
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2)))
|
||||
return RedirectToAction(MVC.Device.Export(taskContext.Id, null, null));
|
||||
else
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskContext.TaskStatus.SessionId));
|
||||
@@ -729,9 +729,11 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.ManageSavedExports, Claims.Device.Actions.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult SaveExport(ExportModel Model)
|
||||
public virtual ActionResult SaveExport(ExportModel model)
|
||||
{
|
||||
var export = new DeviceExport(Model.Options);
|
||||
Database.DiscoConfiguration.Devices.LastExportOptions = model.Options;
|
||||
|
||||
var export = new DeviceExport(model.Options);
|
||||
var savedExport = SavedExports.SaveExport(export, Database, CurrentUser);
|
||||
|
||||
return RedirectToAction(MVC.Config.Export.Create(savedExport.Id));
|
||||
|
||||
@@ -404,20 +404,20 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceFlag.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult Export(ExportModel Model)
|
||||
public virtual ActionResult Export(ExportModel model)
|
||||
{
|
||||
if (Model == null || Model.Options == null)
|
||||
throw new ArgumentNullException(nameof(Model));
|
||||
if (model == null || model.Options == null)
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
|
||||
Database.DiscoConfiguration.DeviceFlags.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.DeviceFlags.LastExportOptions = model.Options;
|
||||
Database.SaveChanges();
|
||||
|
||||
// Start Export
|
||||
var exportContext = new DeviceFlagExport(Model.Options);
|
||||
var exportContext = new DeviceFlagExport(model.Options);
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Config.DeviceFlag.Export(id, null, null)));
|
||||
|
||||
// Try waiting for completion
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(1)))
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2)))
|
||||
return RedirectToAction(MVC.Config.DeviceFlag.Export(taskContext.Id, null, null));
|
||||
else
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskContext.TaskStatus.SessionId));
|
||||
@@ -445,11 +445,11 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.ManageSavedExports, Claims.Config.DeviceFlag.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult SaveExport(ExportModel Model)
|
||||
public virtual ActionResult SaveExport(ExportModel model)
|
||||
{
|
||||
Database.DiscoConfiguration.DeviceFlags.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.DeviceFlags.LastExportOptions = model.Options;
|
||||
|
||||
var export = new DeviceFlagExport(Model.Options);
|
||||
var export = new DeviceFlagExport(model.Options);
|
||||
var savedExport = SavedExports.SaveExport(export, Database, CurrentUser);
|
||||
|
||||
return RedirectToAction(MVC.Config.Export.Create(savedExport.Id));
|
||||
|
||||
@@ -11,7 +11,6 @@ using Disco.Services.Plugins;
|
||||
using Disco.Services.Plugins.Features.DocumentHandlerProvider;
|
||||
using Disco.Services.Tasks;
|
||||
using Disco.Services.Users;
|
||||
using Disco.Services.Users.UserFlags;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web.Areas.API.Models.DocumentTemplate;
|
||||
using Disco.Web.Areas.Config.Models.DocumentTemplate;
|
||||
@@ -1453,25 +1452,25 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DocumentTemplate.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult Export(ExportModel Model)
|
||||
public virtual ActionResult Export(ExportModel model)
|
||||
{
|
||||
if (Model == null || Model.Options == null)
|
||||
throw new ArgumentNullException(nameof(Model));
|
||||
if (model == null || model.Options == null)
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
|
||||
var templateId = default(string);
|
||||
if (Model.Options.DocumentTemplateIds.Count == 1)
|
||||
templateId = Model.Options.DocumentTemplateIds.First();
|
||||
if (model.Options.DocumentTemplateIds.Count == 1)
|
||||
templateId = model.Options.DocumentTemplateIds.First();
|
||||
|
||||
Database.DiscoConfiguration.Documents.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.Documents.LastExportOptions = model.Options;
|
||||
Database.SaveChanges();
|
||||
|
||||
// Start Export
|
||||
var exportContext = new DocumentExport(Model.Options);
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Config.DocumentTemplate.Export(templateId, id)));
|
||||
var exportContext = new DocumentExport(model.Options);
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Config.DocumentTemplate.Export(null, id)));
|
||||
|
||||
// Try waiting for completion
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(1)))
|
||||
return RedirectToAction(MVC.Config.DocumentTemplate.Export(templateId, taskContext.Id));
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2)))
|
||||
return RedirectToAction(MVC.Config.DocumentTemplate.Export(null, taskContext.Id));
|
||||
else
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskContext.TaskStatus.SessionId));
|
||||
}
|
||||
@@ -1495,11 +1494,11 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.ManageSavedExports, Claims.Config.DocumentTemplate.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult SaveExport(ExportModel Model)
|
||||
public virtual ActionResult SaveExport(ExportModel model)
|
||||
{
|
||||
Database.DiscoConfiguration.Documents.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.Documents.LastExportOptions = model.Options;
|
||||
|
||||
var export = new DocumentExport(Model.Options);
|
||||
var export = new DocumentExport(model.Options);
|
||||
var savedExport = SavedExports.SaveExport(export, Database, CurrentUser);
|
||||
|
||||
return RedirectToAction(MVC.Config.Export.Create(savedExport.Id));
|
||||
|
||||
@@ -2182,7 +2182,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Job.Export(id)));
|
||||
|
||||
// Try waiting for completion
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(1)))
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2)))
|
||||
return RedirectToAction(MVC.Job.Export(taskContext.Id));
|
||||
else
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskContext.TaskStatus.SessionId));
|
||||
@@ -2210,9 +2210,13 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.ManageSavedExports, Claims.Job.Actions.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult SaveExport(ExportModel Model)
|
||||
public virtual ActionResult SaveExport(ExportModel model)
|
||||
{
|
||||
var export = new JobExport(Model.Options);
|
||||
// Write Options to Configuration
|
||||
Database.DiscoConfiguration.JobPreferences.LastExportOptions = model.Options;
|
||||
Database.SaveChanges();
|
||||
|
||||
var export = new JobExport(model.Options);
|
||||
var savedExport = SavedExports.SaveExport(export, Database, CurrentUser);
|
||||
|
||||
return RedirectToAction(MVC.Config.Export.Create(savedExport.Id));
|
||||
|
||||
@@ -409,20 +409,20 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorize(Claims.Config.UserFlag.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult Export(ExportModel Model)
|
||||
public virtual ActionResult Export(ExportModel model)
|
||||
{
|
||||
if (Model == null || Model.Options == null)
|
||||
throw new ArgumentNullException(nameof(Model));
|
||||
if (model == null || model.Options == null)
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
|
||||
Database.DiscoConfiguration.UserFlags.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.UserFlags.LastExportOptions = model.Options;
|
||||
Database.SaveChanges();
|
||||
|
||||
// Start Export
|
||||
var exportContext = new UserFlagExport(Model.Options);
|
||||
var exportContext = new UserFlagExport(model.Options);
|
||||
var taskContext = ExportTask.ScheduleNowCacheResult(exportContext, id => Url.Action(MVC.Config.UserFlag.Export(id, null, null)));
|
||||
|
||||
// Try waiting for completion
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(1)))
|
||||
if (taskContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2)))
|
||||
return RedirectToAction(MVC.Config.UserFlag.Export(taskContext.Id, null, null));
|
||||
else
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskContext.TaskStatus.SessionId));
|
||||
@@ -447,11 +447,11 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.ManageSavedExports, Claims.Config.UserFlag.Export)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult SaveExport(ExportModel Model)
|
||||
public virtual ActionResult SaveExport(ExportModel model)
|
||||
{
|
||||
Database.DiscoConfiguration.UserFlags.LastExportOptions = Model.Options;
|
||||
Database.DiscoConfiguration.UserFlags.LastExportOptions = model.Options;
|
||||
|
||||
var export = new UserFlagExport(Model.Options);
|
||||
var export = new UserFlagExport(model.Options);
|
||||
var savedExport = SavedExports.SaveExport(export, Database, CurrentUser);
|
||||
|
||||
return RedirectToAction(MVC.Config.Export.Create(savedExport.Id));
|
||||
|
||||
Reference in New Issue
Block a user