Merge branch 'thubrecht/recherche' into 'master'

Fixe la recherche dans l'annuaire

See merge request klub-dev-ens/annuaire!27
This commit is contained in:
Tom Hubrecht 2023-01-30 11:29:11 +01:00
commit 213ec87059
6 changed files with 28 additions and 18 deletions

View file

@ -48,7 +48,7 @@ a:focus,
float: right; float: right;
width: 320px; width: 320px;
grid-template-columns: auto; grid-template-columns: auto;
grid-template-rows: auto auto auto auto 120px; grid-template-rows: auto auto auto auto auto 15px;
grid-template-areas: "title" "language" "search" "menu" "account"; grid-template-areas: "title" "language" "search" "menu" "account";
} }
#menu #hamburger { #menu #hamburger {
@ -171,7 +171,7 @@ a:focus,
#account-area { #account-area {
grid-area: account; grid-area: account;
display: block; display: block;
padding: 20px; padding-top: 20px;
text-align: center; text-align: center;
} }
#account-area .clipper { #account-area .clipper {
@ -229,7 +229,7 @@ a:focus,
.content { .content {
max-width: 780px; max-width: 780px;
width: 50vw; width: 70vw;
margin: 20px; margin: 20px;
} }
.content h2 { .content h2 {
@ -365,7 +365,7 @@ a:focus,
} }
#content-edit-profile form { #content-edit-profile form {
width: min(400px, 100%); width: max(600px, 80%);
margin: 0 auto; margin: 0 auto;
} }
#content-edit-profile form .form-entry { #content-edit-profile form .form-entry {
@ -471,6 +471,7 @@ a:focus,
} }
#content-edit-profile #free-text-edit-form textarea { #content-edit-profile #free-text-edit-form textarea {
width: 100%; width: 100%;
height: 100px;
padding: 5px; padding: 5px;
resize: none; resize: none;
} }

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../scss/_fonts.scss","../scss/_links.scss","../scss/_colors.scss","../scss/_header.scss","../scss/_buttons.scss","../scss/_errors.scss","../scss/_content.scss","../scss/_footer.scss","../scss/_common.scss"],"names":[],"mappings":";AASA;AACA;EACI;EACA;EACA;EACA;;AAKJ;AACA;EACI;EACA;EACA;EACA;;AAKJ;AACA;EACI;EACA;EACA;EACA;;AAUJ;AAUA;AACA;EACI;EACA;EACA;EACA;;ACzDJ;EACI;EACA,OCOQ;;;ADJZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGI,OCEc;;;ACJlB;EACI;EACA;EACA;EAEA;EACA;EACA,qBACI;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIN;EACI;EAGA;EACA;EACA;EACA;;AAIA;EACI;;;AAIR;EACI;EACA;EACA;EACA,QAhDgB;EAiDhB;EACA;;AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI,kBDxEI;;;AC4EZ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EAEA,OD3Fc;;AC8FlB;EACI,OD5FI;EC6FJ;;AAGJ;AAAA;EAEI;EACA;EACA;EACA,ODxGc;;AC2GlB;EACI;;AAGJ;EACI;;;AAKJ;EAEI;EACA;EACA;EACA;EAEA,ODzHI;EC0HJ;;AAGJ;EAEI,OD9HU;;;ACkIlB;EAEI;EAEA;EACA,ODhIa;ECiIb;;AAEA;EAEI;EACA;EACA;EACA;EAEA,ODlJI;ECmJJ;;AAGJ;EAEI,ODvJU;;;AC2JlB;EACI;EACA;EACA;EACA;;AAIA;EACI,aH5GU;;;AIlElB;AAAA;AAAA;EACI;EACA,kBFUqB;EETrB;EACA;EACA,OFSe;EERf;EACA;;;AAGJ;AAAA;AAAA;EACI,kBFE2B;;;AGf/B;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;ACrBR;EACI,OJqBW;;;AIlBf;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAWJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAMJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIA;EACI;;;AAYhB;EACI;EACA;EACA;EACA,qBACI;EAGJ;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA,OJnGU;EIoGV;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;EAEA;EACA,OJpHS;EIqHT;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA,kBJtHe;EIuHf;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA,OJvJF;EIwJE;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACE;;AASlB;EACI;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAMR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA,kBJpLe;EIqLf;;AAEA;EACI;;AAGJ;EACI;EACA,OJ7MC;EI8MD;EACA;EACA;;AAGJ;EACI;;AAGJ;EAGI;EACA;;AAIR;EACI;EACA;EACA;EACA,qBACI;EAEJ;EACA;EACA;;AAEA;EACI;;AAMJ;EACI;EACA;;AAEJ;EAAqB;;AACrB;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;AAAA;EAEI;;AAGJ;EACI;;AAUA;EAAqB;;AACrB;EAAqB;;AAGrB;AAAA;EAEI;;AAIR;EAEI;;AAIR;EACI;;AAGJ;EACI;;AAIA;EACI;EACA;;AAIR;EACI;EACA;;AAIA;EACI;;AAGJ;EACI;EACA;EACA;;AAMR;EACI;EACA;EACA;;AAKJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA,OJ1WC;EI2WD;;AASJ;EACI;;;AC5XhB;EACI;EACA;EACA,OLGkB;EKFlB;;AAEA;EACI;EACA;;;ACNR;EACI;;;AAMJ;EACI;;;AAGJ;EACI;EACA,qBACI;EAEJ,kBNnBc;EMoBd,ONdQ;EMeR,aR6CY;EQ5CZ;;;AAGJ;EACI;EACA;EACA,kBN3Be;EM4Bf;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA,kBNvCc;EMwCd;;;AAIJ;EACE;IACE;IACA,qBACI;;;EAIN;IACE;;;EAGF;AAAA;IAEE;IACA;IACA;;;EAGF;AAAA;AAAA;AAAA;IAIE;;;EAKE;IACE;;;EAKN;IACE;;;EAIA;IACE;;;EAIJ;AAAA;IAEE;;;EAGF;IACE;IACA;IACA;IACA,qBACE;;EAMF;IACE;;EAGF;AAAA;IAEE;;;EAIJ;IACE;IACA;IACA","file":"annuaire.css"} {"version":3,"sourceRoot":"","sources":["../scss/_fonts.scss","../scss/_links.scss","../scss/_colors.scss","../scss/_header.scss","../scss/_buttons.scss","../scss/_errors.scss","../scss/_content.scss","../scss/_footer.scss","../scss/_common.scss"],"names":[],"mappings":";AASA;AACA;EACI;EACA;EACA;EACA;;AAKJ;AACA;EACI;EACA;EACA;EACA;;AAKJ;AACA;EACI;EACA;EACA;EACA;;AAUJ;AAUA;AACA;EACI;EACA;EACA;EACA;;ACzDJ;EACI;EACA,OCOQ;;;ADJZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGI,OCEc;;;ACJlB;EACI;EACA;EACA;EAEA;EACA;EACA,qBACI;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIN;EACI;EAGA;EACA;EACA;EACA;;AAIA;EACI;;;AAIR;EACI;EACA;EACA;EACA,QAhDgB;EAiDhB;EACA;;AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI,kBDzEI;;;AC6EZ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EAEA,OD5Fc;;AC+FlB;EACI,OD7FI;EC8FJ;;AAGJ;AAAA;EAEI;EACA;EACA;EACA,ODzGc;;AC4GlB;EACI;;AAGJ;EACI;;;AAKJ;EAEI;EACA;EACA;EACA;EAEA,OD1HI;EC2HJ;;AAGJ;EAEI,OD/HU;;;ACmIlB;EAEI;EAEA;EACA,ODjIa;ECkIb;;AAEA;EAEI;EACA;EACA;EACA;EAEA,ODnJI;ECoJJ;;AAGJ;EAEI,ODxJU;;;AC4JlB;EACI;EACA;EACA;EACA;;AAIA;EACI,aH7GU;;;AIlElB;AAAA;AAAA;EACI;EACA,kBFUqB;EETrB;EACA;EACA,OFSe;EERf;EACA;EACA;;;AAGJ;AAAA;AAAA;EACI,kBFC2B;;;AGf/B;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;ACrBR;EACI,OJqBW;;;AIlBf;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAWJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAMJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIA;EACI;;;AAYhB;EACI;EACA;EACA;EACA,qBACI;EAGJ;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA,OJnGU;EIoGV;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAGJ;EACI;EAEA;EACA,OJpHS;EIqHT;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA,kBJtHe;EIuHf;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA,OJvJF;EIwJE;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACE;;AASlB;EACI;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAMR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA,kBJpLe;EIqLf;;AAEA;EACI;;AAGJ;EACI;EACA,OJ7MC;EI8MD;EACA;EACA;;AAGJ;EACI;;AAGJ;EAGI;EACA;;AAIR;EACI;EACA;EACA;EACA,qBACI;EAEJ;EACA;EACA;;AAEA;EACI;;AAMJ;EACI;EACA;;AAEJ;EAAqB;;AACrB;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;AAAA;EAEI;;AAGJ;EACI;;AAUA;EAAqB;;AACrB;EAAqB;;AAGrB;AAAA;EAEI;;AAIR;EAEI;;AAIR;EACI;;AAGJ;EACI;;AAIA;EACI;EACA;;AAIR;EACI;EACA;;AAIA;EACI;;AAGJ;EACI;EACA;EACA;;AAMR;EACI;EACA;EACA;EACA;;AAKJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA,OJ3WC;EI4WD;;AASJ;EACI;;;AC7XhB;EACI;EACA;EACA,OLGkB;EKFlB;;AAEA;EACI;EACA;;;ACNR;EACI;;;AAMJ;EACI;;;AAGJ;EACI;EACA,qBACI;EAEJ,kBNnBc;EMoBd,ONdQ;EMeR,aR6CY;EQ5CZ;EACA;;;AAGJ;EACI;EACA;EACA,kBN5Be;EM6Bf;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA,kBNxCc;EMyCd;;;AAIJ;EACE;IACE;IACA,qBACI;;;EAIN;IACE;;;EAGF;AAAA;IAEE;IACA;IACA;;;EAGF;AAAA;AAAA;AAAA;IAIE;;;EAKE;IACE;;;EAKN;IACE;;;EAIA;IACE;;;EAIJ;AAAA;IAEE;;;EAGF;IACE;IACA;IACA;IACA,qBACE;;EAMF;IACE;;EAGF;AAAA;IAEE;;;EAIJ;IACE;IACA;IACA","file":"annuaire.css"}

View file

@ -8,7 +8,7 @@
.content { .content {
max-width: 780px; max-width: 780px;
width: 50vw; width: 70vw;
margin: 20px; margin: 20px;
h2 { h2 {
@ -195,7 +195,7 @@
#content-edit-profile { #content-edit-profile {
form { form {
width: min(400px, 100%); width: max(600px, 80%);
margin: 0 auto; margin: 0 auto;
.form-entry { .form-entry {

View file

@ -12,7 +12,7 @@ $account-area-height: 120px;
width: 320px; width: 320px;
// height: 100%; // height: 100%;
grid-template-columns: auto; grid-template-columns: auto;
grid-template-rows: auto auto auto auto $account-area-height; grid-template-rows: auto auto auto auto auto 15px;
grid-template-areas: grid-template-areas:
"title" "title"
"language" "language"
@ -169,7 +169,7 @@ $account-area-height: 120px;
#account-area { #account-area {
grid-area: account; grid-area: account;
display: block; display: block;
padding: 20px; padding-top: 20px;
text-align: center; text-align: center;
@extend %menu-link; @extend %menu-link;

View file

@ -1,10 +1,11 @@
from django.urls import path from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path("", views.HomeView.as_view(), name="home"), path("", views.HomeView.as_view(), name="home"),
path("fiche/edit", views.EditView.as_view(), name="fiche_modif"), path("fiche/_edit", views.EditView.as_view(), name="fiche_modif"),
path("fiche/reset", views.ResetView.as_view(), name="fiche_reset"), path("fiche/_reset", views.ResetView.as_view(), name="fiche_reset"),
path("fiche/<user>", views.FicheView.as_view(), name="fiche"), path("fiche/<slug:slug>", views.FicheView.as_view(), name="fiche"),
path("birthday", views.BirthdayView.as_view(), name="birthday"), path("birthday", views.BirthdayView.as_view(), name="birthday"),
] ]

View file

@ -4,7 +4,6 @@ from django.contrib.auth.decorators import login_required
from django.core.mail import send_mail from django.core.mail import send_mail
from django.db.models import DateTimeField, Q, Value from django.db.models import DateTimeField, Q, Value
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils import timezone from django.utils import timezone
@ -29,9 +28,7 @@ from fiches.utils import get_ldap_infos
class FicheView(DetailView): class FicheView(DetailView):
model = Profile model = Profile
template_name = "fiches/fiche.html" template_name = "fiches/fiche.html"
slug_field = "user__username"
def get_object(self):
return get_object_or_404(Profile, user__username=self.kwargs.get("user"))
@method_decorator(login_required, name="dispatch") @method_decorator(login_required, name="dispatch")
@ -131,10 +128,21 @@ class HomeView(FormView):
form_class = SearchForm form_class = SearchForm
def form_valid(self, form): def form_valid(self, form):
name = form.cleaned_data["name"]
promotion = form.cleaned_data["year"]
depts = form.cleaned_data["department"]
result = Profile.objects.filter( result = Profile.objects.filter(
Q(full_name__icontains=form.cleaned_data["name"]) Q(full_name__icontains=name)
| Q(nickname__icontains=form.cleaned_data["name"]) | Q(nickname__icontains=name)
| Q(user__username__icontains=name)
) )
if depts:
result = result.filter(department__in=depts)
if promotion:
result = result.filter(promotion=promotion)
return self.render_to_response(self.get_context_data(result=result)) return self.render_to_response(self.get_context_data(result=result))