1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-10 11:10:40 +02:00

New: Except language option for Language Custom Formats

Closes #7120
This commit is contained in:
Mark McDowall 2024-09-02 13:26:35 -07:00 committed by GitHub
parent 278c7891a3
commit 1584311914
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 55 additions and 0 deletions

View File

@ -42,6 +42,26 @@ public void should_match_one_language()
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]
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();
}
[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();
}
}
}

View File

@ -67,5 +67,15 @@ public void should_match_negated_different_language()
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();
}
}
}

View File

@ -30,6 +30,9 @@ public class LanguageSpecification : CustomFormatSpecificationBase
[FieldDefinition(1, Label = "CustomFormatsSpecificationLanguage", Type = FieldType.Select, SelectOptions = typeof(LanguageFieldConverter))]
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)
{
if (Negate)
@ -46,6 +49,11 @@ protected override bool IsSatisfiedByWithoutNegate(CustomFormatInput input)
? input.Series.OriginalLanguage
: (Language)Value;
if (ExceptLanguage)
{
return input.Languages?.Any(l => l != comparedLanguage) ?? false;
}
return input.Languages?.Contains(comparedLanguage) ?? false;
}
@ -55,6 +63,11 @@ private bool IsSatisfiedByWithNegate(CustomFormatInput input)
? input.Series.OriginalLanguage
: (Language)Value;
if (ExceptLanguage)
{
return !input.Languages?.Any(l => l != comparedLanguage) ?? false;
}
return !input.Languages?.Contains(comparedLanguage) ?? false;
}

View File

@ -290,6 +290,8 @@
"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.",
"CustomFormatsSpecificationFlag": "Flag",
"CustomFormatsSpecificationLanguage": "Language",
"CustomFormatsSpecificationExceptLanguage": "Except Language",
"CustomFormatsSpecificationExceptLanguageHelpText": "Matches if any language other than the selected language is present",
"CustomFormatsSpecificationMaximumSize": "Maximum Size",
"CustomFormatsSpecificationMaximumSizeHelpText": "Release must be less than or equal to this size",
"CustomFormatsSpecificationMinimumSize": "Minimum Size",