1
0
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:
Qstick
2022-06-05 22:50:46 -05:00
parent 850bfdcf82
commit ae8245c3c5
13 changed files with 342 additions and 9 deletions

View File

@@ -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",

View File

@@ -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;
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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);
}
}
}
}