Compare commits

...

4 Commits

Author SHA1 Message Date
Gregory Trullemans 2a462b0112 Bug fix. 2024-02-07 14:05:05 +01:00
Gregory Trullemans 882220a358 Fix bug 2024-02-06 16:29:30 +01:00
Gregory Trullemans 9ec341ab7c Update average_passe_time computation 2024-02-06 14:42:22 +01:00
Gregory Trullemans e22c35cbab Improve gymnast search 2024-02-06 13:07:12 +01:00
5 changed files with 36 additions and 15 deletions

View File

@ -21,6 +21,7 @@ from django.db.models import Max
from django.conf import settings from django.conf import settings
from .models import Citation from .models import Citation
from jarvis.tools.models import from_date_to_week_number from jarvis.tools.models import from_date_to_week_number
from jarvis.tools.clean_name import clean_name
from jarvis.tools.models import Season from jarvis.tools.models import Season
@ -194,8 +195,10 @@ def search(request):
pattern = request.GET.get("pattern", None) pattern = request.GET.get("pattern", None)
if pattern: if pattern:
name = clean_name(pattern)
print(name)
gymnast_list = Gymnast.objects.filter( gymnast_list = Gymnast.objects.filter(
Q(last_name__icontains=pattern) | Q(first_name__icontains=pattern) Q(cleaned_last_name__icontains=name) | Q(cleaned_first_name__icontains=name)
) )
if gymnast_list.count() == 1: if gymnast_list.count() == 1:

View File

@ -701,6 +701,8 @@ class Intensity(Markdownizable, Seasonisable):
# Real statistics # Real statistics
@property @property
def mean_time_by_passe(self): def mean_time_by_passe(self):
average_time_in_min = self.time / self.number_of_passes
average_time_in_sec = (average_time_in_min % 1) * 60
return self.time / self.number_of_passes return self.time / self.number_of_passes
@property @property
@ -733,20 +735,36 @@ class Intensity(Markdownizable, Seasonisable):
@property @property
def passes_quality_for_gymnast(self): def passes_quality_for_gymnast(self):
average_gymnast_time = 150 + ( average_passe_time = (
self.number_of_gymnast * pow(100, 1 / self.number_of_gymnast) (90 + pow(100, 1 / self.number_of_gymnast)) * self.number_of_gymnast
) ) / 60
if self.mean_time_by_passe <= average_gymnast_time: print(self.mean_time_by_passe)
print(average_passe_time)
if self.mean_time_by_passe <= average_passe_time:
print("1")
return 1 return 1
if self.mean_time_by_passe <= (average_gymnast_time * 1.05): if self.mean_time_by_passe <= (average_passe_time * 1.05):
print("2")
return 2 return 2
if self.mean_time_by_passe <= (average_gymnast_time * 1.15): if self.mean_time_by_passe >= (average_passe_time * 1.05):
print("3")
return 3 return 3
# Human readeable scores # Human readeable scores
@property
def mean_time_by_passe_readable(self):
average_time_in_min = self.mean_time_by_passe
average_time_in_sec = round((average_time_in_min % 1) * 60)
if average_time_in_sec < 10:
average_time_in_sec = "0" + str(average_time_in_sec)
else:
average_time_in_sec = str(average_time_in_sec)
return str(int(average_time_in_min)) + "min" + average_time_in_sec
@property @property
def difficulty_in_unit(self): def difficulty_in_unit(self):
return self.difficulty / 10 return self.difficulty / 10

View File

@ -109,11 +109,11 @@
<div class="col-2 text-right pl-0"> <div class="col-2 text-right pl-0">
<b> <b>
{% if intensity.passes_quality_for_gymnast >= 3 %} {% if intensity.passes_quality_for_gymnast >= 3 %}
<span class="text-danger">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-danger">{{ intensity.mean_time_by_passe_readable }}</span>
{% elif intensity.passes_quality_for_gymnast == 2 %} {% elif intensity.passes_quality_for_gymnast == 2 %}
<span class="text-warning">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-warning">{{ intensity.mean_time_by_passe_readable }}</span>
{% else %} {% else %}
<span class="text-success">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-success">{{ intensity.mean_time_by_passe_readable }}</span>
{% endif %} {% endif %}
</b> </b>
</div> </div>

View File

@ -82,11 +82,11 @@
<td class="text-center"> <td class="text-center">
<b> <b>
{% if intensity.passes_quality_for_gymnast >= 3 %} {% if intensity.passes_quality_for_gymnast >= 3 %}
<span class="text-danger">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-danger">{{ intensity.mean_time_by_passe_readable }}</span>
{% elif intensity.passes_quality_for_gymnast == 2 %} {% elif intensity.passes_quality_for_gymnast == 2 %}
<span class="text-warning">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-warning">{{ intensity.mean_time_by_passe_readable }}</span>
{% else %} {% else %}
<span class="text-success">{{ intensity.mean_time_by_passe | floatformat:3 }}</span> <span class="text-success">{{ intensity.mean_time_by_passe_readable }}</span>
{% endif %} {% endif %}
</b> </b>
</td> </td>

View File

@ -1375,7 +1375,7 @@ def plan_create_or_update(request, plan_id=None, gymnast_id=None, skill_id=None)
send_mail( send_mail(
title, title,
f"Nouvel objectif fixé pour {gymnast}", f"Nouvel objectif fixé pour {plan.gymnast}",
settings.EMAIL_HOST_USER, settings.EMAIL_HOST_USER,
receivers, receivers,
fail_silently=False, fail_silently=False,
@ -1583,7 +1583,7 @@ def season_information_create_or_update(
send_mail( send_mail(
title, title,
f"Une nouvelle information de saison enregistrée pour {gymnast}", f"Une nouvelle information de saison enregistrée pour {season_information.gymnast}",
settings.EMAIL_HOST_USER, settings.EMAIL_HOST_USER,
receivers, receivers,
fail_silently=False, fail_silently=False,