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))