diff --git a/NzbDrone.Api/Episodes/EpisodeResource.cs b/NzbDrone.Api/Episodes/EpisodeResource.cs index 4aa9ae80d..8b97f5a4e 100644 --- a/NzbDrone.Api/Episodes/EpisodeResource.cs +++ b/NzbDrone.Api/Episodes/EpisodeResource.cs @@ -16,7 +16,7 @@ public class EpisodeResource : RestResource public EpisodeFile EpisodeFile { get; set; } public Boolean HasFile { get; set; } - public Boolean Ignored { get; set; } + public Boolean Monitored { get; set; } public Int32 SceneEpisodeNumber { get; set; } public Int32 SceneSeasonNumber { get; set; } public Int32 TvDbEpisodeId { get; set; } diff --git a/NzbDrone.Core.Test/DecisionEngineTests/MonitoredEpisodeSpecificationFixture.cs b/NzbDrone.Core.Test/DecisionEngineTests/MonitoredEpisodeSpecificationFixture.cs index 553b8e085..29400b977 100644 --- a/NzbDrone.Core.Test/DecisionEngineTests/MonitoredEpisodeSpecificationFixture.cs +++ b/NzbDrone.Core.Test/DecisionEngineTests/MonitoredEpisodeSpecificationFixture.cs @@ -30,8 +30,8 @@ public void Setup() .With(c => c.Monitored = true) .Build(); - _firstEpisode = new Episode { Ignored = false }; - _secondEpisode = new Episode { Ignored = false }; + _firstEpisode = new Episode { Monitored = true }; + _secondEpisode = new Episode { Monitored = true }; var singleEpisodeList = new List { _firstEpisode }; @@ -48,20 +48,16 @@ public void Setup() Series = _fakeSeries, Episodes = singleEpisodeList }; - - - - } - private void WithFirstEpisodeIgnored() + private void WithFirstEpisodeUnmonitored() { - _firstEpisode.Ignored = true; + _firstEpisode.Monitored = false; } - private void WithSecondEpisodeIgnored() + private void WithSecondEpisodeUnmonitored() { - _secondEpisode.Ignored = true; + _secondEpisode.Monitored = false; } [Test] @@ -81,34 +77,34 @@ public void not_monitored_series_should_be_skipped() [Test] - public void only_episode_ignored_should_return_false() + public void only_episode_not_monitored_should_return_false() { - WithFirstEpisodeIgnored(); + WithFirstEpisodeUnmonitored(); _monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultSingle).Should().BeFalse(); } [Test] - public void both_episodes_ignored_should_return_false() + public void both_episodes_not_monitored_should_return_false() { - WithFirstEpisodeIgnored(); - WithSecondEpisodeIgnored(); + WithFirstEpisodeUnmonitored(); + WithSecondEpisodeUnmonitored(); _monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultMulti).Should().BeFalse(); } [Test] - public void only_first_episode_ignored_should_return_monitored() + public void only_first_episode_not_monitored_should_return_monitored() { - WithFirstEpisodeIgnored(); + WithFirstEpisodeUnmonitored(); _monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultMulti).Should().BeTrue(); } [Test] - public void only_second_episode_ignored_should_return_monitored() + public void only_second_episode_not_monitored_should_return_monitored() { - WithSecondEpisodeIgnored(); + WithSecondEpisodeUnmonitored(); _monitoredEpisodeSpecification.IsSatisfiedBy(_parseResultMulti).Should().BeTrue(); } diff --git a/NzbDrone.Core.Test/TvTests/EpisodeProviderTests/EpisodeProviderTest.cs b/NzbDrone.Core.Test/TvTests/EpisodeProviderTests/EpisodeProviderTest.cs index 3f243402e..6ed79d4bc 100644 --- a/NzbDrone.Core.Test/TvTests/EpisodeProviderTests/EpisodeProviderTest.cs +++ b/NzbDrone.Core.Test/TvTests/EpisodeProviderTests/EpisodeProviderTest.cs @@ -1,4 +1,6 @@ -/* +//TODO: Alrighty then... We should delete this or uncomment some of these tests... + +/* using System; diff --git a/NzbDrone.Core.Test/TvTests/SeasonProviderTest.cs b/NzbDrone.Core.Test/TvTests/SeasonProviderTest.cs index 6b47264c2..a68b196a8 100644 --- a/NzbDrone.Core.Test/TvTests/SeasonProviderTest.cs +++ b/NzbDrone.Core.Test/TvTests/SeasonProviderTest.cs @@ -13,26 +13,25 @@ namespace NzbDrone.Core.Test.TvTests { public class SeasonProviderTest : DbTest { - [TestCase(true)] [TestCase(false)] - public void IsIgnored_should_return_ignored_status_of_season(bool ignoreFlag) + public void Ismonitored_should_return_monitored_status_of_season(bool monitored) { var fakeSeason = Builder.CreateNew() - .With(s => s.Ignored = ignoreFlag) + .With(s => s.Monitored = monitored) .BuildNew(); Db.Insert(fakeSeason); - var result = Subject.IsIgnored(fakeSeason.SeriesId, fakeSeason.SeasonNumber); + var result = Subject.IsMonitored(fakeSeason.SeriesId, fakeSeason.SeasonNumber); - result.Should().Be(ignoreFlag); + result.Should().Be(monitored); } [Test] - public void IsIgnored_should_return_false_if_not_in_db() + public void Monitored_should_return_true_if_not_in_db() { - Subject.IsIgnored(10, 0).Should().BeFalse(); + Subject.IsMonitored(10, 0).Should().BeTrue(); } [Test] diff --git a/NzbDrone.Core/Configuration/ConfigService.cs b/NzbDrone.Core/Configuration/ConfigService.cs index 80fec4332..382ea5c12 100644 --- a/NzbDrone.Core/Configuration/ConfigService.cs +++ b/NzbDrone.Core/Configuration/ConfigService.cs @@ -142,10 +142,10 @@ public string UpdateUrl set { SetValue("UpdateUrl", value); } } - public bool AutoIgnorePreviouslyDownloadedEpisodes + public bool AutoUnmonitorPreviouslyDownloadedEpisodes { - get { return GetValueBoolean("AutoIgnorePreviouslyDownloadedEpisodes"); } - set { SetValue("AutoIgnorePreviouslyDownloadedEpisodes", value); } + get { return GetValueBoolean("AutoUnmonitorPreviouslyDownloadedEpisodes"); } + set { SetValue("AutoUnmonitorPreviouslyDownloadedEpisodes", value); } } public int Retention diff --git a/NzbDrone.Core/Configuration/IConfigService.cs b/NzbDrone.Core/Configuration/IConfigService.cs index cec8ca8ec..430d15fde 100644 --- a/NzbDrone.Core/Configuration/IConfigService.cs +++ b/NzbDrone.Core/Configuration/IConfigService.cs @@ -22,7 +22,7 @@ public interface IConfigService String DownloadedEpisodesFolder { get; set; } bool UseSeasonFolder { get; set; } string SeasonFolderFormat { get; set; } - bool AutoIgnorePreviouslyDownloadedEpisodes { get; set; } + bool AutoUnmonitorPreviouslyDownloadedEpisodes { get; set; } int Retention { get; set; } Guid UGuid { get; } DownloadClientType DownloadClient { get; set; } diff --git a/NzbDrone.Core/Datastore/Migration/010_add_monitored.cs b/NzbDrone.Core/Datastore/Migration/010_add_monitored.cs new file mode 100644 index 000000000..266649039 --- /dev/null +++ b/NzbDrone.Core/Datastore/Migration/010_add_monitored.cs @@ -0,0 +1,22 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Tags("")] + [Migration(10)] + public class add_monitored : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Alter.Table("Episodes").AddColumn("Monitored").AsBoolean().Nullable(); + Alter.Table("Seasons").AddColumn("Monitored").AsBoolean().Nullable(); + + Execute.Sql("UPDATE Episodes SET Monitored = 1 WHERE Ignored = 0"); + Execute.Sql("UPDATE Episodes SET Monitored = 0 WHERE Ignored = 1"); + + Execute.Sql("UPDATE Seasons SET Monitored = 1 WHERE Ignored = 0"); + Execute.Sql("UPDATE Seasons SET Monitored = 0 WHERE Ignored = 1"); + } + } +} diff --git a/NzbDrone.Core/Datastore/Migration/011_remove_ignored.cs b/NzbDrone.Core/Datastore/Migration/011_remove_ignored.cs new file mode 100644 index 000000000..765319f25 --- /dev/null +++ b/NzbDrone.Core/Datastore/Migration/011_remove_ignored.cs @@ -0,0 +1,16 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Tags("")] + [Migration(11)] + public class remove_ignored : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + SQLiteAlter.DropColumns("Episodes", new[] { "Ignored" }); + SQLiteAlter.DropColumns("Seasons", new[] { "Ignored" }); + } + } +} diff --git a/NzbDrone.Core/DecisionEngine/Specifications/MonitoredEpisodeSpecification.cs b/NzbDrone.Core/DecisionEngine/Specifications/MonitoredEpisodeSpecification.cs index 0fae0fbd2..d4449162a 100644 --- a/NzbDrone.Core/DecisionEngine/Specifications/MonitoredEpisodeSpecification.cs +++ b/NzbDrone.Core/DecisionEngine/Specifications/MonitoredEpisodeSpecification.cs @@ -17,7 +17,7 @@ public string RejectionReason { get { - return "Series is not monitored or Episode is ignored"; + return "Series or Episode is not monitored"; } } @@ -30,12 +30,12 @@ public virtual bool IsSatisfiedBy(RemoteEpisode subject) } //return monitored if any of the episodes are monitored - if (subject.Episodes.Any(episode => !episode.Ignored)) + if (subject.Episodes.Any(episode => episode.Monitored)) { return true; } - _logger.Debug("All episodes are ignored. skipping."); + _logger.Debug("No episodes are monitored. skipping."); return false; } } diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index d5d74da0e..9ded5f15a 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -214,6 +214,8 @@ + + diff --git a/NzbDrone.Core/SeriesStats/SeriesStatisticsRepository.cs b/NzbDrone.Core/SeriesStats/SeriesStatisticsRepository.cs index 510bceeb2..c813e3bb6 100644 --- a/NzbDrone.Core/SeriesStats/SeriesStatisticsRepository.cs +++ b/NzbDrone.Core/SeriesStats/SeriesStatisticsRepository.cs @@ -25,8 +25,8 @@ public List SeriesStatistics() var queryText = @"SELECT SeriesId, - SUM(CASE WHEN Ignored = 0 AND Airdate <= @currentDate THEN 1 ELSE 0 END) AS EpisodeCount, - SUM(CASE WHEN Ignored = 0 AND Episodes.EpisodeFileId > 0 AND AirDate <= @currentDate THEN 1 ELSE 0 END) as EpisodeFileCount, + SUM(CASE WHEN Monitored = 1 AND Airdate <= @currentDate THEN 1 ELSE 0 END) AS EpisodeCount, + SUM(CASE WHEN Monitored = 1 AND Episodes.EpisodeFileId > 0 AND AirDate <= @currentDate THEN 1 ELSE 0 END) as EpisodeFileCount, MAX(Episodes.SeasonNumber) as SeasonCount, MIN(CASE WHEN AirDate < @currentDate THEN NULL ELSE AirDate END) as NextAiringString FROM Episodes diff --git a/NzbDrone.Core/Tv/Episode.cs b/NzbDrone.Core/Tv/Episode.cs index b593579b7..bc1cfc51a 100644 --- a/NzbDrone.Core/Tv/Episode.cs +++ b/NzbDrone.Core/Tv/Episode.cs @@ -17,7 +17,7 @@ public class Episode : ModelBase public DateTime? AirDate { get; set; } public string Overview { get; set; } - public Boolean Ignored { get; set; } + public Boolean Monitored { get; set; } public Nullable AbsoluteEpisodeNumber { get; set; } public int SceneSeasonNumber { get; set; } public int SceneEpisodeNumber { get; set; } diff --git a/NzbDrone.Core/Tv/EpisodeRepository.cs b/NzbDrone.Core/Tv/EpisodeRepository.cs index e066f97ed..b4cb45060 100644 --- a/NzbDrone.Core/Tv/EpisodeRepository.cs +++ b/NzbDrone.Core/Tv/EpisodeRepository.cs @@ -24,7 +24,7 @@ public interface IEpisodeRepository : IBasicRepository Episode FindEpisodeBySceneNumbering(int seriesId, int seasonNumber, int episodeNumber); List EpisodesWithFiles(); List EpisodesBetweenDates(DateTime startDate, DateTime endDate); - void SetIgnoreFlat(Episode episode, bool ignoreFlag); + void SetMonitoredFlat(Episode episode, bool monitored); void SetFileId(int episodeId, int fileId); } @@ -119,10 +119,10 @@ public List EpisodesBetweenDates(DateTime startDate, DateTime endDate) .AndWhere(e => e.AirDate <= endDate).ToList(); } - public void SetIgnoreFlat(Episode episode, bool ignoreFlag) + public void SetMonitoredFlat(Episode episode, bool monitored) { - episode.Ignored = ignoreFlag; - SetFields(episode, p => p.Ignored); + episode.Monitored = monitored; + SetFields(episode, p => p.Monitored); } public void SetFileId(int episodeId, int fileId) diff --git a/NzbDrone.Core/Tv/EpisodeService.cs b/NzbDrone.Core/Tv/EpisodeService.cs index 787b653fe..a1ec57fed 100644 --- a/NzbDrone.Core/Tv/EpisodeService.cs +++ b/NzbDrone.Core/Tv/EpisodeService.cs @@ -24,7 +24,7 @@ public interface IEpisodeService List EpisodesWithFiles(); void UpdateEpisode(Episode episode); List GetEpisodeNumbersBySeason(int seriesId, int seasonNumber); - void SetEpisodeIgnore(int episodeId, bool isIgnored); + void SetEpisodeMonitored(int episodeId, bool monitored); bool IsFirstOrLastEpisodeOfSeason(int episodeId); void UpdateEpisodes(List episodes); List EpisodesBetweenDates(DateTime start, DateTime end); @@ -123,12 +123,12 @@ public List GetEpisodeNumbersBySeason(int seriesId, int seasonNumber) return GetEpisodesBySeason(seriesId, seasonNumber).Select(c => c.Id).ToList(); } - public void SetEpisodeIgnore(int episodeId, bool isIgnored) + public void SetEpisodeMonitored(int episodeId, bool monitored) { var episode = _episodeRepository.Get(episodeId); - _episodeRepository.SetIgnoreFlat(episode, isIgnored); + _episodeRepository.SetMonitoredFlat(episode, monitored); - logger.Info("Ignore flag for Episode:{0} was set to {1}", episodeId, isIgnored); + logger.Info("Monitored flag for Episode:{0} was set to {1}", episodeId, monitored); } public bool IsFirstOrLastEpisodeOfSeason(int episodeId) @@ -179,7 +179,7 @@ public void Handle(EpisodeFileDeletedEvent message) { _logger.Trace("Detaching episode {0} from file.", episode.Id); episode.EpisodeFileId = 0; - episode.Ignored = _configService.AutoIgnorePreviouslyDownloadedEpisodes; + episode.Monitored = _configService.AutoUnmonitorPreviouslyDownloadedEpisodes; UpdateEpisode(episode); } } @@ -192,7 +192,5 @@ public void Handle(EpisodeFileAddedEvent message) _logger.Debug("Linking [{0}] > [{1}]", message.EpisodeFile.Path, episode); } } - - } } \ No newline at end of file diff --git a/NzbDrone.Core/Tv/RefreshSeriesService.cs b/NzbDrone.Core/Tv/RefreshSeriesService.cs index 033d5e499..29d23fd57 100644 --- a/NzbDrone.Core/Tv/RefreshSeriesService.cs +++ b/NzbDrone.Core/Tv/RefreshSeriesService.cs @@ -116,12 +116,12 @@ private void RefreshEpisodeInfo(Series series, IEnumerable remoteEpisod //If it is Episode Zero Ignore it (specials, sneak peeks.) if (episode.EpisodeNumber == 0 && episode.SeasonNumber != 1) { - episodeToUpdate.Ignored = true; + episodeToUpdate.Monitored = false; } else { var season = seasons.FirstOrDefault(c => c.SeasonNumber == episode.SeasonNumber); - episodeToUpdate.Ignored = season != null && season.Ignored; + episodeToUpdate.Monitored = season != null && season.Monitored; } } else diff --git a/NzbDrone.Core/Tv/Season.cs b/NzbDrone.Core/Tv/Season.cs index 2bda45ed1..d5973a8fb 100644 --- a/NzbDrone.Core/Tv/Season.cs +++ b/NzbDrone.Core/Tv/Season.cs @@ -9,7 +9,7 @@ public class Season : ModelBase { public int SeriesId { get; set; } public int SeasonNumber { get; set; } - public Boolean Ignored { get; set; } + public Boolean Monitored { get; set; } public List Episodes { get; set; } } diff --git a/NzbDrone.Core/Tv/SeasonRepository.cs b/NzbDrone.Core/Tv/SeasonRepository.cs index 092131b98..f580c8d94 100644 --- a/NzbDrone.Core/Tv/SeasonRepository.cs +++ b/NzbDrone.Core/Tv/SeasonRepository.cs @@ -10,7 +10,7 @@ public interface ISeasonRepository : IBasicRepository { IList GetSeasonNumbers(int seriesId); Season Get(int seriesId, int seasonNumber); - bool IsIgnored(int seriesId, int seasonNumber); + bool IsMonitored(int seriesId, int seasonNumber); List GetSeasonBySeries(int seriesId); } @@ -32,13 +32,13 @@ public Season Get(int seriesId, int seasonNumber) return Query.Single(s => s.SeriesId == seriesId && s.SeasonNumber == seasonNumber); } - public bool IsIgnored(int seriesId, int seasonNumber) + public bool IsMonitored(int seriesId, int seasonNumber) { var season = Query.SingleOrDefault(s => s.SeriesId == seriesId && s.SeasonNumber == seasonNumber); - if (season == null) return false; + if (season == null) return true; - return season.Ignored; + return season.Monitored; } public List GetSeasonBySeries(int seriesId) diff --git a/NzbDrone.Core/Tv/SeasonService.cs b/NzbDrone.Core/Tv/SeasonService.cs index 66b983686..30af7e87d 100644 Binary files a/NzbDrone.Core/Tv/SeasonService.cs and b/NzbDrone.Core/Tv/SeasonService.cs differ diff --git a/UI/Settings/MediaManagement/FileManagement/ViewTemplate.html b/UI/Settings/MediaManagement/FileManagement/ViewTemplate.html index 089e9a37c..0df4a37b8 100644 --- a/UI/Settings/MediaManagement/FileManagement/ViewTemplate.html +++ b/UI/Settings/MediaManagement/FileManagement/ViewTemplate.html @@ -6,7 +6,7 @@