From 10fc9a1981bdb63dbeb8f0b20600b3772e0fd2af Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 21 Oct 2011 16:33:54 -0700 Subject: [PATCH 1/3] Added Submenu to Missing, allows triggering of a backlog search as well as RSS Sync. Removed unneeded cshtml file. --- NzbDrone.Web/Controllers/CommandController.cs | 6 ++++++ NzbDrone.Web/NzbDrone.Web.csproj | 3 --- NzbDrone.Web/Views/Missing/Index.cshtml | 7 +++++++ NzbDrone.Web/Views/Series/SingleSeason.cshtml | 18 ------------------ 4 files changed, 13 insertions(+), 21 deletions(-) delete mode 100644 NzbDrone.Web/Views/Series/SingleSeason.cshtml diff --git a/NzbDrone.Web/Controllers/CommandController.cs b/NzbDrone.Web/Controllers/CommandController.cs index 520609b21..e401f01a4 100644 --- a/NzbDrone.Web/Controllers/CommandController.cs +++ b/NzbDrone.Web/Controllers/CommandController.cs @@ -26,6 +26,12 @@ namespace NzbDrone.Web.Controllers return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } + public JsonResult BacklogSearch() + { + _jobProvider.QueueJob(typeof(BacklogSearchJob)); + return new JsonResult { Data = "ok", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; + } + public JsonResult SyncEpisodesOnDisk(int seriesId) { //Syncs the episodes on disk for the specified series diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj index 01ceb302c..810f1e238 100644 --- a/NzbDrone.Web/NzbDrone.Web.csproj +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -752,9 +752,6 @@ - - - diff --git a/NzbDrone.Web/Views/Missing/Index.cshtml b/NzbDrone.Web/Views/Missing/Index.cshtml index 4abc3f2bd..dc7925543 100644 --- a/NzbDrone.Web/Views/Missing/Index.cshtml +++ b/NzbDrone.Web/Views/Missing/Index.cshtml @@ -7,6 +7,13 @@ Missing +@section ActionMenu{ + +} + @section MainContent{ @{Html.Telerik().Grid().Name("missing") .TableHtmlAttributes(new { @class = "Grid" }) diff --git a/NzbDrone.Web/Views/Series/SingleSeason.cshtml b/NzbDrone.Web/Views/Series/SingleSeason.cshtml deleted file mode 100644 index a40c08683..000000000 --- a/NzbDrone.Web/Views/Series/SingleSeason.cshtml +++ /dev/null @@ -1,18 +0,0 @@ -@using NzbDrone.Web.Helpers; -@using NzbDrone.Web.Models; -@model SeasonEditModel - -@using (Html.BeginCollectionItem("SeasonEditor")) -{ - var idClean = ViewData.TemplateInfo.HtmlFieldPrefix.Replace('[', '_').Replace(']', '_'); - -
- - @Html.DisplayFor(m => m.SeasonString) - @Html.CheckBoxFor(m => m.Monitored, new { @class = "chkbox" }) - - @Html.HiddenFor(m => m.SeriesId) - @Html.HiddenFor(m => m.SeasonNumber) - @Html.Hidden(idClean, new { @class = "cleanId", }) -
-} \ No newline at end of file From 11e1deb5f7f0ece1cb7251c9cdc0e4cb109d43a4 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 21 Oct 2011 16:49:30 -0700 Subject: [PATCH 2/3] PostDownloadProvider was treating successful downloads as ones with an error and incorrectly trying to rename them before processing. --- NzbDrone.Core/Providers/PostDownloadProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NzbDrone.Core/Providers/PostDownloadProvider.cs b/NzbDrone.Core/Providers/PostDownloadProvider.cs index b80771930..3d0709c59 100644 --- a/NzbDrone.Core/Providers/PostDownloadProvider.cs +++ b/NzbDrone.Core/Providers/PostDownloadProvider.cs @@ -83,7 +83,7 @@ namespace NzbDrone.Core.Providers continue; } - if (folderStatus != PostDownloadStatusType.Unknown) + if (folderStatus != PostDownloadStatusType.NoError) { //Retry processing on the download ReProcessDownload(new PostDownloadInfoModel{ Name = subfolderInfo.FullName, Status = folderStatus }); From bb5febaadec1d380c8aad1b58073c02fdcbcb965 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 22 Oct 2011 12:03:54 -0700 Subject: [PATCH 3/3] DiskScanProvider.Scan() will log a warning if the path doesn't exist. --- .../ProviderTests/DiskScanProviderTest.cs | 30 +++++++++++++++++-- NzbDrone.Core/Providers/DiskScanProvider.cs | 6 ++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs index c00f22c39..5c90daa12 100644 --- a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs @@ -14,7 +14,6 @@ namespace NzbDrone.Core.Test.ProviderTests // ReSharper disable InconsistentNaming public class DiskScanProviderTest : TestBase { - [Test] public void scan_series_should_update_last_scan_date() { @@ -38,7 +37,6 @@ namespace NzbDrone.Core.Test.ProviderTests } - [Test] public void cleanup_should_skip_existing_files() { @@ -89,7 +87,6 @@ namespace NzbDrone.Core.Test.ProviderTests } - [Test] public void cleanup_should_delete_none_existing_files_remove_links_to_episodes() { @@ -131,7 +128,34 @@ namespace NzbDrone.Core.Test.ProviderTests } + [Test] + public void scan_series_should_log_warning_if_path_doesnt_exist_on_disk() + { + //Setup + var mocker = new AutoMoqer(MockBehavior.Strict); + + var series = Builder.CreateNew() + .With(s => s.Path = @"C:\Test\TV\SeriesName\") + .Build(); + + mocker.GetMock() + .Setup(c => c.DeleteOrphaned()) + .Returns(0); + + mocker.GetMock() + .Setup(c => c.RepairLinks()) + .Returns(0); + mocker.GetMock() + .Setup(c => c.FolderExists(series.Path)) + .Returns(false); + //Act + mocker.Resolve().Scan(series, series.Path); + + //Assert + mocker.VerifyAllMocks(); + ExceptionVerification.ExcpectedWarns(1); + } } } diff --git a/NzbDrone.Core/Providers/DiskScanProvider.cs b/NzbDrone.Core/Providers/DiskScanProvider.cs index 070d2ad9a..441fa747a 100644 --- a/NzbDrone.Core/Providers/DiskScanProvider.cs +++ b/NzbDrone.Core/Providers/DiskScanProvider.cs @@ -58,6 +58,12 @@ namespace NzbDrone.Core.Providers _mediaFileProvider.DeleteOrphaned(); _mediaFileProvider.RepairLinks(); + if (!_diskProvider.FolderExists(path)) + { + Logger. Warn("Series folder doesn't exist: {0}", path); + return new List(); + } + if (_episodeProvider.GetEpisodeBySeries(series.SeriesId).Count == 0) { Logger.Debug("Series {0} has no episodes. skipping", series.Title);