Add date comparison for plan and minor modification
This commit is contained in:
parent
4237a957dd
commit
f71dbd0d06
|
@ -111,7 +111,9 @@
|
||||||
<a href="{% url 'skill_details' skill.id %}">{{ skill.long_label }}</a>
|
<a href="{% url 'skill_details' skill.id %}">{{ skill.long_label }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
{% if skill.is_past %}<span class="text-danger"><b>{% endif %}
|
||||||
{{ skill.plan_date | date:"d-m-Y" }}
|
{{ skill.plan_date | date:"d-m-Y" }}
|
||||||
|
{% if skill.is_past %}</b></span>{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>{{ skill.difficulty }}</td>
|
<td>{{ skill.difficulty }}</td>
|
||||||
<td>{{ skill.level }}</td>
|
<td>{{ skill.level }}</td>
|
||||||
|
|
|
@ -17,6 +17,8 @@ from ultron.people.models import Gymnast
|
||||||
from ultron.planning.models import Event
|
from ultron.planning.models import Event
|
||||||
from ultron.tools.models import get_number_of_weeks_between
|
from ultron.tools.models import get_number_of_weeks_between
|
||||||
|
|
||||||
|
from functools import lru_cache
|
||||||
|
|
||||||
|
|
||||||
def login(request):
|
def login(request):
|
||||||
"""
|
"""
|
||||||
|
@ -72,6 +74,11 @@ def next_birthdays(request, number_of_birthday):
|
||||||
return birthday_list
|
return birthday_list
|
||||||
|
|
||||||
|
|
||||||
|
# @lru_cache()
|
||||||
|
# def get_last_updated_gymnasts(expiration_date):
|
||||||
|
# ...
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
def home(request):
|
def home(request):
|
||||||
|
@ -82,6 +89,7 @@ def home(request):
|
||||||
"date_begin"
|
"date_begin"
|
||||||
)[:10]
|
)[:10]
|
||||||
|
|
||||||
|
# mettre tout ca en cache.
|
||||||
last_updated_gymnast = Gymnast.objects.filter(
|
last_updated_gymnast = Gymnast.objects.filter(
|
||||||
Q(mindstate__created_at__gt=request.user.last_login)
|
Q(mindstate__created_at__gt=request.user.last_login)
|
||||||
| Q(points__created_at__gt=request.user.last_login)
|
| Q(points__created_at__gt=request.user.last_login)
|
||||||
|
|
|
@ -7,29 +7,56 @@ register = template.Library()
|
||||||
|
|
||||||
@register.inclusion_tag("people/gymnasts/gymnast_level_doughnut.html")
|
@register.inclusion_tag("people/gymnasts/gymnast_level_doughnut.html")
|
||||||
def generate_skill_doughnut(gymnast_id):
|
def generate_skill_doughnut(gymnast_id):
|
||||||
"""
|
""" Récupère pour un gymnaste la quantité de skill dans chaque phase d'apprentissage (with help,
|
||||||
Récupère les différents nombres de skill du gymnaste (masterised, chained, without help,
|
withoutRécupère les différents nombres de skill du gymnaste (masterised, chained, without help,
|
||||||
with help or no) à la dernière date connue et les renvoie pour en faire un graphique.
|
with help or no) à la dernière date connue et les renvoie pour en faire un graphique.
|
||||||
"""
|
"""
|
||||||
base_queryset = LearnedSkill.objects.filter(gymnast=gymnast_id).order_by("-date")
|
# base_queryset = LearnedSkill.objects.filter(gymnast=gymnast_id).order_by("-date")
|
||||||
|
|
||||||
total = 0
|
# total = 0
|
||||||
skills_capacity = [0] * 5
|
# skills_capacity = [0] * 5
|
||||||
checked_skills = set()
|
# checked_skills = set()
|
||||||
for learned_skill in base_queryset:
|
# for learned_skill in base_queryset:
|
||||||
if learned_skill not in checked_skills:
|
# if learned_skill not in checked_skills:
|
||||||
checked_skills.add(learned_skill)
|
# checked_skills.add(learned_skill)
|
||||||
skills_capacity[learned_skill.learning_step] += 1
|
# skills_capacity[learned_skill.learning_step] += 1
|
||||||
total += 1
|
# total += 1
|
||||||
|
|
||||||
|
skill_whith_help = (
|
||||||
|
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=1)
|
||||||
|
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step__gte=2)
|
||||||
|
.distinct()
|
||||||
|
.count()
|
||||||
|
)
|
||||||
|
|
||||||
|
skill_without_help = (
|
||||||
|
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=2)
|
||||||
|
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step=3)
|
||||||
|
.distinct()
|
||||||
|
.count()
|
||||||
|
)
|
||||||
|
|
||||||
|
skill_chained = (
|
||||||
|
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
|
||||||
|
.exclude(known_by__gymnast=gymnast_id, known_by__learning_step=4)
|
||||||
|
.distinct()
|
||||||
|
.count()
|
||||||
|
)
|
||||||
|
|
||||||
|
skill_masterised = (
|
||||||
|
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step__gte=4)
|
||||||
|
.distinct()
|
||||||
|
.count()
|
||||||
|
)
|
||||||
|
|
||||||
nb_skill = Skill.objects.all().count()
|
nb_skill = Skill.objects.all().count()
|
||||||
nb_unknown_skill = nb_skill - total
|
nb_unknown_skill = nb_skill - skill_whith_help - skill_without_help - skill_chained - skill_masterised
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"nb_skill_masterised": skills_capacity[4],
|
"nb_skill_whith_help": skill_whith_help,
|
||||||
"nb_skill_chained": skills_capacity[3],
|
"nb_skill_without_help": skill_without_help,
|
||||||
"nb_skill_without_help": skills_capacity[2],
|
"nb_skill_chained": skill_chained,
|
||||||
"nb_skill_whith_help": skills_capacity[1],
|
"nb_skill_masterised": skill_masterised,
|
||||||
"lost_skill": skills_capacity[0],
|
# "lost_skill": skills_capacity[0],
|
||||||
"nb_unknown_skill": nb_unknown_skill,
|
"nb_unknown_skill": nb_unknown_skill,
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.contrib.auth.models import Group
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
from django.db.models import Q, F, Avg
|
from django.db.models import BooleanField, ExpressionWrapper, Q, F, Avg
|
||||||
from django.db.models.functions import TruncDay
|
from django.db.models.functions import TruncDay
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
@ -462,7 +462,13 @@ def gymnast_display_skill(request, gymnast_id):
|
||||||
planified_skill = (
|
planified_skill = (
|
||||||
Skill.objects.filter(plan__gymnast=gymnast.id)
|
Skill.objects.filter(plan__gymnast=gymnast.id)
|
||||||
.order_by("-plan__date")
|
.order_by("-plan__date")
|
||||||
.annotate(plan_date=F("plan__date"))
|
.annotate(
|
||||||
|
plan_date=F("plan__date"),
|
||||||
|
is_past=ExpressionWrapper(
|
||||||
|
Q(plan__date__lte=pendulum.now().date()),
|
||||||
|
output_field=BooleanField()
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
context["planified_skill"] = planified_skill
|
context["planified_skill"] = planified_skill
|
||||||
|
@ -488,12 +494,6 @@ def gymnast_display_skill(request, gymnast_id):
|
||||||
.distinct()
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_not_chained = (
|
|
||||||
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=2)
|
|
||||||
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step=3)
|
|
||||||
.distinct()
|
|
||||||
)
|
|
||||||
|
|
||||||
skill_chained = (
|
skill_chained = (
|
||||||
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
|
Skill.objects.filter(known_by__gymnast=gymnast_id, known_by__learning_step=3)
|
||||||
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step=4)
|
.exclude(known_by__gymnast=gymnast.id, known_by__learning_step=4)
|
||||||
|
@ -502,7 +502,6 @@ def gymnast_display_skill(request, gymnast_id):
|
||||||
|
|
||||||
context["gymnast"] = gymnast
|
context["gymnast"] = gymnast
|
||||||
context["skill_whith_help"] = skill_whith_help
|
context["skill_whith_help"] = skill_whith_help
|
||||||
context["skill_not_chained"] = skill_not_chained
|
|
||||||
context["skill_without_help"] = skill_without_help
|
context["skill_without_help"] = skill_without_help
|
||||||
context["skill_chained"] = skill_chained
|
context["skill_chained"] = skill_chained
|
||||||
context["gymnast_nb_known_skills"] = gymnast_nb_known_skills
|
context["gymnast_nb_known_skills"] = gymnast_nb_known_skills
|
||||||
|
|
|
@ -91,10 +91,6 @@ class Seasonisable(models.Model):
|
||||||
self.season, self.week_number = from_date_to_week_number(self.date)
|
self.season, self.week_number = from_date_to_week_number(self.date)
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
# @property
|
|
||||||
# def is_past(self):
|
|
||||||
# return pendulum.now().date() > self.date
|
|
||||||
|
|
||||||
|
|
||||||
class TemporizableQuerySet(models.QuerySet):
|
class TemporizableQuerySet(models.QuerySet):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue