def _filter_text()

in treeherder/webapp/api/performance_data.py [0:0]


    def _filter_text(self, queryset, name, value):
        sep = Value(" ")
        words = value.split(" ")

        contains_all_words = [
            Q(full_name__contains=word) | Q(related_full_name__contains=word) for word in words
        ]

        # Django's distinct(*fields) isn't supported for MySQL
        # https://code.djangoproject.com/ticket/17974
        filtered_summaries = (
            queryset.annotate(
                full_name=Concat(
                    "alerts__series_signature__suite",
                    sep,
                    "alerts__series_signature__test",
                    sep,
                    "alerts__series_signature__platform__platform",
                    sep,
                    "alerts__series_signature__extra_options",
                    sep,
                    "bug_number",
                    sep,
                    "push__revision",
                    output_field=CharField(),
                ),
                related_full_name=Concat(
                    "related_alerts__series_signature__suite",
                    sep,
                    "related_alerts__series_signature__test",
                    sep,
                    "related_alerts__series_signature__platform__platform",
                    sep,
                    "related_alerts__series_signature__extra_options",
                    sep,
                    "bug_number",
                    sep,
                    "push__revision",
                    output_field=CharField(),
                ),
            )
            .filter(*contains_all_words)
            .values("id")
            .distinct()
        )

        return queryset.filter(id__in=Subquery(filtered_summaries))