0001-api-sort-users-by-dist-when-q-parameter-is-used-5053.patch
src/authentic2/api_views.py | ||
---|---|---|
66 | 66 |
from .models import Attribute, PasswordReset, Service |
67 | 67 |
from .a2_rbac.utils import get_default_ou |
68 | 68 |
from .journal_event_types import UserLogin, UserRegistration |
69 |
from .utils.lookups import Unaccent |
|
69 | 70 | |
70 | 71 | |
71 | 72 |
# Retro-compatibility with older Django versions |
... | ... | |
384 | 385 |
required=False, default=get_default_ou) |
385 | 386 |
date_joined = serializers.DateTimeField(read_only=True) |
386 | 387 |
last_login = serializers.DateTimeField(read_only=True) |
388 |
dist = serializers.FloatField(read_only=True) |
|
387 | 389 |
send_registration_email = serializers.BooleanField(write_only=True, required=False, |
388 | 390 |
default=False) |
389 | 391 |
send_registration_email_next_url = serializers.URLField(write_only=True, required=False) |
... | ... | |
747 | 749 |
# https://django-filter.readthedocs.io/en/master/guide/migration.html |
748 | 750 |
filter_class = UsersFilter |
749 | 751 |
filterset_class = UsersFilter |
750 |
filter_backends = api_settings.DEFAULT_FILTER_BACKENDS + [FreeTextSearchFilter]
|
|
752 |
filter_backends = [FreeTextSearchFilter] + api_settings.DEFAULT_FILTER_BACKENDS
|
|
751 | 753 |
pagination_class = pagination.CursorPagination |
752 | 754 |
ordering = ['modified', 'id'] |
753 | 755 | |
756 |
@property |
|
757 |
def ordering(self): |
|
758 |
if 'q' in self.request.GET: |
|
759 |
return ['dist', Unaccent('last_name'), Unaccent('first_name')] |
|
760 |
return None |
|
761 | ||
754 | 762 |
def get_queryset(self): |
755 | 763 |
User = get_user_model() |
756 | 764 |
qs = User.objects.filter(deleted__isnull=True) |
src/authentic2/custom_user/managers.py | ||
---|---|---|
89 | 89 |
).values_list('id', flat=True)) |
90 | 90 |
if extra_user_ids: |
91 | 91 |
qs = qs | self.filter(id__in=extra_user_ids) |
92 |
qs = qs.order_by('dist', 'last_name', 'first_name')
|
|
92 |
qs = qs.order_by('dist', Unaccent('last_name'), Unaccent('first_name'))
|
|
93 | 93 |
return qs |
94 | 94 | |
95 | 95 |
def find_duplicates(self, first_name=None, last_name=None, fullname=None, birthdate=None, limit=5, threshold=None): |
96 |
- |