From 0f9360bccb81cda7e26a5825e0c4b620a74db046 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 4 Apr 2014 09:25:18 -0700 Subject: [PATCH] New: Advanced option to skip checking free space when importing files --- .../FreeSpaceSpecificationFixture.cs | 11 ++++++++ .../Configuration/ConfigService.cs | 7 +++++ .../Configuration/IConfigService.cs | 1 + .../Specifications/FreeSpaceSpecification.cs | 12 +++++++-- .../Sorting/SortingViewTemplate.html | 27 +++++++++++++++++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecificationFixture.cs index 664f56b8b..6037e8681 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecificationFixture.cs @@ -7,6 +7,7 @@ using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Common.Disk; +using NzbDrone.Core.Configuration; using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; @@ -143,5 +144,15 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); } + + [Test] + public void should_return_true_when_skip_check_is_enabled() + { + Mocker.GetMock() + .Setup(s => s.SkipFreeSpaceCheckWhenImporting) + .Returns(true); + + Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); + } } } diff --git a/src/NzbDrone.Core/Configuration/ConfigService.cs b/src/NzbDrone.Core/Configuration/ConfigService.cs index 9626b969b..883d463ad 100644 --- a/src/NzbDrone.Core/Configuration/ConfigService.cs +++ b/src/NzbDrone.Core/Configuration/ConfigService.cs @@ -164,6 +164,13 @@ namespace NzbDrone.Core.Configuration set { SetValue("DownloadedEpisodesScanInterval", value); } } + public Boolean SkipFreeSpaceCheckWhenImporting + { + get { return GetValueBoolean("SkipFreeSpaceCheckWhenImporting", false); } + + set { SetValue("SkipFreeSpaceCheckWhenImporting", value); } + } + public Boolean SetPermissionsLinux { get { return GetValueBoolean("SetPermissionsLinux", false); } diff --git a/src/NzbDrone.Core/Configuration/IConfigService.cs b/src/NzbDrone.Core/Configuration/IConfigService.cs index 9a513e75a..caaaea82a 100644 --- a/src/NzbDrone.Core/Configuration/IConfigService.cs +++ b/src/NzbDrone.Core/Configuration/IConfigService.cs @@ -26,6 +26,7 @@ namespace NzbDrone.Core.Configuration Boolean AutoDownloadPropers { get; set; } Boolean CreateEmptySeriesFolders { get; set; } FileDateType FileDate { get; set; } + Boolean SkipFreeSpaceCheckWhenImporting { get; set; } //Permissions (Media Management) Boolean SetPermissionsLinux { get; set; } diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecification.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecification.cs index bad570bf4..1256a5207 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/FreeSpaceSpecification.cs @@ -1,8 +1,8 @@ using System; using System.IO; using NLog; -using NzbDrone.Common; using NzbDrone.Common.Disk; +using NzbDrone.Core.Configuration; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications @@ -10,11 +10,13 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications public class FreeSpaceSpecification : IImportDecisionEngineSpecification { private readonly IDiskProvider _diskProvider; + private readonly IConfigService _configService; private readonly Logger _logger; - public FreeSpaceSpecification(IDiskProvider diskProvider, Logger logger) + public FreeSpaceSpecification(IDiskProvider diskProvider, IConfigService configService, Logger logger) { _diskProvider = diskProvider; + _configService = configService; _logger = logger; } @@ -22,6 +24,12 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications public bool IsSatisfiedBy(LocalEpisode localEpisode) { + if (_configService.SkipFreeSpaceCheckWhenImporting) + { + _logger.Debug("Skipping free space check when importing"); + return true; + } + try { if (localEpisode.ExistingFile) diff --git a/src/UI/Settings/MediaManagement/Sorting/SortingViewTemplate.html b/src/UI/Settings/MediaManagement/Sorting/SortingViewTemplate.html index 76f25867a..95e77c199 100644 --- a/src/UI/Settings/MediaManagement/Sorting/SortingViewTemplate.html +++ b/src/UI/Settings/MediaManagement/Sorting/SortingViewTemplate.html @@ -22,3 +22,30 @@ + +{{#isMono}} +
+ Importing + +
+ + +
+
+
+{{/isMono}}