mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-20 01:42:35 +01:00
New: Except language option for Language Custom Formats
(cherry picked from commit 1584311914eed697fdd0f143951f4adfe3403351) Closes #10388
This commit is contained in:
parent
a3faa9ed5f
commit
593b943cb0
@ -42,6 +42,26 @@ public void should_match_one_language()
|
|||||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_match_language_if_other_languages_are_present()
|
||||||
|
{
|
||||||
|
Subject.Value = Language.French.Id;
|
||||||
|
Subject.ExceptLanguage = true;
|
||||||
|
Subject.Negate = false;
|
||||||
|
|
||||||
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_match_language_if_not_original_language_is_present()
|
||||||
|
{
|
||||||
|
Subject.Value = Language.Original.Id;
|
||||||
|
Subject.ExceptLanguage = true;
|
||||||
|
Subject.Negate = false;
|
||||||
|
|
||||||
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_match_different_language()
|
public void should_not_match_different_language()
|
||||||
{
|
{
|
||||||
@ -68,5 +88,15 @@ public void should_not_match_negated_when_all_languages_do_not_match()
|
|||||||
|
|
||||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_match_negate_language_if_other_languages_are_present()
|
||||||
|
{
|
||||||
|
Subject.Value = Language.Spanish.Id;
|
||||||
|
Subject.ExceptLanguage = true;
|
||||||
|
Subject.Negate = true;
|
||||||
|
|
||||||
|
Subject.IsSatisfiedBy(_input).Should().BeFalse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,5 +67,15 @@ public void should_match_negated_different_language()
|
|||||||
|
|
||||||
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_match_negated_except_language_if_language_is_only_present_language()
|
||||||
|
{
|
||||||
|
Subject.Value = Language.French.Id;
|
||||||
|
Subject.ExceptLanguage = true;
|
||||||
|
Subject.Negate = true;
|
||||||
|
|
||||||
|
Subject.IsSatisfiedBy(_input).Should().BeTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,9 @@ public class LanguageSpecification : CustomFormatSpecificationBase
|
|||||||
[FieldDefinition(1, Label = "Language", Type = FieldType.Select, SelectOptions = typeof(LanguageFieldConverter))]
|
[FieldDefinition(1, Label = "Language", Type = FieldType.Select, SelectOptions = typeof(LanguageFieldConverter))]
|
||||||
public int Value { get; set; }
|
public int Value { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(1, Label = "CustomFormatsSpecificationExceptLanguage", HelpText = "CustomFormatsSpecificationExceptLanguageHelpText", Type = FieldType.Checkbox)]
|
||||||
|
public bool ExceptLanguage { get; set; }
|
||||||
|
|
||||||
public override bool IsSatisfiedBy(CustomFormatInput input)
|
public override bool IsSatisfiedBy(CustomFormatInput input)
|
||||||
{
|
{
|
||||||
if (Negate)
|
if (Negate)
|
||||||
@ -46,7 +49,12 @@ protected override bool IsSatisfiedByWithoutNegate(CustomFormatInput input)
|
|||||||
? input.Movie.MovieMetadata.Value.OriginalLanguage
|
? input.Movie.MovieMetadata.Value.OriginalLanguage
|
||||||
: (Language)Value;
|
: (Language)Value;
|
||||||
|
|
||||||
return input?.Languages?.Contains(comparedLanguage) ?? false;
|
if (ExceptLanguage)
|
||||||
|
{
|
||||||
|
return input.Languages?.Any(l => l != comparedLanguage) ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return input.Languages?.Contains(comparedLanguage) ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSatisfiedByWithNegate(CustomFormatInput input)
|
private bool IsSatisfiedByWithNegate(CustomFormatInput input)
|
||||||
@ -55,6 +63,11 @@ private bool IsSatisfiedByWithNegate(CustomFormatInput input)
|
|||||||
? input.Movie.MovieMetadata.Value.OriginalLanguage
|
? input.Movie.MovieMetadata.Value.OriginalLanguage
|
||||||
: (Language)Value;
|
: (Language)Value;
|
||||||
|
|
||||||
|
if (ExceptLanguage)
|
||||||
|
{
|
||||||
|
return !input.Languages?.Any(l => l != comparedLanguage) ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
return !input.Languages?.Contains(comparedLanguage) ?? false;
|
return !input.Languages?.Contains(comparedLanguage) ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,6 +264,8 @@
|
|||||||
"CustomFormatsSettings": "Custom Formats Settings",
|
"CustomFormatsSettings": "Custom Formats Settings",
|
||||||
"CustomFormatsSettingsSummary": "Custom Formats and Settings",
|
"CustomFormatsSettingsSummary": "Custom Formats and Settings",
|
||||||
"CustomFormatsSettingsTriggerInfo": "A Custom Format will be applied to a release or file when it matches at least one of each of the different condition types chosen.",
|
"CustomFormatsSettingsTriggerInfo": "A Custom Format will be applied to a release or file when it matches at least one of each of the different condition types chosen.",
|
||||||
|
"CustomFormatsSpecificationExceptLanguage": "Except Language",
|
||||||
|
"CustomFormatsSpecificationExceptLanguageHelpText": "Matches if any language other than the selected language is present",
|
||||||
"CustomFormatsSpecificationFlag": "Flag",
|
"CustomFormatsSpecificationFlag": "Flag",
|
||||||
"CustomFormatsSpecificationRegularExpression": "Regular Expression",
|
"CustomFormatsSpecificationRegularExpression": "Regular Expression",
|
||||||
"CustomFormatsSpecificationRegularExpressionHelpText": "Custom Format RegEx is Case Insensitive",
|
"CustomFormatsSpecificationRegularExpressionHelpText": "Custom Format RegEx is Case Insensitive",
|
||||||
|
Loading…
Reference in New Issue
Block a user