Merge branch '4-page-des-anniversaires' into 'master'

Resolve "Page des anniversaires"

Closes #4

See merge request klub-dev-ens/annuaire!3
This commit is contained in:
Martin Pepin 2020-02-08 14:56:33 +01:00
commit 49a5675bd7
7 changed files with 54 additions and 36 deletions

View file

@ -17,12 +17,13 @@ from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from django.conf.urls.static import static from django.conf.urls.static import static
from fiches.views import home from fiches.views import home, birthday
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('fiche/', include('fiches.urls')), path('fiche/', include('fiches.urls')),
path('', home, name='home') path('', home, name='home'),
path('birthday', birthday, name='birthday')
] ]
if settings.DEBUG: if settings.DEBUG:

View file

@ -22,9 +22,15 @@ class ProfileForm(forms.ModelForm):
class SearchForm(forms.Form): class SearchForm(forms.Form):
name = forms.CharField(label='Nom/Surnom', max_length=1023, required=False) name = forms.CharField(label='Nom/Surnom', max_length=1023, required=False)
year = forms.IntegerField(label='Promotion', required=False) year = forms.IntegerField(label='Promotion', required=False)
department = forms.ModelMultipleChoiceField(queryset=Department.objects.all(), required=False) department = forms.ModelMultipleChoiceField(
queryset=Department.objects.all(), required=False
)
def clean(self): def clean(self):
cleaned_data = super().clean() cleaned_data = super().clean()
if (not cleaned_data['name'] and not cleaned_data['year'] and not cleaned_data['department']): if (
not cleaned_data['name']
and not cleaned_data['year']
and not cleaned_data['department']
):
raise forms.ValidationError(('Tous les champs sont vides'), code='invalid') raise forms.ValidationError(('Tous les champs sont vides'), code='invalid')

View file

@ -28,7 +28,7 @@
<a href='{% url "home" %}'> Accueil </a> <a href='{% url "home" %}'> Accueil </a>
<a href='{% url "fiche_modif" %}'> Modifier sa fiche d'annuaire </a> <a href='{% url "fiche_modif" %}'> Modifier sa fiche d'annuaire </a>
<a href='{% url "fiche" request.user.profile.id %}'> Consulter sa fiche d'annuaire </a> <a href='{% url "fiche" request.user.profile.id %}'> Consulter sa fiche d'annuaire </a>
<a href=''> Anniversaires à venir </a> <a href='{% url "birthday" %}'> Anniversaires à venir </a>
</nav> </nav>
</div> </div>

View file

@ -0,0 +1,15 @@
{% extends "fiches/base.html" %}
{% block content %}
<h2> Anniversaires </h2>
<div>
<ul>
{% for profile in result %}
<li><a href="{% url 'fiche' profile.id %}">{{profile.full_name}}
</a> ({{ profile.department.all|join:", " }} {{profile.promotion}}) : {{ profile.birth_date|date:"j F" }} </li>
{% endfor %}
</ul>
</div>
{% endblock %}

View file

@ -1,22 +1,20 @@
{% extends "fiches/base.html" %} {% extends "fiches/base.html" %}
{% block content %} {% block content %}
<h2> Chercher quelqu'un.e dans l'annuaire </h2> <h2> Chercher quelqu'un·e dans l'annuaire </h2>
<form method='post' action=""> <form method='post' action="">
{% csrf_token %} {% csrf_token %}
{{ form.as_p }} {{ form.as_p }}
<input type="submit" value="Recherche"> <input type="submit" value="Recherche">
</form> </form>
<div> <div>
<ul> <ul>
{% for profile in result %} {% for profile in result %}
<li><a href="{% url 'fiche' profile.id %}">{{profile.full_name}} {{profile.departement}} <li><a href="{% url 'fiche' profile.id %}">{{profile.full_name}} ({{ profile.department.all|join:", " }} {{profile.promotion}})
</a> </li> </a> </li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -1,21 +0,0 @@
{% extends "fiches/base.html" %}
{% block content %}
<h2> Chercher quelqu'un.e dans l'annuaire </h2>
<form method='post' action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Recherche">
</form>
<div>
<ul>
{% for profile in result %}
<li><a href="{% url 'fiche' profile.id %}">{{profile.full_name}} {{profile.departement}}
</a> </li>
{% endfor %}
</ul>
</div>
{% endblock %}

View file

@ -5,6 +5,8 @@ from fiches.models import Profile
from fiches.forms import ProfileForm, SearchForm from fiches.forms import ProfileForm, SearchForm
from django.urls import reverse from django.urls import reverse
from django.db.models import Q from django.db.models import Q
from django.utils import timezone
from datetime import timedelta
@login_required @login_required
@ -23,19 +25,36 @@ def fiche_modif(request):
return redirect(reverse('fiche', args=(profile.id,))) return redirect(reverse('fiche', args=(profile.id,)))
else: else:
form = ProfileForm(instance=profile) form = ProfileForm(instance=profile)
return render(request, 'fiches/fiches_modif.html', {"form": form}) return render(request, 'fiches/fiches_modif.html', {"form": form})
@login_required @login_required
def home(request): def home(request):
if request.method == 'POST': if request.method == 'POST':
form = SearchForm(request.POST) form = SearchForm(request.POST)
if form.is_valid(): if form.is_valid():
result = Profile.objects.filter(Q(full_name__icontains=form.cleaned_data['name']) | Q(nickname__icontains=form.cleaned_data['name'])) result = Profile.objects.filter(
return render(request,'fiches/home.html',{"form":form, "result":result}) Q(full_name__icontains=form.cleaned_data['name'])
| Q(nickname__icontains=form.cleaned_data['name'])
)
return render(
request, 'fiches/home.html', {"form": form, "result": result}
)
else: else:
form = SearchForm() form = SearchForm()
return render(request,'fiches/home.html',{"form":form}) return render(request, 'fiches/home.html', {"form": form})
@login_required
def birthday(request):
today = timezone.now()
result = list(Profile.objects.filter(
birth_date__day=today.day, birth_date__month=today.month
))
for i in range(1, 7):
today = today + timedelta(days=1)
result += list(Profile.objects.filter(
birth_date__day=today.day, birth_date__month=today.month)
)
return render(request, 'fiches/birthday.html', {"result": result})