Adding jumpers lookup and update chrono creation

This commit is contained in:
Trullemans Gregory 2021-11-11 16:03:33 +01:00
parent 35f864e18a
commit 9cd111e403
5 changed files with 42 additions and 7 deletions

View File

@ -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/<int:jumperid>/", views.jumper_details, name="jumper_details"),
]

View File

@ -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):

View File

@ -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);
}
});
});

View File

@ -3,7 +3,18 @@
{% block datacontent %}
<div class="card mb-0">
<div class="card-header">
<h4 class="card-title"> Chronos Listing</h4>
<div class="row">
<div class="col-2">
<h4 class="card-title"> Chronos Listing</h4>
</div>
<div class="col-1 ml-auto">
<a href="{% url 'chrono_create' %}">
<button type="submit" value="add" class="btn btn-icon btn-warning ">
<i class="tim-icons icon-simple-add"></i>
</button>
</a>
</div>
</div>
</div>
<div class="card-body pb-0">
<div class="table-responsive pb-0">

View File

@ -16,7 +16,6 @@
<th class="header text-left" style="width: 35%">Firstname</th>
<th class="header text-left" style="width: 15%">Age</th>
<th class="header text-left" style="width: 15%">Club</th>
<th class="header text-center">Active ?</th>
</tr>
</thead>
<tbody>
@ -27,7 +26,6 @@
<td class="text-left"><a href="{% url 'jumper_details' jumper.id %}">{{ jumper.first_name }}</a></td>
<td class="text-left">{{ jumper.age }}</td>
<td class="text-left">{{ jumper.club.acronym }} ({{ jumper.club.city }})</td>
<td class="text-center">{{ jumper.active }}</td>
</tr>
{% endfor %}
</tbody>