Compare commits

...

2 Commits

  1. 1
      main/templates/course_detail.html
  2. 10
      main/templates/dossards.html
  3. 4
      main/templates/scan.html
  4. 15
      main/views.py

1
main/templates/course_detail.html

@ -20,6 +20,7 @@
<button type="button" id="btnFinish" class="btn btn-danger">Fin course <button type="button" id="btnFinish" class="btn btn-danger">Fin course
<i class="fa-solid fa-stop"></i> <i class="fa-solid fa-stop"></i>
</button> </button>
<a href="{% url 'scan' %}?course_id={{ course.id }}" class="btn btn-info ml-2">Accès au scan <i class="fas fa-qrcode"></i></a>
<!-- Modal confirmation fin de course --> <!-- Modal confirmation fin de course -->
<div class="modal fade" id="finishModal" tabindex="-1" role="dialog" aria-labelledby="finishModalLabel" aria-hidden="true"> <div class="modal fade" id="finishModal" tabindex="-1" role="dialog" aria-labelledby="finishModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">

10
main/templates/dossards.html

@ -91,14 +91,22 @@
</div> </div>
</div> </div>
{% block extra_js %} {% block extra_js %}
<script src="{% static 'jquery/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'jquery/jquery.dataTables.min.js' %}"></script> <script src="{% static 'jquery/jquery.dataTables.min.js' %}"></script>
<script src="{% static 'bootstrap/dataTables.bootstrap4.min.js' %}"></script> <script src="{% static 'bootstrap/dataTables.bootstrap4.min.js' %}"></script>
<script src="{% static 'jquery/datatables.fr.js' %}"></script> <script src="{% static 'jquery/datatables.fr.js' %}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
var table = $('#coureursTable').DataTable({ // Empêche la double initialisation de DataTables
var table;
if (!$.fn.DataTable.isDataTable('#coureursTable')) {
table = $('#coureursTable').DataTable({
pageLength: 50, pageLength: 50,
}); });
} else {
table = $('#coureursTable').DataTable();
}
function updateMainDossardsCount() { function updateMainDossardsCount() {
var count = table.rows({search:'applied'}).count(); var count = table.rows({search:'applied'}).count();
$('#mainDossardsCountText').text('Générer ' + count + ' dossards'); $('#mainDossardsCountText').text('Générer ' + count + ' dossards');

4
main/templates/scan.html

@ -9,6 +9,9 @@
<h6 class="m-0 font-weight-bold text-primary">Scanner un coureur</h6> <h6 class="m-0 font-weight-bold text-primary">Scanner un coureur</h6>
</div> </div>
<div class="card-body"> <div class="card-body">
{% if course and course.fin %}
<div class="alert alert-danger text-center mb-0">Cette course est terminée. Le scan n'est plus possible.</div>
{% else %}
<div id="reader" style="width:100%; max-width:400px; margin:auto;"></div> <div id="reader" style="width:100%; max-width:400px; margin:auto;"></div>
<div class="mt-4 position-relative" style="max-width:400px; margin:auto;"> <div class="mt-4 position-relative" style="max-width:400px; margin:auto;">
<label id="manualCoureurLabel">Saisie manuelle :</label> <label id="manualCoureurLabel">Saisie manuelle :</label>
@ -22,6 +25,7 @@
{% if error %} {% if error %}
<div class="alert alert-danger mt-3">{{ error }}</div> <div class="alert alert-danger mt-3">{{ error }}</div>
{% endif %} {% endif %}
{% endif %}
</div> </div>
</div> </div>
<div class="card shadow mb-4"> <div class="card shadow mb-4">

15
main/views.py

@ -273,6 +273,7 @@ def scan_view(request):
error = None error = None
course = None course = None
if request.method == 'POST' and request.headers.get('x-requested-with') == 'XMLHttpRequest': if request.method == 'POST' and request.headers.get('x-requested-with') == 'XMLHttpRequest':
course_id = request.POST.get('course_id') course_id = request.POST.get('course_id')
qrcode = request.POST.get('qrcode') qrcode = request.POST.get('qrcode')
@ -281,7 +282,9 @@ def scan_view(request):
else: else:
# S'assurer que l'utilisateur scanne uniquement ses propres courses # S'assurer que l'utilisateur scanne uniquement ses propres courses
course = get_object_or_404(Course, id=course_id, owner=request.user) course = get_object_or_404(Course, id=course_id, owner=request.user)
if course.fin:
error = "Cette course est terminée. Le scan n'est plus possible."
else:
# Le QR code contient maintenant l'identifiant unique du Coureur # Le QR code contient maintenant l'identifiant unique du Coureur
coureur = None coureur = None
try: try:
@ -357,17 +360,19 @@ def scan_view(request):
course_id = request.GET.get('course_id') course_id = request.GET.get('course_id')
if course_id: if course_id:
course = get_object_or_404(Course, id=course_id, owner=request.user) course = get_object_or_404(Course, id=course_id, owner=request.user)
if course.fin:
error = "Cette course est terminée. Le scan n'est plus possible."
# Formatage de la date pour affichage JJ/MM/AAAA # Formatage de la date pour affichage JJ/MM/AAAA
date_str = format_date(course.date) if course else '' date_str = format_date(course.date) if course_id and 'course' in locals() else ''
# nombre actuel de scans pour cette course # nombre actuel de scans pour cette course
scan_count = Arrivee.objects.filter(course=course).count() if course else 0 scan_count = Arrivee.objects.filter(course=course).count() if course_id and 'course' in locals() else 0
return render(request, 'scan.html', { return render(request, 'scan.html', {
'title': f'Scan course : {course.nom} ({date_str})' if course else '', 'title': f'Scan course : {course.nom} ({date_str})' if course_id and 'course' in locals() else '',
'courses': courses, 'courses': courses,
'result': result, 'result': result,
'error': error, 'error': error,
'course': course, 'course': course if course_id and 'course' in locals() else None,
'scan_count': scan_count 'scan_count': scan_count
}) })

Loading…
Cancel
Save