extend full-text search
This commit is contained in:
parent
004e4bdf98
commit
4ff3af61b3
|
|
@ -33,8 +33,14 @@ class AccountBackOfficeFilter(filters.FilterSet):
|
|||
return queryset
|
||||
|
||||
def search_text(self, queryset, name, value):
|
||||
queryset = queryset.annotate_vector()
|
||||
if value not in EMPTY_VALUES:
|
||||
return queryset.search_text(value)
|
||||
# search by exact value
|
||||
filtered_qs = queryset.filter(vector=value)
|
||||
if not filtered_qs.exists():
|
||||
# if filtered qs is None find something
|
||||
filtered_qs = queryset.filter(vector__icontains=value)
|
||||
return filtered_qs
|
||||
return queryset
|
||||
|
||||
def by_role_country_code(self, queryset, name, value):
|
||||
|
|
|
|||
|
|
@ -144,9 +144,9 @@ class UserQuerySet(models.QuerySet):
|
|||
role = Role.objects.filter(role=Role.ESTABLISHMENT_MANAGER).first()
|
||||
return self.by_role(role).filter(userrole__establishment=establishment)
|
||||
|
||||
def annotate_search_text(self):
|
||||
def annotate_vector(self):
|
||||
"""Full-text search"""
|
||||
return self.annotate(search_text=SearchVector(
|
||||
return self.annotate(vector=SearchVector(
|
||||
'username',
|
||||
'first_name',
|
||||
'last_name',
|
||||
|
|
@ -154,10 +154,6 @@ class UserQuerySet(models.QuerySet):
|
|||
'phone',
|
||||
))
|
||||
|
||||
def search_text(self, value: str):
|
||||
"""Filter by annotated search vector."""
|
||||
return self.annotate_search_text().filter(search_text=value)
|
||||
|
||||
def by_role_country_code(self, country_code: str):
|
||||
"""Filter by role country code."""
|
||||
return self.filter(userrole__role__country__code=country_code).distinct()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user