Add JS Script to Passe admin
This commit is contained in:
parent
df8d5e68cf
commit
cb410dd7c2
|
@ -207,6 +207,12 @@ class PasseAdmin(admin.ModelAdmin):
|
||||||
("difficulty", DropdownFilter),
|
("difficulty", DropdownFilter),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class Media:
|
||||||
|
js = (
|
||||||
|
"js/core/jquery-3.6.0.min.js",
|
||||||
|
"js/admin/passe.js",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TrainingProgramAdmin(admin.ModelAdmin):
|
class TrainingProgramAdmin(admin.ModelAdmin):
|
||||||
model = TrainingProgram
|
model = TrainingProgram
|
||||||
|
|
|
@ -48,7 +48,7 @@ class Educative(Markdownizable):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
AGE_CHOICES = (
|
AGE_CHOICES = [
|
||||||
(6, "6-7"),
|
(6, "6-7"),
|
||||||
(7, "7-8"),
|
(7, "7-8"),
|
||||||
(8, "8-9"),
|
(8, "8-9"),
|
||||||
|
@ -61,7 +61,7 @@ class Educative(Markdownizable):
|
||||||
(15, "15-16"),
|
(15, "15-16"),
|
||||||
(16, "16-17"),
|
(16, "16-17"),
|
||||||
(17, "17+"),
|
(17, "17+"),
|
||||||
)
|
]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Educatif"
|
verbose_name = "Educatif"
|
||||||
|
@ -486,10 +486,10 @@ class Passe(Markdownizable):
|
||||||
self.difficulty = 0
|
self.difficulty = 0
|
||||||
self.number_of_skill = 0
|
self.number_of_skill = 0
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
print("Dans le save")
|
# print("Dans le save")
|
||||||
|
|
||||||
if self.educatives.count() == 0:
|
if self.educatives.count() == 0:
|
||||||
print("educative is none")
|
# print("educative is none")
|
||||||
present = False
|
present = False
|
||||||
operation_list = self.regexp.split(" ")
|
operation_list = self.regexp.split(" ")
|
||||||
for item in ROUTINE_TYPE_CHOICE:
|
for item in ROUTINE_TYPE_CHOICE:
|
||||||
|
@ -498,7 +498,7 @@ class Passe(Markdownizable):
|
||||||
break
|
break
|
||||||
|
|
||||||
if present and len(operation_list) == 2:
|
if present and len(operation_list) == 2:
|
||||||
print("present")
|
# print("present")
|
||||||
content = operation_list[1].replace("[", "").replace("]", "")
|
content = operation_list[1].replace("[", "").replace("]", "")
|
||||||
ranks = content.split("-")
|
ranks = content.split("-")
|
||||||
|
|
||||||
|
@ -724,47 +724,50 @@ class Passe(Markdownizable):
|
||||||
return False
|
return False
|
||||||
# <--
|
# <--
|
||||||
|
|
||||||
operation_list = regexp.split(" ")
|
argument_list = regexp.split(" ")
|
||||||
|
|
||||||
if len(operation_list) >= 3:
|
if len(argument_list) >= 3:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if len(operation_list) == 2:
|
if len(argument_list) == 2 and educatives_list.count() == 1:
|
||||||
if not Passe.is_valid_dot(operation_list[0]):
|
return Passe.is_valid_regexp_two_args(argument_list[0], argument_list[1])
|
||||||
return False
|
|
||||||
|
|
||||||
value = operation_list[0].replace(".", "")
|
|
||||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
|
||||||
|
|
||||||
if is_valid_routine:
|
|
||||||
return Passe.is_valid_subset(operation_list[1])
|
|
||||||
else:
|
else:
|
||||||
if (
|
if (
|
||||||
operation_list[0] == "WC"
|
argument_list[0] == "WC"
|
||||||
and educatives_list is not None
|
and educatives_list is not None
|
||||||
and len(educatives_list) == 2
|
and len(educatives_list) == 2
|
||||||
):
|
):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if re.match(r"[1-9]+\|", operation_list[0]) and len(educatives_list) >= 1:
|
if re.match(r"[1-9]+\|", argument_list[0]) and len(educatives_list) >= 1:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if not Passe.is_valid_dot(operation_list[0]):
|
if not Passe.is_valid_dot(argument_list[0]):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
value = operation_list[0].replace(".", "")
|
value = argument_list[0].replace(".", "")
|
||||||
is_valid_routine = Passe.is_valid_routine_type(value)
|
is_valid_routine = Passe.is_valid_routine_type(value)
|
||||||
|
|
||||||
if is_valid_routine:
|
if is_valid_routine:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return Passe.is_valid_subset(operation_list[0])
|
return Passe.is_valid_subset(argument_list[0])
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class TrainingProgram(Seasonisable, Markdownizable):
|
class TrainingProgram(Seasonisable, Markdownizable):
|
||||||
"""Classe représentant un entraînement (ensemble de passage)."""
|
"""Classe représentant un entraînement (ensemble de passage).
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- renommer (supprimer/remettre) TrainingProgram en TrainingPasse
|
||||||
|
- supprimer Seasonisable
|
||||||
|
- supprimer Markdownizable
|
||||||
|
- supprimer le champ Gymnast
|
||||||
|
- supprimer score
|
||||||
|
- supprimer rank ??? (--> dans la M2M)
|
||||||
|
- supprimer difficulty ??? (--> dans la M2M)
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Training Program"
|
verbose_name = "Training Program"
|
||||||
|
@ -774,13 +777,13 @@ class TrainingProgram(Seasonisable, Markdownizable):
|
||||||
]
|
]
|
||||||
unique_together = ["date", "gymnast", "rank"]
|
unique_together = ["date", "gymnast", "rank"]
|
||||||
|
|
||||||
gymnast = models.ForeignKey("people.Gymnast", on_delete=models.CASCADE)
|
gymnast = models.ForeignKey("people.Gymnast", on_delete=models.CASCADE) # TO DELETE
|
||||||
passe = models.ForeignKey(Passe, on_delete=models.CASCADE)
|
passe = models.ForeignKey(Passe, on_delete=models.CASCADE)
|
||||||
repetition = models.PositiveSmallIntegerField(default=1)
|
repetition = models.PositiveSmallIntegerField(default=1)
|
||||||
number_of_skill = models.PositiveSmallIntegerField(default=0)
|
number_of_skill = models.PositiveSmallIntegerField(default=0)
|
||||||
difficulty = models.DecimalField(max_digits=4, decimal_places=1, default=0.0)
|
difficulty = models.DecimalField(max_digits=4, decimal_places=1, default=0.0)
|
||||||
rank = models.PositiveSmallIntegerField(default=1)
|
rank = models.PositiveSmallIntegerField(default=1) # TO DELETE
|
||||||
score = models.PositiveSmallIntegerField(blank=True, null=True)
|
score = models.PositiveSmallIntegerField(blank=True, null=True) # TO DELETE
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -794,3 +797,12 @@ class TrainingProgram(Seasonisable, Markdownizable):
|
||||||
self.difficulty = self.passe.difficulty * self.repetition
|
self.difficulty = self.passe.difficulty * self.repetition
|
||||||
self.number_of_skill = self.passe.number_of_skill * self.repetition
|
self.number_of_skill = self.passe.number_of_skill * self.repetition
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
# class Training(Seasonisable, Markdownizable):
|
||||||
|
# """Classe représentant un entraînement."""
|
||||||
|
|
||||||
|
# gymnast = models.ForeignKey("people.Gymnast", on_delete=models.CASCADE)
|
||||||
|
# difficulty = models.DecimalField(max_digits=4, decimal_places=1, default=0.0)
|
||||||
|
# number_of_skill = models.PositiveSmallIntegerField(default=0)
|
||||||
|
# score = models.PositiveSmallIntegerField(default=1)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
if (!$) {
|
||||||
|
const $ = django.jQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
|
||||||
|
$('#id_regexp').on("focusout", function(){
|
||||||
|
if($('#id_label').val() == "")
|
||||||
|
$('#id_label').val($('#id_regexp').val());
|
||||||
|
else
|
||||||
|
$('#id_label').val($('#id_label').val() + " " + $('#id_regexp').val());
|
||||||
|
|
||||||
|
var operators = $('#id_regexp').val().split(' ');
|
||||||
|
const pattern = /\[[2-9]+\-[2-9]+\]/
|
||||||
|
|
||||||
|
if(operators.length >= 2)
|
||||||
|
var subset = operators[1];
|
||||||
|
else
|
||||||
|
var subset = operators[0];
|
||||||
|
|
||||||
|
if(pattern.test(subset)){
|
||||||
|
subset = subset.replace("[", "").replace("]", "");
|
||||||
|
var values = subset.split("-");
|
||||||
|
|
||||||
|
if(values[1] != "")
|
||||||
|
if(values[0] != "")
|
||||||
|
$('#id_number_of_skill').val(parseInt(values[1]) - parseInt(values[0]));
|
||||||
|
else
|
||||||
|
$('#id_number_of_skill').val(parseInt(values[1]));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue