mirror of
https://github.com/Radarr/Radarr.git
synced 2026-04-17 21:26:22 -04:00
New: Reset Quality Definitions to default
(cherry picked from commit d5fff15f32fdb49768dcadd94c760678e650c884)
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
"AreYouSureYouWantToRemoveSelectedItemFromQueue": "Are you sure you want to remove 1 item from the queue?",
|
||||
"AreYouSureYouWantToRemoveSelectedItemsFromQueue": "Are you sure you want to remove {0} items from the queue?",
|
||||
"AreYouSureYouWantToRemoveTheSelectedItemsFromBlocklist": "Are you sure you want to remove the selected items from the blocklist?",
|
||||
"AreYouSureYouWantToResetQualityDefinitions": "Are you sure you want to reset quality definitions?",
|
||||
"AreYouSureYouWantToResetYourAPIKey": "Are you sure you want to reset your API Key?",
|
||||
"AsAllDayHelpText": "Events will appear as all-day events in your calendar",
|
||||
"AudioInfo": "Audio Info",
|
||||
@@ -846,6 +847,10 @@
|
||||
"RescanMovieFolderAfterRefresh": "Rescan Movie Folder after Refresh",
|
||||
"Reset": "Reset",
|
||||
"ResetAPIKey": "Reset API Key",
|
||||
"ResetDefinitions": "Reset Definitions",
|
||||
"ResetQualityDefinitions": "Reset Quality Definitions",
|
||||
"ResetTitles": "Reset Titles",
|
||||
"ResetTitlesHelpText": "Reset definition titles as well as values",
|
||||
"Restart": "Restart",
|
||||
"RestartNow": "Restart Now",
|
||||
"RestartRadarr": "Restart Radarr",
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
|
||||
namespace NzbDrone.Core.Qualities.Commands
|
||||
{
|
||||
public class ResetQualityDefinitionsCommand : Command
|
||||
{
|
||||
public bool ResetTitles { get; set; }
|
||||
|
||||
public ResetQualityDefinitionsCommand(bool resetTitles = false)
|
||||
{
|
||||
ResetTitles = resetTitles;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Cache;
|
||||
using NzbDrone.Core.Lifecycle;
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Qualities.Commands;
|
||||
|
||||
namespace NzbDrone.Core.Qualities
|
||||
{
|
||||
@@ -17,7 +19,7 @@ namespace NzbDrone.Core.Qualities
|
||||
QualityDefinition Get(Quality quality);
|
||||
}
|
||||
|
||||
public class QualityDefinitionService : IQualityDefinitionService, IHandle<ApplicationStartedEvent>
|
||||
public class QualityDefinitionService : IQualityDefinitionService, IExecute<ResetQualityDefinitionsCommand>, IHandle<ApplicationStartedEvent>
|
||||
{
|
||||
private readonly IQualityDefinitionRepository _repo;
|
||||
private readonly ICached<Dictionary<Quality, QualityDefinition>> _cache;
|
||||
@@ -105,5 +107,28 @@ namespace NzbDrone.Core.Qualities
|
||||
|
||||
InsertMissingDefinitions();
|
||||
}
|
||||
|
||||
public void Execute(ResetQualityDefinitionsCommand message)
|
||||
{
|
||||
List<QualityDefinition> updateList = new List<QualityDefinition>();
|
||||
|
||||
var allDefinitions = Quality.DefaultQualityDefinitions.OrderBy(d => d.Weight).ToList();
|
||||
var existingDefinitions = _repo.All().ToList();
|
||||
|
||||
foreach (var definition in allDefinitions)
|
||||
{
|
||||
var existing = existingDefinitions.SingleOrDefault(d => d.Quality == definition.Quality);
|
||||
|
||||
existing.MinSize = definition.MinSize;
|
||||
existing.MaxSize = definition.MaxSize;
|
||||
existing.Title = message.ResetTitles ? definition.Title : existing.Title;
|
||||
|
||||
updateList.Add(existing);
|
||||
}
|
||||
|
||||
_repo.UpdateMany(updateList);
|
||||
|
||||
_cache.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NzbDrone.Core.Datastore.Events;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Qualities;
|
||||
using NzbDrone.SignalR;
|
||||
using Radarr.Http;
|
||||
using Radarr.Http.REST;
|
||||
using Radarr.Http.REST.Attributes;
|
||||
@@ -9,11 +12,12 @@ using Radarr.Http.REST.Attributes;
|
||||
namespace Radarr.Api.V3.Qualities
|
||||
{
|
||||
[V3ApiController]
|
||||
public class QualityDefinitionController : RestController<QualityDefinitionResource>
|
||||
public class QualityDefinitionController : RestControllerWithSignalR<QualityDefinitionResource, QualityDefinition>, IHandle<CommandExecutedEvent>
|
||||
{
|
||||
private readonly IQualityDefinitionService _qualityDefinitionService;
|
||||
|
||||
public QualityDefinitionController(IQualityDefinitionService qualityDefinitionService)
|
||||
public QualityDefinitionController(IQualityDefinitionService qualityDefinitionService, IBroadcastSignalRMessage signalRBroadcaster)
|
||||
: base(signalRBroadcaster)
|
||||
{
|
||||
_qualityDefinitionService = qualityDefinitionService;
|
||||
}
|
||||
@@ -40,7 +44,7 @@ namespace Radarr.Api.V3.Qualities
|
||||
[HttpPut("update")]
|
||||
public object UpdateMany([FromBody] List<QualityDefinitionResource> resource)
|
||||
{
|
||||
//Read from request
|
||||
// Read from request
|
||||
var qualityDefinitions = resource
|
||||
.ToModel()
|
||||
.ToList();
|
||||
@@ -50,5 +54,14 @@ namespace Radarr.Api.V3.Qualities
|
||||
return Accepted(_qualityDefinitionService.All()
|
||||
.ToResource());
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
public void Handle(CommandExecutedEvent message)
|
||||
{
|
||||
if (message.Command.Name == "ResetQualityDefinitions")
|
||||
{
|
||||
BroadcastResourceChange(ModelAction.Sync);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user