From 11b6720cd149a6a0e45fea057789ed772b8b71d4 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 14 Jan 2012 16:01:51 -0800 Subject: [PATCH] Backlog searching will be disabled by default. Option is available in Settings/Misc --- NzbDrone.Core/Jobs/BacklogSearchJob.cs | 11 ++++++++- NzbDrone.Core/Jobs/RecentBacklogSearchJob.cs | 12 +++++++++- .../Providers/Core/ConfigProvider.cs | 6 +++++ .../Controllers/SettingsController.cs | 21 ++++++++++++++++ NzbDrone.Web/Models/MiscSettingsModel.cs | 15 ++++++++++++ NzbDrone.Web/NzbDrone.Web.csproj | 4 ++++ NzbDrone.Web/Views/Settings/Index.cshtml | 1 + NzbDrone.Web/Views/Settings/Misc.cshtml | 24 +++++++++++++++++++ 8 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 NzbDrone.Web/Models/MiscSettingsModel.cs create mode 100644 NzbDrone.Web/Views/Settings/Misc.cshtml diff --git a/NzbDrone.Core/Jobs/BacklogSearchJob.cs b/NzbDrone.Core/Jobs/BacklogSearchJob.cs index 04989c524..f9f270f90 100644 --- a/NzbDrone.Core/Jobs/BacklogSearchJob.cs +++ b/NzbDrone.Core/Jobs/BacklogSearchJob.cs @@ -3,6 +3,7 @@ using System.Linq; using NLog; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers; +using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; namespace NzbDrone.Core.Jobs @@ -12,15 +13,17 @@ namespace NzbDrone.Core.Jobs private readonly EpisodeProvider _episodeProvider; private readonly EpisodeSearchJob _episodeSearchJob; private readonly SeasonSearchJob _seasonSearchJob; + private readonly ConfigProvider _configProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public BacklogSearchJob(EpisodeProvider episodeProvider, EpisodeSearchJob episodeSearchJob, - SeasonSearchJob seasonSearchJob) + SeasonSearchJob seasonSearchJob, ConfigProvider configProvider) { _episodeProvider = episodeProvider; _episodeSearchJob = episodeSearchJob; _seasonSearchJob = seasonSearchJob; + _configProvider = configProvider; } public string Name @@ -35,6 +38,12 @@ namespace NzbDrone.Core.Jobs public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) { + if (!_configProvider.EnableBacklogSearching) + { + Logger.Trace("Backlog searching is not enabled, aborting job."); + return; + } + var missingEpisodes = _episodeProvider.EpisodesWithoutFiles(true) .GroupBy(e => new { e.SeriesId, e.SeasonNumber }); diff --git a/NzbDrone.Core/Jobs/RecentBacklogSearchJob.cs b/NzbDrone.Core/Jobs/RecentBacklogSearchJob.cs index be399ec08..518a2f928 100644 --- a/NzbDrone.Core/Jobs/RecentBacklogSearchJob.cs +++ b/NzbDrone.Core/Jobs/RecentBacklogSearchJob.cs @@ -3,6 +3,7 @@ using System.Linq; using NLog; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers; +using NzbDrone.Core.Providers.Core; namespace NzbDrone.Core.Jobs { @@ -10,13 +11,16 @@ namespace NzbDrone.Core.Jobs { private readonly EpisodeProvider _episodeProvider; private readonly EpisodeSearchJob _episodeSearchJob; + private readonly ConfigProvider _configProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - public RecentBacklogSearchJob(EpisodeProvider episodeProvider, EpisodeSearchJob episodeSearchJob) + public RecentBacklogSearchJob(EpisodeProvider episodeProvider, EpisodeSearchJob episodeSearchJob, + ConfigProvider configProvider) { _episodeProvider = episodeProvider; _episodeSearchJob = episodeSearchJob; + _configProvider = configProvider; } public string Name @@ -31,6 +35,12 @@ namespace NzbDrone.Core.Jobs public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) { + if (!_configProvider.EnableBacklogSearching) + { + Logger.Trace("Backlog searching is not enabled, aborting job."); + return; + } + //Get episodes that are considered missing and aired in the last 30 days var missingEpisodes = _episodeProvider.EpisodesWithoutFiles(true).Where(e => e.AirDate >= DateTime.Today.AddDays(-30)); diff --git a/NzbDrone.Core/Providers/Core/ConfigProvider.cs b/NzbDrone.Core/Providers/Core/ConfigProvider.cs index 407fbc6f1..dc74e7c7f 100644 --- a/NzbDrone.Core/Providers/Core/ConfigProvider.cs +++ b/NzbDrone.Core/Providers/Core/ConfigProvider.cs @@ -396,6 +396,12 @@ namespace NzbDrone.Core.Providers.Core set { SetValue("ProwlPriority", value); } } + public virtual bool EnableBacklogSearching + { + get { return GetValueBoolean("EnableBacklogSearching"); } + set { SetValue("EnableBacklogSearching", value); } + } + private string GetValue(string key) { return GetValue(key, String.Empty); diff --git a/NzbDrone.Web/Controllers/SettingsController.cs b/NzbDrone.Web/Controllers/SettingsController.cs index 0904e1ac9..9492194ca 100644 --- a/NzbDrone.Web/Controllers/SettingsController.cs +++ b/NzbDrone.Web/Controllers/SettingsController.cs @@ -221,6 +221,14 @@ namespace NzbDrone.Web.Controllers return View(model); } + public ActionResult Misc() + { + var model = new MiscSettingsModel(); + model.EnableBacklogSearching = _configProvider.EnableBacklogSearching; + + return View(model); + } + public PartialViewResult AddProfile() { var qualityProfile = new QualityProfile @@ -582,6 +590,19 @@ namespace NzbDrone.Web.Controllers return GetInvalidModelResult(); } + [HttpPost] + public JsonResult SaveMisc(MiscSettingsModel data) + { + if (ModelState.IsValid) + { + _configProvider.EnableBacklogSearching = data.EnableBacklogSearching; + + return GetSuccessResult(); + } + + return GetInvalidModelResult(); + } + private JsonResult GetSuccessResult() { return Json(new NotificationResult() { Title = "Settings Saved" }); diff --git a/NzbDrone.Web/Models/MiscSettingsModel.cs b/NzbDrone.Web/Models/MiscSettingsModel.cs new file mode 100644 index 000000000..d71ccf9ad --- /dev/null +++ b/NzbDrone.Web/Models/MiscSettingsModel.cs @@ -0,0 +1,15 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Web.Mvc; +using NzbDrone.Core.Model; + +namespace NzbDrone.Web.Models +{ + public class MiscSettingsModel + { + [DisplayName("Enable Backlog Searching")] + [Description("Should NzbDrone try tp download missing episodes automatically?")] + public bool EnableBacklogSearching { get; set; } + } +} \ No newline at end of file diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj index 2547789bb..df16431a0 100644 --- a/NzbDrone.Web/NzbDrone.Web.csproj +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -226,6 +226,7 @@ + @@ -525,6 +526,9 @@ + + +