Minor update and optimisation
This commit is contained in:
parent
2276f35b4a
commit
571cf9da4a
|
@ -523,7 +523,10 @@ class Passe(Markdownizable):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.label:
|
if self.label:
|
||||||
return f"{self.label} ({self.number_of_skill} | {self.difficulty})"
|
if self.regexp:
|
||||||
|
return f"{self.label} {self.regexp} ({self.number_of_skill} | {self.difficulty})"
|
||||||
|
else:
|
||||||
|
return f"{self.label} ({self.number_of_skill} | {self.difficulty})"
|
||||||
else:
|
else:
|
||||||
return f"- ({self.number_of_skill} | {self.difficulty})"
|
return f"- ({self.number_of_skill} | {self.difficulty})"
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<table class="table table-striped tablesorter" id="trainingprogram_table">
|
<table class="table table-striped tablesorter" id="trainingprogram_table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4" class="text-center">{{ date|date:"l d F Y" }}</th>
|
<th colspan="5" class="text-center">{{ date|date:"l j F Y" }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -20,8 +20,22 @@
|
||||||
<tr role="row" class="{% cycle 'odd' 'even' %}">
|
<tr role="row" class="{% cycle 'odd' 'even' %}">
|
||||||
<td>{{ trainingprogram.rank }}</td>
|
<td>{{ trainingprogram.rank }}</td>
|
||||||
<td>{{ trainingprogram.passe.label }} {{ trainingprogram.passe.repetition }}</td>
|
<td>{{ trainingprogram.passe.label }} {{ trainingprogram.passe.repetition }}</td>
|
||||||
<td class="text-center"><b>{{ trainingprogram.passe.number_of_skill}}</b></td>
|
<td class="text-center">{{ trainingprogram.passe.number_of_skill}}</td>
|
||||||
<td class="text-center">{{ trainingprogram.passe.difficulty }}</td>
|
<td class="text-center">{{ trainingprogram.passe.difficulty }}</td>
|
||||||
|
{% if request.user|has_group:"trainer" %}
|
||||||
|
<td class="text-right p-2">
|
||||||
|
<a href="#" class="up">
|
||||||
|
<button type="submit" value="" class="btn btn-icon btn-warning mr-2">
|
||||||
|
<i class="fas fa-chevron-up"></i>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
<a href="#" class="down">
|
||||||
|
<button type="submit" value="add" class="btn btn-icon btn-warning mr-2">
|
||||||
|
<i class="fas fa-chevron-down"></i>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -29,6 +43,9 @@
|
||||||
<td colspan="2" class="text-right"><b>TOTAL</b></td>
|
<td colspan="2" class="text-right"><b>TOTAL</b></td>
|
||||||
<td class="text-center"><b>{{ number_of_skill }}</b></td>
|
<td class="text-center"><b>{{ number_of_skill }}</b></td>
|
||||||
<td class="text-center"><b>{{ difficulty }}</b></td>
|
<td class="text-center"><b>{{ difficulty }}</b></td>
|
||||||
|
{% if request.user|has_group:"trainer" %}
|
||||||
|
<td></td>
|
||||||
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -36,4 +53,39 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block footerscript %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".up,.down").click(function(){
|
||||||
|
var row = $(this).parents("tr:first");
|
||||||
|
if ($(this).is(".up")) {
|
||||||
|
$.ajax({
|
||||||
|
url: "{% url 'switch_trainingprogram_line' %}",
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
tp1: 5,
|
||||||
|
tp2: 6,
|
||||||
|
csrfmiddlewaretoken: '{{ csrf_token }}'
|
||||||
|
},
|
||||||
|
}).done(function() {
|
||||||
|
row.insertBefore(row.prev());
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$.ajax({
|
||||||
|
url: "{% url 'switch_trainingprogram_line' %}",
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
tp1: 6,
|
||||||
|
tp2: 5,
|
||||||
|
csrfmiddlewaretoken: '{{ csrf_token }}'
|
||||||
|
},
|
||||||
|
}).done(function() {
|
||||||
|
row.insertAfter(row.next());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -107,4 +107,9 @@ urlpatterns = [
|
||||||
views.trainingprogram_details,
|
views.trainingprogram_details,
|
||||||
name="trainingprogram_details",
|
name="trainingprogram_details",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
r"trainingprogram/switch_trainingprogram_line/",
|
||||||
|
views.switch_trainingprogram_line,
|
||||||
|
name="switch_trainingprogram_line",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -590,3 +590,38 @@ def trainingprogram_details(request, date=None, gymnast_id=None):
|
||||||
"trainingprogram_list": trainingprogram_list,
|
"trainingprogram_list": trainingprogram_list,
|
||||||
}
|
}
|
||||||
return render(request, "trainingprograms/details.html", context)
|
return render(request, "trainingprograms/details.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
@require_http_methods(["POST"])
|
||||||
|
def switch_trainingprogram_line(request):
|
||||||
|
"""
|
||||||
|
Recoit dans request deux identifiants de trainingprogram qu'il faut échanger () :
|
||||||
|
- tp1 (int) identifiant d'une instance de TraiingProgram
|
||||||
|
- tp2 (int) identifiant d'une instance de TraiingProgram
|
||||||
|
|
||||||
|
J'utilise `32767` comme valeur intermédiaire pour le `rank` car c'est la limite supérieure d'un
|
||||||
|
PositiveSmallIntegerField.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
target_trainingprogram_id = request.POST.get("tp1", None)
|
||||||
|
source_trainingprogram_id = request.POST.get("tp2", None)
|
||||||
|
|
||||||
|
target_trainingprogram = get_object_or_404(
|
||||||
|
TrainingProgram, pk=target_trainingprogram_id
|
||||||
|
)
|
||||||
|
source_trainingprogram = get_object_or_404(
|
||||||
|
TrainingProgram, pk=source_trainingprogram_id
|
||||||
|
)
|
||||||
|
|
||||||
|
saved_source_rank = source_trainingprogram.rank
|
||||||
|
saved_target_rank = target_trainingprogram.rank
|
||||||
|
source_trainingprogram.rank = 32767
|
||||||
|
source_trainingprogram.save()
|
||||||
|
target_trainingprogram.rank = saved_source_rank
|
||||||
|
target_trainingprogram.save()
|
||||||
|
source_trainingprogram.rank = saved_target_rank
|
||||||
|
source_trainingprogram.save()
|
||||||
|
except Exception:
|
||||||
|
return HttpResponse(409)
|
||||||
|
|
||||||
|
return HttpResponse(200)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<div class="row justify-content-center ml-1">
|
<div class="row justify-content-center ml-1">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="card">
|
<div class="card mb-3">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h4>Intensity statistics</h4>
|
<h4>Intensity statistics</h4>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6 pl-1">
|
<div class="col-md-6 pl-1">
|
||||||
<div class="card">
|
<div class="card mb-3">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h4>Chronos</h4>
|
<h4>Chronos</h4>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center ml-1">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
@ -84,15 +84,12 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if date_list %}
|
{% if date_list %}
|
||||||
{% for date in date_list %}
|
{% for date in date_list %}
|
||||||
<a href="{% url 'trainingprogram_details' date gymnast_id %}">{{ date|date:"l d F Y" }}</a>
|
<a href="{% url 'trainingprogram_details' date gymnast_id %}">{{ date|date:"l j F Y" }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
Pas de training planifié.
|
<p>Pas de training planifié.</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-right text-muted pt-0">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue