2019-12-11 22:00:10 +01:00
|
|
|
from django.contrib.auth import get_user_model
|
2018-10-06 12:35:49 +02:00
|
|
|
from django.db.models import Q
|
|
|
|
from django.http import Http404
|
2019-12-11 22:00:10 +01:00
|
|
|
from django.views.generic import TemplateView
|
2016-12-25 02:02:22 +01:00
|
|
|
|
2016-09-24 19:40:16 +02:00
|
|
|
from gestioncof.decorators import buro_required
|
2019-12-11 22:00:10 +01:00
|
|
|
from shared.views import autocomplete
|
|
|
|
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
|
|
|
|
|
|
class COFMemberSearch(autocomplete.ModelSearch):
|
|
|
|
model = User
|
|
|
|
search_fields = ["username", "first_name", "last_name"]
|
|
|
|
|
|
|
|
def get_queryset_filter(self, *args, **kwargs):
|
|
|
|
qset_filter = super().get_queryset_filter(*args, **kwargs)
|
|
|
|
qset_filter &= Q(profile__is_cof=True)
|
|
|
|
return qset_filter
|
|
|
|
|
2020-07-04 13:06:24 +02:00
|
|
|
def result_uuid(self, user):
|
|
|
|
return user.username
|
|
|
|
|
2019-12-11 22:00:10 +01:00
|
|
|
|
|
|
|
class COFOthersSearch(autocomplete.ModelSearch):
|
|
|
|
model = User
|
|
|
|
search_fields = ["username", "first_name", "last_name"]
|
|
|
|
|
|
|
|
def get_queryset_filter(self, *args, **kwargs):
|
|
|
|
qset_filter = super().get_queryset_filter(*args, **kwargs)
|
|
|
|
qset_filter &= Q(profile__is_cof=False)
|
|
|
|
return qset_filter
|
|
|
|
|
2020-07-04 13:06:24 +02:00
|
|
|
def result_uuid(self, user):
|
|
|
|
return user.username
|
|
|
|
|
2019-12-11 22:00:10 +01:00
|
|
|
|
|
|
|
class COFSearch(autocomplete.Compose):
|
|
|
|
search_units = [
|
2020-07-04 13:06:24 +02:00
|
|
|
("members", COFMemberSearch()),
|
|
|
|
("others", COFOthersSearch()),
|
|
|
|
("clippers", autocomplete.LDAPSearch()),
|
2019-12-11 22:00:10 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
cof_search = COFSearch()
|
|
|
|
|
|
|
|
|
|
|
|
class AutocompleteView(TemplateView):
|
|
|
|
template_name = "gestioncof/search_results.html"
|
|
|
|
|
|
|
|
def get_context_data(self, *args, **kwargs):
|
|
|
|
ctx = super().get_context_data(*args, **kwargs)
|
|
|
|
if "q" not in self.request.GET:
|
|
|
|
raise Http404
|
|
|
|
q = self.request.GET["q"]
|
|
|
|
ctx["q"] = q
|
|
|
|
ctx.update(cof_search.search(q.split()))
|
|
|
|
return ctx
|
|
|
|
|
|
|
|
|
|
|
|
autocomplete = buro_required(AutocompleteView.as_view())
|