diff --git a/weblate/trans/forms.py b/weblate/trans/forms.py index 7c391e2aa1a5..9984d5ee4a0a 100644 --- a/weblate/trans/forms.py +++ b/weblate/trans/forms.py @@ -2947,6 +2947,7 @@ class Meta: "enable_suggestions", "suggestion_voting", "suggestion_autoaccept", + "string_filter", ] def __init__( @@ -2992,6 +2993,7 @@ def __init__( Field("enable_suggestions"), Field("suggestion_voting"), Field("suggestion_autoaccept"), + Field("string_filter"), css_id="workflow-enable-target", ), ) diff --git a/weblate/trans/migrations/0026_workflowsetting_string_filter.py b/weblate/trans/migrations/0026_workflowsetting_string_filter.py new file mode 100644 index 000000000000..f7e5781cff74 --- /dev/null +++ b/weblate/trans/migrations/0026_workflowsetting_string_filter.py @@ -0,0 +1,21 @@ +# Generated by Django 5.0.6 on 2025-01-14 16:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("trans", "0025_alter_announcement_notify"), + ] + + operations = [ + migrations.AddField( + model_name="workflowsetting", + name="string_filter", + field=models.CharField( + blank=True, + help_text="Only include strings matching the filter.", + verbose_name="Filter strings", + ), + ), + ] diff --git a/weblate/trans/models/workflow.py b/weblate/trans/models/workflow.py index 838b1be80e21..517b8d4b10ad 100644 --- a/weblate/trans/models/workflow.py +++ b/weblate/trans/models/workflow.py @@ -49,6 +49,12 @@ class WorkflowSetting(models.Model): validators=[validate_autoaccept], ) + string_filter = models.CharField( + verbose_name=gettext_lazy("Filter strings"), + blank=True, + help_text=gettext_lazy("Only include strings matching the filter."), + ) + def __str__(self) -> str: return f"" diff --git a/weblate/utils/views.py b/weblate/utils/views.py index 44b3cb83eaa6..7a8e32c1ab5b 100644 --- a/weblate/utils/views.py +++ b/weblate/utils/views.py @@ -330,7 +330,10 @@ def parse_path_units( context = {"components": None, "path_object": obj} if isinstance(obj, Translation): - unit_set = obj.unit_set.all() + if obj.workflow_settings and obj.workflow_settings.string_filter: + unit_set = obj.unit_set.search(obj.workflow_settings.string_filter) + else: + unit_set = obj.unit_set.all() context["translation"] = obj context["component"] = obj.component context["project"] = obj.component.project