finer research function

This commit is contained in:
Ju Luiselli 2020-02-08 11:02:39 +01:00
parent cac6bd390b
commit 49fa15eb23
7 changed files with 98 additions and 15 deletions

View file

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

View file

@ -1,5 +1,5 @@
from django import forms
from fiches.models import Profile
from fiches.models import Profile, Department
class ProfileForm(forms.ModelForm):
@ -20,4 +20,11 @@ class ProfileForm(forms.ModelForm):
class SearchForm(forms.Form):
name = forms.CharField(label='search name', max_length=1023)
name = forms.CharField(label='Nom/Surnom', max_length=1023, required=False)
year = forms.IntegerField(label='Promotion', required=False)
department = forms.ModelMultipleChoiceField(queryset=Department.objects.all(), required=False)
def clean(self):
cleaned_data = super().clean()
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')

View file

@ -0,0 +1,47 @@
# Generated by Django 2.2.9 on 2020-01-08 23:06
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('fiches', '0002_auto_20190408_1929'),
]
operations = [
migrations.AlterField(
model_name='department',
name='name',
field=models.CharField(max_length=255, verbose_name='nom du département'),
),
migrations.AlterField(
model_name='phone',
name='name',
field=models.CharField(max_length=255, verbose_name='type'),
),
migrations.AlterField(
model_name='social',
name='name',
field=models.CharField(max_length=255, verbose_name='type'),
),
migrations.CreateModel(
name='Mail',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='type')),
('mail', models.CharField(max_length=1023, verbose_name='adresse mail')),
('profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fiches.Profile', verbose_name='profil')),
],
),
migrations.CreateModel(
name='Address',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='type')),
('content', models.CharField(max_length=1023, verbose_name='adresse')),
('profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fiches.Profile', verbose_name='profil')),
],
),
]

View file

@ -18,13 +18,19 @@
</div>
<div class="spacer"></div>
<h1>
{% block title %}{% trans "Annuaire des élèves de l'ENS" %}{% endblock %}
{% block title %} <a href='{% url "home" %}'>{% trans "Annuaire des élèves de l'ENS" %}</a>{% endblock %}
</h1>
{% if user.is_authenticated %}
{% blocktrans %}Connecté en tant que <tt>{{ user }}</tt>{% endblocktrans %}<br />
{% endif %}
{% block leftmenu %}{% endblock %}
<nav>
<a href='{% url "home" %}'> Accueil </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=''> Anniversaires à venir </a>
</nav>
</div>
<div id="main">
<div id="content">

View file

@ -0,0 +1,22 @@
{% 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

@ -2,7 +2,6 @@ from django.urls import path
from . import views
urlpatterns = [
path('<int:id>', views.fiche, name='fiche'),
path('edit', views.fiche_modif, name='fiche_modif'),
path('search', views.search, name='search'),
]
path('<int:id>',views.fiche, name='fiche'),
path('edit',views.fiche_modif, name='fiche_modif')
]

View file

@ -26,15 +26,15 @@ def fiche_modif(request):
return render(request, 'fiches/fiches_modif.html', {"form": form})
@login_required
def search(request):
def home(request):
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
name = form.cleaned_data["name"]
result = Profile.objects.filter(full_name__icontains=name)
context = {"form": form, "result": result}
return render(request, 'fiches/search.html', context)
result = Profile.objects.filter(full_name__icontains=form.cleaned_data['name'])
return render(request,'fiches/home.html',{"form":form, "result":result})
else:
form = SearchForm()
return render(request, 'fiches/search.html', {"form": form})
return render(request,'fiches/home.html',{"form":form})