Add new fields to Gymnast class and prepare new class season and season_info
This commit is contained in:
parent
a4fd5c4350
commit
50bc851c29
|
@ -30,23 +30,23 @@ $(function(){
|
|||
});
|
||||
|
||||
$('#id_rotation, #id_twist').keyup(function(){
|
||||
setDifficulty();
|
||||
setLevel();
|
||||
setNotation();
|
||||
set_difficulty();
|
||||
set_level();
|
||||
set_notation();
|
||||
});
|
||||
|
||||
$('#id_position').change(function(){
|
||||
setDifficulty();
|
||||
setLevel();
|
||||
setNotation();
|
||||
set_difficulty();
|
||||
set_level();
|
||||
set_notation();
|
||||
});
|
||||
|
||||
$('#id_rotation_type').change(function(){
|
||||
setNotation();
|
||||
set_notation();
|
||||
});
|
||||
|
||||
$('#difficulty').change(function(){
|
||||
setLevel();
|
||||
set_level();
|
||||
});
|
||||
|
||||
$('#id_level').keyup(function(){
|
||||
|
@ -103,12 +103,11 @@ $(function(){
|
|||
});
|
||||
|
||||
|
||||
const setDifficulty = function()
|
||||
const set_difficulty = function()
|
||||
{
|
||||
if(typeof($('#id_rotation').val()) === "undefined" || typeof($('#id_twist').val()) === "undefined")
|
||||
return
|
||||
|
||||
// console.log('------------------------------------------------------------------------------------------')
|
||||
var sum = 0;
|
||||
var position = $('#id_position').val();
|
||||
var nb_twist = parseInt($('#id_twist').val());
|
||||
|
@ -133,7 +132,7 @@ $(function(){
|
|||
};
|
||||
|
||||
|
||||
const setLevel = function()
|
||||
const set_level = function()
|
||||
{
|
||||
var level = 0;
|
||||
|
||||
|
@ -149,7 +148,7 @@ $(function(){
|
|||
}
|
||||
|
||||
|
||||
const setNotation = function()
|
||||
const set_notation = function()
|
||||
{
|
||||
var rotation_type = parseInt($('#id_rotation_type').children(':selected').val());
|
||||
var nb_rotation = parseInt($('#id_rotation').val());
|
||||
|
|
|
@ -9,18 +9,24 @@ class Educative(Markdownizable):
|
|||
Classe `mère` educative. En trampoline tout est un éducatif : un saut, un enchainement, une
|
||||
série de compétition, ….
|
||||
|
||||
Level : Toutes les figures appartiennent à un niveau. Un niveau peut contenir plusieurs
|
||||
figures.
|
||||
Exemple : les trois sauts de base (saut groupé, saut carpé joint et saut écart)
|
||||
sont dans le même niveau, salto avant groupé et salto arrière groupé appartiennent au même
|
||||
niveau.
|
||||
Le niveau d’une figure est calculé par rapport aux prérequis : par défaut le niveau
|
||||
d’une figure est égal au niveau maximum de ses prérequis.
|
||||
Level (skill) :
|
||||
Toutes les figures appartiennent à un niveau. Un niveau peut contenir plusieurs
|
||||
figures. Par défaut, le niveau d'une figure est son coéficient de difficulté (exprimé en 10ème
|
||||
pour avoir des nombres entiers) auquel on ajoute 1 pour les positions tendue.
|
||||
Exemple :
|
||||
- saut groupé, saut carpé joint et saut écart ==> niveau 5
|
||||
- salto avant groupé, salto arrière groupé ==> niveau 10
|
||||
- salto avant carpé, barani groupé, salto arrière carpé ==> niveau 11
|
||||
- salto avant tendu, barani carpé, salto arrière tendu ==> niveau 12
|
||||
|
||||
En plus de cela, il y a une limite minimum pour un niveau : le niveau d’une figure ne peut pas
|
||||
être plus petit que le niveau maximum de ses prérequis.
|
||||
Le niveau, avec le rang, ont pour but d’aider les coaches à planifier l’évolution et
|
||||
l’apprentissage des figures les unes par rapport aux autres.
|
||||
|
||||
|
||||
Rank : Le rang permet, en plus du `level` (niveau), de classer les figures entre elles, de leur
|
||||
Rank (skill) :
|
||||
Le rang permet, en plus du `level` (niveau), de classer les figures entre elles, de leur
|
||||
donner un ordre (informatif). Le rang d’une figure est calculé par rapport aux prérequis et au
|
||||
niveau : par défaut le rang d’une figure est le maximum entre le niveau maximum de ses
|
||||
prérequis plus un et le niveau de la figure.
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 4.1.1 on 2022-10-31 13:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("people", "0004_gymnast_email_trainer"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="gymnast",
|
||||
name="orientation",
|
||||
field=models.PositiveSmallIntegerField(
|
||||
blank=True,
|
||||
choices=[(None, "Unknown"), (0, "Left"), (1, "Right")],
|
||||
null=True,
|
||||
verbose_name="Twist side",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="gymnast",
|
||||
name="year_of_practice",
|
||||
field=models.PositiveSmallIntegerField(default=0),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,22 @@
|
|||
# Generated by Django 4.1.1 on 2022-10-31 13:48
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("people", "0005_gymnast_orientation_gymnast_year_of_practice"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="gymnast",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(
|
||||
auto_now_add=True, default=django.utils.timezone.now
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -30,7 +30,21 @@ class Gymnast(Markdownizable):
|
|||
verbose_name_plural = "Gymnasts"
|
||||
|
||||
GENDER_CHOICES = ((0, "Male"), (1, "Female"))
|
||||
# CATEGORY_CHOICES = ((9, "I9"), (10, "I10"), (11, "A11"), (12, "A12"), (13, "A13-14"), (15, "A15-16"), (18, "Senior"))
|
||||
ORIENTATION_CHOICES = ((None, "Unknown"), (0, "Left"), (1, "Right"))
|
||||
# CATEGORY_CHOICES = (
|
||||
# (9, "I9"),
|
||||
# (10, "I10"),
|
||||
# (11, "A11"),
|
||||
# (12, "A12"),
|
||||
# (13, "A13-14"),
|
||||
# (15, "A Junior"),
|
||||
# (18, "A Senior"),
|
||||
# (21, "B11"),
|
||||
# (22, "B12"),
|
||||
# (23, "B13-14"),
|
||||
# (24, "B Junior"),
|
||||
# (25, "B Senior"),
|
||||
# )
|
||||
|
||||
user = models.OneToOneField(
|
||||
User, on_delete=models.SET_NULL, related_name="gymnast", blank=True, null=True
|
||||
|
@ -42,19 +56,31 @@ class Gymnast(Markdownizable):
|
|||
choices=GENDER_CHOICES, verbose_name="Sexe"
|
||||
)
|
||||
is_active = models.BooleanField(default=1, verbose_name="Active")
|
||||
club = models.ForeignKey(
|
||||
Club, null=True, on_delete=models.SET_NULL, related_name="gymnast"
|
||||
orientation = models.PositiveSmallIntegerField(
|
||||
choices=ORIENTATION_CHOICES,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Twist side",
|
||||
)
|
||||
# category = models.PositiveSmallIntegerField(
|
||||
# choices=CATEGORY_CHOICES, verbose_name="Category"
|
||||
# )
|
||||
email_trainer = models.EmailField(
|
||||
max_length=254, null=True, blank=True, verbose_name="Trainer's email"
|
||||
)
|
||||
year_of_practice = models.PositiveSmallIntegerField(default=0)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
#
|
||||
#
|
||||
# TODO: traingin_by_week and hours_by_week --> classe de saison
|
||||
trainings_by_week = models.PositiveSmallIntegerField(
|
||||
verbose_name="# Training by week"
|
||||
)
|
||||
hours_by_week = models.PositiveSmallIntegerField(verbose_name="# Hours by week")
|
||||
# category = models.PositiveSmallIntegerField(
|
||||
# choices=CATEGORY_CHOICES, verbose_name="Category"
|
||||
# )
|
||||
club = models.ForeignKey(
|
||||
Club, null=True, on_delete=models.SET_NULL, related_name="gymnast"
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "%s %s" % (self.first_name, self.last_name)
|
||||
|
|
Loading…
Reference in New Issue