Generic autocompletion view
This commit is contained in:
parent
30783d677b
commit
e7517195cd
20 changed files with 272 additions and 309 deletions
|
@ -1,5 +1,7 @@
|
|||
from django.contrib.auth import get_user_model
|
||||
from django.db.models import Q
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from shared import autocomplete
|
||||
|
||||
|
@ -14,12 +16,16 @@ class KfetAccountSearch(autocomplete.ModelSearch):
|
|||
"last_name",
|
||||
"profile__account_kfet__trigramme",
|
||||
]
|
||||
verbose_name = _("Comptes existants")
|
||||
|
||||
def get_queryset_filter(self, *args, **kwargs):
|
||||
qset_filter = super().get_queryset_filter(*args, **kwargs)
|
||||
qset_filter &= Q(profile__account_kfet__isnull=False)
|
||||
return qset_filter
|
||||
|
||||
def result_verbose_name(self, user):
|
||||
return "{} ({})".format(user, user.profile.account_kfet.trigramme)
|
||||
|
||||
def result_uuid(self, user):
|
||||
return user.username
|
||||
|
||||
|
@ -27,6 +33,7 @@ class KfetAccountSearch(autocomplete.ModelSearch):
|
|||
class COFMemberSearch(autocomplete.ModelSearch):
|
||||
model = User
|
||||
search_fields = ["username", "first_name", "last_name"]
|
||||
verbose_name = _("Membres du COF")
|
||||
|
||||
def get_queryset_filter(self, *args, **kwargs):
|
||||
qset_filter = super().get_queryset_filter(*args, **kwargs)
|
||||
|
@ -36,10 +43,14 @@ class COFMemberSearch(autocomplete.ModelSearch):
|
|||
def result_uuid(self, user):
|
||||
return user.username
|
||||
|
||||
def result_link(self, user):
|
||||
return reverse("kfet.account.create.fromuser", args=(user.username,))
|
||||
|
||||
|
||||
class OthersSearch(autocomplete.ModelSearch):
|
||||
model = User
|
||||
search_fields = ["username", "first_name", "last_name"]
|
||||
verbose_name = _("Non-membres du COF")
|
||||
|
||||
def get_queryset_filter(self, *args, **kwargs):
|
||||
qset_filter = super().get_queryset_filter(*args, **kwargs)
|
||||
|
@ -49,11 +60,25 @@ class OthersSearch(autocomplete.ModelSearch):
|
|||
def result_uuid(self, user):
|
||||
return user.username
|
||||
|
||||
def result_link(self, user):
|
||||
return reverse("kfet.account.create.fromuser", args=(user.username,))
|
||||
|
||||
|
||||
class KfetLDAPSearch(autocomplete.LDAPSearch):
|
||||
def result_link(self, clipper):
|
||||
return reverse(
|
||||
"kfet.account.create.fromclipper", args=(clipper.clipper, clipper.fullname)
|
||||
)
|
||||
|
||||
|
||||
class KfetAutocomplete(autocomplete.Compose):
|
||||
search_units = [
|
||||
("kfet", KfetAccountSearch()),
|
||||
("users_cof", COFMemberSearch()),
|
||||
("users_notcof", OthersSearch()),
|
||||
("clippers", autocomplete.LDAPSearch()),
|
||||
("clippers", KfetLDAPSearch()),
|
||||
]
|
||||
|
||||
|
||||
class KfetAccountOnlyAutocomplete(autocomplete.Compose):
|
||||
search_units = [("kfet", KfetAccountSearch())]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue