Fixed: Custom Formats upgrading even when profile doesn't allow upgrades
Closes #5330
This commit is contained in:
parent
3316665e93
commit
fe5c52602a
|
@ -1,179 +1,211 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.CustomFormats;
|
||||||
using NzbDrone.Core.DecisionEngine.Specifications;
|
using NzbDrone.Core.DecisionEngine.Specifications;
|
||||||
using NzbDrone.Core.Languages;
|
using NzbDrone.Core.Profiles;
|
||||||
using NzbDrone.Core.Profiles.Qualities;
|
using NzbDrone.Core.Profiles.Qualities;
|
||||||
using NzbDrone.Core.Qualities;
|
using NzbDrone.Core.Qualities;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
using NzbDrone.Core.Test.Languages;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Test.DecisionEngineTests
|
namespace NzbDrone.Core.Test.DecisionEngineTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class UpgradeAllowedSpecificationFixture : CoreTest<UpgradableSpecification>
|
public class UpgradeAllowedSpecificationFixture : CoreTest<UpgradableSpecification>
|
||||||
{
|
{
|
||||||
[Test]
|
private CustomFormat _customFormatOne;
|
||||||
public void should_return_false_when_quality_is_better_languages_are_the_same_and_upgrade_allowed_is_false_for_quality_profile()
|
private CustomFormat _customFormatTwo;
|
||||||
|
private QualityProfile _qualityProfile;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
{
|
{
|
||||||
Subject.IsUpgradeAllowed(
|
_customFormatOne = new CustomFormat
|
||||||
new QualityProfile
|
{
|
||||||
|
Id = 1,
|
||||||
|
Name = "One"
|
||||||
|
};
|
||||||
|
_customFormatTwo = new CustomFormat
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
Name = "Two"
|
||||||
|
};
|
||||||
|
|
||||||
|
_qualityProfile = new QualityProfile
|
||||||
|
{
|
||||||
|
Cutoff = Quality.Bluray1080p.Id,
|
||||||
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
|
UpgradeAllowed = false,
|
||||||
|
CutoffFormatScore = 100,
|
||||||
|
FormatItems = new List<ProfileFormatItem>
|
||||||
{
|
{
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
new ProfileFormatItem
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
{
|
||||||
UpgradeAllowed = false
|
Id = 1,
|
||||||
},
|
Format = _customFormatOne,
|
||||||
|
Score = 50
|
||||||
|
},
|
||||||
|
new ProfileFormatItem
|
||||||
|
{
|
||||||
|
Id = 1,
|
||||||
|
Format = _customFormatTwo,
|
||||||
|
Score = 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_when_quality_is_better_custom_formats_are_the_same_and_upgrading_is_not_allowed()
|
||||||
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
|
Subject.IsUpgradeAllowed(
|
||||||
|
_qualityProfile,
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.Bluray1080p))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.Bluray1080p),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeFalse();
|
.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_language_upgrade_when_upgrading_is_allowed()
|
public void should_return_false_when_quality_is_same_and_custom_format_is_upgrade_and_upgrading_is_not_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
new QualityModel(Quality.DVD),
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
new List<CustomFormat> { _customFormatOne },
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
new QualityModel(Quality.DVD),
|
||||||
UpgradeAllowed = true
|
new List<CustomFormat> { _customFormatTwo })
|
||||||
},
|
.Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_for_custom_format_upgrade_when_upgrading_is_allowed()
|
||||||
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = true;
|
||||||
|
|
||||||
|
Subject.IsUpgradeAllowed(
|
||||||
|
_qualityProfile,
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat> { _customFormatOne },
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat> { _customFormatTwo })
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_same_language_when_upgrading_is_allowed()
|
public void should_return_true_for_same_custom_format_score_when_upgrading_is_not_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat> { _customFormatOne },
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat> { _customFormatOne })
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_same_language_when_upgrading_is_not_allowed()
|
public void should_return_true_for_lower_custom_format_score_when_upgrading_is_allowed()
|
||||||
{
|
{
|
||||||
Subject.IsUpgradeAllowed(
|
_qualityProfile.UpgradeAllowed = true;
|
||||||
new QualityProfile
|
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
|
||||||
new QualityModel(Quality.DVD))
|
|
||||||
.Should().BeTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_return_true_for_lower_language_when_upgrading_is_allowed()
|
|
||||||
{
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat> { _customFormatTwo },
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat> { _customFormatOne })
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_lower_language_when_upgrading_is_not_allowed()
|
public void should_return_true_for_lower_language_when_upgrading_is_not_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat> { _customFormatTwo },
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat> { _customFormatOne })
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_quality_upgrade_when_upgrading_is_allowed()
|
public void should_return_true_for_quality_upgrade_when_upgrading_is_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = true;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.Bluray1080p))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.Bluray1080p),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_same_quality_when_upgrading_is_allowed()
|
public void should_return_true_for_same_quality_when_upgrading_is_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = true;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_same_quality_when_upgrading_is_not_allowed()
|
public void should_return_true_for_same_quality_when_upgrading_is_not_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = false
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.DVD))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.DVD),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_lower_quality_when_upgrading_is_allowed()
|
public void should_return_true_for_lower_quality_when_upgrading_is_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = true;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = true
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.SDTV))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.SDTV),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_lower_quality_when_upgrading_is_not_allowed()
|
public void should_return_true_for_lower_quality_when_upgrading_is_not_allowed()
|
||||||
{
|
{
|
||||||
|
_qualityProfile.UpgradeAllowed = false;
|
||||||
|
|
||||||
Subject.IsUpgradeAllowed(
|
Subject.IsUpgradeAllowed(
|
||||||
new QualityProfile
|
_qualityProfile,
|
||||||
{
|
|
||||||
Cutoff = Quality.Bluray1080p.Id,
|
|
||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
|
||||||
UpgradeAllowed = false
|
|
||||||
},
|
|
||||||
new QualityModel(Quality.DVD),
|
new QualityModel(Quality.DVD),
|
||||||
new QualityModel(Quality.SDTV))
|
new List<CustomFormat>(),
|
||||||
|
new QualityModel(Quality.SDTV),
|
||||||
|
new List<CustomFormat>())
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ using NzbDrone.Core.CustomFormats;
|
||||||
using NzbDrone.Core.Download.TrackedDownloads;
|
using NzbDrone.Core.Download.TrackedDownloads;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
using NzbDrone.Core.Parser.Model;
|
using NzbDrone.Core.Parser.Model;
|
||||||
using NzbDrone.Core.Profiles.Releases;
|
|
||||||
using NzbDrone.Core.Queue;
|
using NzbDrone.Core.Queue;
|
||||||
|
|
||||||
namespace NzbDrone.Core.DecisionEngine.Specifications
|
namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
|
@ -68,7 +67,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
|
|
||||||
if (!_upgradableSpecification.IsUpgradable(qualityProfile,
|
if (!_upgradableSpecification.IsUpgradable(qualityProfile,
|
||||||
remoteEpisode.ParsedEpisodeInfo.Quality,
|
remoteEpisode.ParsedEpisodeInfo.Quality,
|
||||||
remoteEpisode.CustomFormats,
|
queuedItemCustomFormats,
|
||||||
subject.ParsedEpisodeInfo.Quality,
|
subject.ParsedEpisodeInfo.Quality,
|
||||||
subject.CustomFormats))
|
subject.CustomFormats))
|
||||||
{
|
{
|
||||||
|
@ -79,7 +78,9 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
|
|
||||||
if (!_upgradableSpecification.IsUpgradeAllowed(subject.Series.QualityProfile,
|
if (!_upgradableSpecification.IsUpgradeAllowed(subject.Series.QualityProfile,
|
||||||
remoteEpisode.ParsedEpisodeInfo.Quality,
|
remoteEpisode.ParsedEpisodeInfo.Quality,
|
||||||
subject.ParsedEpisodeInfo.Quality))
|
queuedItemCustomFormats,
|
||||||
|
subject.ParsedEpisodeInfo.Quality,
|
||||||
|
subject.CustomFormats))
|
||||||
{
|
{
|
||||||
return Decision.Reject("Another release is queued and the Quality profile does not allow upgrades");
|
return Decision.Reject("Another release is queued and the Quality profile does not allow upgrades");
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
bool QualityCutoffNotMet(QualityProfile profile, QualityModel currentQuality, QualityModel newQuality = null);
|
bool QualityCutoffNotMet(QualityProfile profile, QualityModel currentQuality, QualityModel newQuality = null);
|
||||||
bool CutoffNotMet(QualityProfile profile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality = null);
|
bool CutoffNotMet(QualityProfile profile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality = null);
|
||||||
bool IsRevisionUpgrade(QualityModel currentQuality, QualityModel newQuality);
|
bool IsRevisionUpgrade(QualityModel currentQuality, QualityModel newQuality);
|
||||||
bool IsUpgradeAllowed(QualityProfile qualityProfile, QualityModel currentQuality, QualityModel newQuality);
|
bool IsUpgradeAllowed(QualityProfile qualityProfile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality, List<CustomFormat> newCustomFormats);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UpgradableSpecification : IUpgradableSpecification
|
public class UpgradableSpecification : IUpgradableSpecification
|
||||||
|
@ -28,13 +28,6 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsPreferredWordUpgradable(int currentScore, int newScore)
|
|
||||||
{
|
|
||||||
_logger.Debug("Comparing preferred word score. Current: {0} New: {1}", currentScore, newScore);
|
|
||||||
|
|
||||||
return newScore > currentScore;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsUpgradable(QualityProfile qualityProfile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality, List<CustomFormat> newCustomFormats)
|
public bool IsUpgradable(QualityProfile qualityProfile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality, List<CustomFormat> newCustomFormats)
|
||||||
{
|
{
|
||||||
var qualityComparer = new QualityModelComparer(qualityProfile);
|
var qualityComparer = new QualityModelComparer(qualityProfile);
|
||||||
|
@ -108,6 +101,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
private bool CustomFormatCutoffNotMet(QualityProfile profile, List<CustomFormat> currentFormats)
|
private bool CustomFormatCutoffNotMet(QualityProfile profile, List<CustomFormat> currentFormats)
|
||||||
{
|
{
|
||||||
var score = profile.CalculateCustomFormatScore(currentFormats);
|
var score = profile.CalculateCustomFormatScore(currentFormats);
|
||||||
|
|
||||||
return score < profile.CutoffFormatScore;
|
return score < profile.CutoffFormatScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,17 +136,18 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsUpgradeAllowed(QualityProfile qualityProfile, QualityModel currentQuality, QualityModel newQuality)
|
public bool IsUpgradeAllowed(QualityProfile qualityProfile, QualityModel currentQuality, List<CustomFormat> currentCustomFormats, QualityModel newQuality, List<CustomFormat> newCustomFormats)
|
||||||
{
|
{
|
||||||
var isQualityUpgrade = new QualityModelComparer(qualityProfile).Compare(newQuality, currentQuality) > 0;
|
var isQualityUpgrade = new QualityModelComparer(qualityProfile).Compare(newQuality, currentQuality) > 0;
|
||||||
|
var isCustomFormatUpgrade = qualityProfile.CalculateCustomFormatScore(newCustomFormats) > qualityProfile.CalculateCustomFormatScore(currentCustomFormats);
|
||||||
|
|
||||||
if (isQualityUpgrade && qualityProfile.UpgradeAllowed)
|
if ((isQualityUpgrade || isCustomFormatUpgrade) && qualityProfile.UpgradeAllowed)
|
||||||
{
|
{
|
||||||
_logger.Debug("At least one profile allows upgrading");
|
_logger.Debug("Quality profile allows upgrading");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isQualityUpgrade && !qualityProfile.UpgradeAllowed)
|
if ((isQualityUpgrade || isCustomFormatUpgrade) && !qualityProfile.UpgradeAllowed)
|
||||||
{
|
{
|
||||||
_logger.Debug("Quality profile does not allow upgrades, skipping");
|
_logger.Debug("Quality profile does not allow upgrades, skipping");
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using NzbDrone.Core.CustomFormats;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
using NzbDrone.Core.Parser.Model;
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
|
||||||
|
@ -8,11 +9,15 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
public class UpgradeAllowedSpecification : IDecisionEngineSpecification
|
public class UpgradeAllowedSpecification : IDecisionEngineSpecification
|
||||||
{
|
{
|
||||||
private readonly UpgradableSpecification _upgradableSpecification;
|
private readonly UpgradableSpecification _upgradableSpecification;
|
||||||
|
private readonly ICustomFormatCalculationService _formatService;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
public UpgradeAllowedSpecification(UpgradableSpecification upgradableSpecification, Logger logger)
|
public UpgradeAllowedSpecification(UpgradableSpecification upgradableSpecification,
|
||||||
|
ICustomFormatCalculationService formatService,
|
||||||
|
Logger logger)
|
||||||
{
|
{
|
||||||
_upgradableSpecification = upgradableSpecification;
|
_upgradableSpecification = upgradableSpecification;
|
||||||
|
_formatService = formatService;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,11 +36,15 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fileCustomFormats = _formatService.ParseCustomFormat(file, subject.Series);
|
||||||
|
|
||||||
_logger.Debug("Comparing file quality with report. Existing file is {0}", file.Quality);
|
_logger.Debug("Comparing file quality with report. Existing file is {0}", file.Quality);
|
||||||
|
|
||||||
if (!_upgradableSpecification.IsUpgradeAllowed(qualityProfile,
|
if (!_upgradableSpecification.IsUpgradeAllowed(qualityProfile,
|
||||||
file.Quality,
|
file.Quality,
|
||||||
subject.ParsedEpisodeInfo.Quality))
|
fileCustomFormats,
|
||||||
|
subject.ParsedEpisodeInfo.Quality,
|
||||||
|
subject.CustomFormats))
|
||||||
{
|
{
|
||||||
_logger.Debug("Upgrading is not allowed by the quality profile");
|
_logger.Debug("Upgrading is not allowed by the quality profile");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue