diff --git a/jumpers/urls.py b/jumpers/urls.py index 724cf49ea4..6bb441154a 100644 --- a/jumpers/urls.py +++ b/jumpers/urls.py @@ -4,6 +4,7 @@ from . import views jumper_urlpatterns = [ path(r"", views.jumper_listing, name="jumper_list"), + path(r"lookup/", views.jumper_lookup), path(r"details//", views.jumper_details, name="jumper_details"), ] diff --git a/jumpers/views.py b/jumpers/views.py index ab2f0b3213..cc2ebae7be 100644 --- a/jumpers/views.py +++ b/jumpers/views.py @@ -2,10 +2,13 @@ from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_http_methods +from django.db.models import Q from .models import Club, Jumper from followup.models import Chrono, LearnedSkill +import simplejson + @login_required @require_http_methods(["GET"]) @@ -17,6 +20,28 @@ def club_listing(request): return render(request, "clubs/list.html", context) +@login_required +@require_http_methods(["GET"]) +def jumper_lookup(request): + """ + Récupère la liste des gymnastes à la volée suivant des caractères de + recherche entrés. (min 3 caractères) + """ + + results = [] + pattern = request.GET.get("pattern", None) + + # Ignore queries shorter than length 3 + if pattern is not None and len(pattern) > 3: + model_results = Jumper.objects.filter( + Q(last_name__icontains=pattern) | Q(first_name__icontains=pattern) + ) + results = [{"ID": x.id, "Name": str(x)} for x in model_results] + + json = simplejson.dumps(results) + return HttpResponse(json, content_type="application/json") + + @login_required @require_http_methods(["GET"]) def jumper_listing(request): diff --git a/templates/chronos/create.html b/templates/chronos/create.html index 27110c9609..dc8b998a5c 100644 --- a/templates/chronos/create.html +++ b/templates/chronos/create.html @@ -61,10 +61,10 @@ $(function(){ blackDashboard.initDateTimePicker(); - $('#id_gymnast_related').autocomplete({ + $('#id_jumper_related').autocomplete({ source: function(request, response) { $.ajax({ - url: '/gymnast/lookup/?pattern=' + $('#id_gymnast_related').val(), + url: '/jumper/lookup/?pattern=' + $('#id_jumper_related').val(), dataType: "json", success: function(data) { if(data.length != 0) { @@ -72,7 +72,7 @@ return { label: item.Name, value: item.Name, - gymnastid: item.ID + jumperid: item.ID } })) } else { @@ -87,7 +87,7 @@ }, minLength: 3, select: function (event, ui) { - $($(this).data('ref')).val(ui.item.gymnastid); + $($(this).data('ref')).val(ui.item.jumperid); } }); }); diff --git a/templates/chronos/list.html b/templates/chronos/list.html index 72cb071ca6..e5a9218448 100644 --- a/templates/chronos/list.html +++ b/templates/chronos/list.html @@ -3,7 +3,18 @@ {% block datacontent %}
-

Chronos Listing

+
+
+

Chronos Listing

+
+ +
diff --git a/templates/jumpers/list.html b/templates/jumpers/list.html index 0edf5a6906..12a8870c04 100644 --- a/templates/jumpers/list.html +++ b/templates/jumpers/list.html @@ -16,7 +16,6 @@ Firstname Age Club - Active ? @@ -27,7 +26,6 @@ {{ jumper.first_name }} {{ jumper.age }} {{ jumper.club.acronym }} ({{ jumper.club.city }}) - {{ jumper.active }} {% endfor %}