Add Injury and Stability
This commit is contained in:
parent
03d9873d54
commit
926c5d029f
|
@ -40,6 +40,13 @@
|
|||
{% if form.skill.errors %} <span class="btn btn-sm btn-danger-outline">{% for error in form.skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row ">
|
||||
<label for="id_injury_type" class="col-4 col-sm-3 col-form-label">{{ form.injury_type.label }}<span class="text-danger"><b>*</b></span></label>
|
||||
<div class="col-sm-8 col-md-6 col-lg-6 col-xl-6 {% if form.injury_type.errors %}has-danger{% endif %}">
|
||||
{{ form.injury_type }}
|
||||
{% if form.injury_type.errors %} <span class="btn btn-sm btn-danger-outline">{% for error in form.injury_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row ">
|
||||
<label for="id_mechanism" class="col-4 col-sm-3 col-form-label">{{ form.mechanism.label }} <span class="text-danger"><b>*</b></span></label>
|
||||
<div class="col-5 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.mechanism.errors %}has-danger{% endif %}">
|
||||
|
|
|
@ -12,11 +12,15 @@ from .models import (
|
|||
Point,
|
||||
Chrono,
|
||||
Injury,
|
||||
SLBridge,
|
||||
WellBeing,
|
||||
Stability,
|
||||
InjuryType,
|
||||
HeightWeight,
|
||||
LearnedSkill,
|
||||
ChronoDetails,
|
||||
InjuryLocation,
|
||||
SidePlankLegRaise,
|
||||
GymnastHasRoutine,
|
||||
SeasonInformation,
|
||||
NumberOfRoutineDone,
|
||||
|
@ -97,6 +101,14 @@ class InjuryLocationAdmin(admin.ModelAdmin):
|
|||
search_fields = ("label",)
|
||||
|
||||
|
||||
class InjuryTypeAdmin(admin.ModelAdmin):
|
||||
model = InjuryType
|
||||
|
||||
list_display = ("label",)
|
||||
fields = ("label",)
|
||||
search_fields = ("label",)
|
||||
|
||||
|
||||
class InjuryAdmin(admin.ModelAdmin):
|
||||
model = Injury
|
||||
|
||||
|
@ -104,9 +116,11 @@ class InjuryAdmin(admin.ModelAdmin):
|
|||
"date",
|
||||
"gymnast",
|
||||
"skill",
|
||||
"injury_type",
|
||||
"mechanism",
|
||||
"location",
|
||||
"body_side",
|
||||
"mechanism",
|
||||
"diagnosis",
|
||||
"nb_week_off",
|
||||
"informations",
|
||||
)
|
||||
|
@ -260,12 +274,47 @@ class SeasonInformationAdmin(admin.ModelAdmin):
|
|||
autocomplete_fields = ("gymnast",)
|
||||
|
||||
|
||||
class SidePlankLegRaiseAdmin(admin.ModelAdmin):
|
||||
model = SidePlankLegRaise
|
||||
|
||||
list_display = ("label",)
|
||||
fields = ("label",)
|
||||
search_fields = ("label",)
|
||||
|
||||
|
||||
class SLBridgeAdmin(admin.ModelAdmin):
|
||||
model = SLBridge
|
||||
|
||||
list_display = ("label",)
|
||||
fields = ("label",)
|
||||
search_fields = ("label",)
|
||||
|
||||
|
||||
class StabilityAdmin(admin.ModelAdmin):
|
||||
model = Stability
|
||||
|
||||
list_display = (
|
||||
"gymnast",
|
||||
"anterior_chain",
|
||||
"posterior_chain_left",
|
||||
"posterior_chain_right",
|
||||
"leg_lowering",
|
||||
)
|
||||
list_filter = (("gymnast", RelatedDropdownFilter),)
|
||||
search_fields = (
|
||||
"gymnast__firstname",
|
||||
"gymnast__lastname",
|
||||
)
|
||||
autocomplete_fields = ("gymnast",)
|
||||
|
||||
|
||||
admin.site.register(Plan, PlanAdmin)
|
||||
admin.site.register(Note, NoteAdmin)
|
||||
admin.site.register(Point, PointAdmin)
|
||||
admin.site.register(Chrono, ChronoAdmin)
|
||||
admin.site.register(Injury, InjuryAdmin)
|
||||
admin.site.register(WellBeing, WellBeingAdmin)
|
||||
admin.site.register(InjuryType, InjuryTypeAdmin)
|
||||
admin.site.register(LearnedSkill, LearnedSkillAdmin)
|
||||
admin.site.register(HeightWeight, HeightWeightAdmin)
|
||||
admin.site.register(ChronoDetails, ChronoDetailsAdmin)
|
||||
|
@ -273,3 +322,7 @@ admin.site.register(InjuryLocation, InjuryLocationAdmin)
|
|||
admin.site.register(SeasonInformation, SeasonInformationAdmin)
|
||||
admin.site.register(GymnastHasRoutine, GymnastHasRoutineAdmin)
|
||||
admin.site.register(NumberOfRoutineDone, NumberOfRoutineDoneAdmin)
|
||||
|
||||
admin.site.register(SLBridge, SLBridgeAdmin)
|
||||
admin.site.register(SidePlankLegRaise, SidePlankLegRaiseAdmin)
|
||||
admin.site.register(Stability, StabilityAdmin)
|
||||
|
|
|
@ -186,6 +186,7 @@ class InjuryForm(forms.ModelForm):
|
|||
fields = (
|
||||
"gymnast",
|
||||
"date",
|
||||
"injury_type",
|
||||
"mechanism",
|
||||
"location",
|
||||
"body_side",
|
||||
|
@ -203,6 +204,7 @@ class InjuryForm(forms.ModelForm):
|
|||
),
|
||||
"gymnast": forms.HiddenInput(),
|
||||
"skill": forms.HiddenInput(),
|
||||
"injury_type": forms.Select(attrs={"class": "form-control selectpicker"}),
|
||||
"mechanism": forms.Select(attrs={"class": "form-control selectpicker"}),
|
||||
"location": forms.Select(attrs={"class": "form-control selectpicker"}),
|
||||
"body_side": forms.Select(attrs={"class": "form-control selectpicker"}),
|
||||
|
|
|
@ -23,6 +23,13 @@ INJURY_BODY_SIDE_CHOICE = (
|
|||
(3, "Both"),
|
||||
)
|
||||
|
||||
LUMBAR_STABILITY_CHOICE = (
|
||||
(0, "Not able to maintain pressure"),
|
||||
(1, "Step 1: OK"),
|
||||
(2, "Step 2: OK"),
|
||||
(3, "Step 3: OK"),
|
||||
)
|
||||
|
||||
ROUTINE_TYPE_CHOICE = (
|
||||
(0, "Other"),
|
||||
(1, "Q1R1"),
|
||||
|
@ -152,6 +159,21 @@ class InjuryLocation(models.Model):
|
|||
return f"{self.label}"
|
||||
|
||||
|
||||
class InjuryType(models.Model):
|
||||
"""
|
||||
Classe représentant les types de blessures
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Injury Type"
|
||||
verbose_name_plural = "Injury Types"
|
||||
|
||||
label = models.CharField(max_length=100, null=False, blank=False)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.label}"
|
||||
|
||||
|
||||
class Injury(Markdownizable, Seasonisable):
|
||||
"""
|
||||
La classe `Injury` permet d'indiquer qu'un gymnaste a eu une blessure, en liaison avec un
|
||||
|
@ -180,10 +202,19 @@ class Injury(Markdownizable, Seasonisable):
|
|||
)
|
||||
location = models.ForeignKey(
|
||||
InjuryLocation,
|
||||
verbose_name="Location",
|
||||
verbose_name="Injury Location",
|
||||
related_name="injuries",
|
||||
on_delete=models.CASCADE,
|
||||
)
|
||||
injury_type = models.ForeignKey(
|
||||
InjuryType,
|
||||
verbose_name="Injury Type",
|
||||
related_name="injuries",
|
||||
on_delete=models.SET_NULL,
|
||||
default=None,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
body_side = models.PositiveSmallIntegerField(
|
||||
choices=INJURY_BODY_SIDE_CHOICE, verbose_name="Body side"
|
||||
)
|
||||
|
@ -538,3 +569,58 @@ class SeasonInformation(models.Model):
|
|||
self.category,
|
||||
self.club,
|
||||
)
|
||||
|
||||
|
||||
class SLBridge(models.Model):
|
||||
""" """
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Stability - SLBridge"
|
||||
|
||||
label = models.CharField(max_length=100, null=False, blank=False)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.label}"
|
||||
|
||||
|
||||
class SidePlankLegRaise(models.Model):
|
||||
""" """
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Stability - SidePlankLegRaise"
|
||||
|
||||
label = models.CharField(max_length=100, null=False, blank=False)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.label}"
|
||||
|
||||
|
||||
class Stability(Seasonisable):
|
||||
"""Classe représentant l'intensité d'un entraînement"""
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Stability"
|
||||
verbose_name_plural = "Stabilities"
|
||||
|
||||
gymnast = models.ForeignKey(
|
||||
Gymnast, on_delete=models.CASCADE, related_name="stabilitytests"
|
||||
)
|
||||
anterior_chain = models.PositiveSmallIntegerField(
|
||||
verbose_name="Anterior Chain"
|
||||
)
|
||||
posterior_chain_left = models.PositiveSmallIntegerField(
|
||||
verbose_name="Posterior Chain Left"
|
||||
)
|
||||
posterior_chain_right = models.PositiveSmallIntegerField(
|
||||
verbose_name="Posterior Chain Right"
|
||||
)
|
||||
leg_lowering = models.PositiveSmallIntegerField(
|
||||
choices=LUMBAR_STABILITY_CHOICE,
|
||||
verbose_name="Leg Lowering: lumbar stability",
|
||||
)
|
||||
sl_bridge = models.ManyToManyField(
|
||||
SLBridge, related_name="stabilitytests", symmetrical=False
|
||||
)
|
||||
side_plank_leg_raise = models.ManyToManyField(
|
||||
SidePlankLegRaise, related_name="stabilitytests", symmetrical=False
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue