2023-04-25 17:06:14 +02:00
from django import forms
2024-03-11 10:28:22 +01:00
from django . core . exceptions import ValidationError
2024-03-13 11:15:19 +01:00
from django . contrib . admin . widgets import FilteredSelectMultiple
2024-03-11 10:28:22 +01:00
import re
2023-04-25 17:06:14 +02:00
2024-03-13 11:15:19 +01:00
from . models import (
Educative ,
Skill ,
Routine ,
RoutineSkill ,
2024-03-15 14:01:27 +01:00
# Passe,
2024-03-13 11:15:19 +01:00
)
2023-04-25 17:06:14 +02:00
class SkillForm ( forms . ModelForm ) :
class Meta :
model = Skill
fields = ( " informations " , )
widgets = {
" informations " : forms . Textarea (
attrs = {
" class " : " form-control " ,
" placeholder " : " Informations about the skill : attention point, methodology, biomecanics, … " , # pylint: disable=line-too-long
}
) ,
}
2023-05-16 12:58:11 +02:00
class CombinationForm ( forms . ModelForm ) :
2023-04-25 17:06:14 +02:00
class Meta :
model = Routine
fields = (
" long_label " ,
" short_label " ,
" difficulty " ,
" level " ,
" is_active " ,
2024-02-06 11:00:21 +01:00
" is_routine " ,
" is_competitive " ,
2023-04-25 17:06:14 +02:00
" informations " ,
)
widgets = {
" long_label " : forms . TextInput (
attrs = { " class " : " form-control " , " placeholder " : " Routine ' s long name " }
) ,
" short_label " : forms . TextInput (
attrs = { " class " : " form-control " , " placeholder " : " Routine ' s short name " }
) ,
" informations " : forms . Textarea (
attrs = {
" class " : " form-control " ,
" placeholder " : " Informations about the psychological state of mind : context (why, where, …), possible consequencies, … " , # pylint: disable=line-too-long
}
) ,
" difficulty " : forms . HiddenInput ( ) ,
" level " : forms . HiddenInput ( ) ,
" is_active " : forms . HiddenInput ( ) ,
}
2023-05-16 12:58:11 +02:00
class CombinationSkillForm ( forms . ModelForm ) :
2023-04-25 17:06:14 +02:00
class Meta :
model = RoutineSkill
fields = (
" routine " ,
" skill " ,
" rank " ,
)
widgets = {
" routine " : forms . HiddenInput ( ) ,
" skill " : forms . HiddenInput ( ) ,
" rank " : forms . NumberInput ( ) ,
}
2024-02-25 20:02:20 +01:00
2024-03-15 14:01:27 +01:00
# class PasseForm(forms.ModelForm):
# educatives = forms.ModelMultipleChoiceField(
# required=False,
# queryset=Educative.objects.all(),
# widget=FilteredSelectMultiple("Educatives", is_stacked=False),
# # widget=customFilteredSelectMultiple(verbose_name='test2',is_stacked=False)
# )
# class Media:
# css = {
# "all": ["admin/css/widgets.css"],
# }
# # Adding this javascript is crucial
# js = ["/admin/jsi18n/"]
# class Meta:
# model = Passe
# fields = ("label", "regexp", "educatives", "informations")
# widgets = {
# "label": forms.TextInput(
# attrs={
# "class": "form-control",
# "placeholder": "Label (not mandatory)",
# "maxlength": 30,
# }
# ),
# "regexp": forms.TextInput(
# attrs={"class": "form-control", "placeholder": "[2-8]"}
# ),
# "informations": forms.Textarea(
# attrs={
# "class": "form-control",
# "placeholder": "Informations about the passe…", # pylint: disable=line-too-long
# }
# ),
# }
# def clean_regexp(self):
# """Vérifie que la regexp entrée par l'utilisateur est valide."""
# regexp = self.cleaned_data["regexp"]
# if not Passe.is_valid_regexp(regexp):
# raise ValidationError("Entered regexp not valid.")
# return regexp
# def clean(self):
# """Vérifie le contenu des champs `educatives` par rapport à la valeur de `regexp`. Si
# `regexp` est définie par :
# - valeurs de ROUTINE_TYPE_CHOICE il faut que Educatives soit VIDE
# - avec [x-y]
# - [x-y] " Educatives soit NON VIDE
# - WC " il y ait 2+ Educatives
# - x| " il y ait 1! Educatives
# """
# cleaned_data = super().clean()
# regexp = ["regexp"]
# if regexp is not None:
# arguments = regexp.split(" ")
# educatives = cleaned_data["educatives"]
# if Passe.is_valid_routine_type(arguments[0]) and educatives is not None:
# raise ValidationError(
# "Educatives must be empty with the entered Regexp."
# )
# if Passe.is_valid_subset(arguments[0]) and educatives is None:
# raise ValidationError(
# "Educatives can't be empty with the entered Regexp."
# )
# if re.match(r"[1-9]+\|", arguments[0]) and len(educatives) != 1:
# raise ValidationError(
# "One and only one Educatives allowed with the entered Regexp."
# )
# if arguments[0] == "WC" and (educatives is None or len(educatives) < 2):
# raise ValidationError(
# "At least two Educatives with the entered Regexp."
# )
# return cleaned_data