From e7c9e75d8c486bfcbe8d243c50cebdb2a553bbe7 Mon Sep 17 00:00:00 2001
From: Trullemans Gregory
Date: Thu, 18 Nov 2021 21:36:15 +0100
Subject: [PATCH] Adding points, accidents and minor bugs fixes
---
Ultron/urls.py | 3 +-
followup/admin.py | 14 ++-
followup/forms.py | 43 ++++++-
followup/migrations/0001_initial.py | 67 ----------
followup/migrations/0002_point.py | 31 -----
followup/migrations/__init__.py | 0
followup/models.py | 32 +++++
followup/urls.py | 13 ++
followup/views.py | 94 +++++++++++---
location/migrations/0001_initial.py | 63 ----------
.../migrations/0002_auto_20211116_0942.py | 22 ----
location/migrations/__init__.py | 0
people/admin.py | 18 +--
people/migrations/0001_initial.py | 48 -------
people/migrations/0002_auto_20211116_1144.py | 24 ----
people/migrations/__init__.py | 0
people/models.py | 35 +-----
planning/migrations/0001_initial.py | 70 -----------
planning/migrations/__init__.py | 0
profiles/migrations/0001_initial.py | 27 ----
profiles/migrations/__init__.py | 0
templates/base.html | 3 +-
templates/followup/accidents/create.html | 117 ++++++++++++++++++
templates/followup/accidents/details.html | 34 +++++
templates/followup/accidents/list.html | 74 +++++++++++
templates/followup/chronos/list.html | 2 +-
templates/gymnasts/details.html | 14 +--
27 files changed, 425 insertions(+), 423 deletions(-)
delete mode 100644 followup/migrations/0001_initial.py
delete mode 100644 followup/migrations/0002_point.py
delete mode 100644 followup/migrations/__init__.py
delete mode 100644 location/migrations/0001_initial.py
delete mode 100644 location/migrations/0002_auto_20211116_0942.py
delete mode 100644 location/migrations/__init__.py
delete mode 100644 people/migrations/0001_initial.py
delete mode 100644 people/migrations/0002_auto_20211116_1144.py
delete mode 100644 people/migrations/__init__.py
delete mode 100644 planning/migrations/0001_initial.py
delete mode 100644 planning/migrations/__init__.py
delete mode 100644 profiles/migrations/0001_initial.py
delete mode 100644 profiles/migrations/__init__.py
create mode 100644 templates/followup/accidents/create.html
create mode 100644 templates/followup/accidents/details.html
create mode 100644 templates/followup/accidents/list.html
diff --git a/Ultron/urls.py b/Ultron/urls.py
index b14f1aacf1..dbe477a801 100644
--- a/Ultron/urls.py
+++ b/Ultron/urls.py
@@ -40,9 +40,10 @@ urlpatterns = [
# Follow-up management
path(r"chrono/", include(followup.urls.chrono_urlpatterns)),
- path(r"skill/", include(followup.urls.skill_urlpatterns)),
path(r"learnedskill/", include(followup.urls.learnedskill_urlpatterns)),
path(r"score/", include(followup.urls.score_urlpatterns)),
+ path(r"accident/", include(followup.urls.accident_urlpatterns)),
+ path(r"skill/", include(followup.urls.skill_urlpatterns)),
# Planning management
path(r"event/", include(planning.urls.event_urlpatterns)),
diff --git a/followup/admin.py b/followup/admin.py
index 80b6f01463..75f6ecd722 100644
--- a/followup/admin.py
+++ b/followup/admin.py
@@ -1,5 +1,5 @@
from django.contrib import admin
-from .models import Chrono, LearnedSkill, Skill, Point
+from .models import Chrono, LearnedSkill, Skill, Point, Accident
from django_extensions.admin import ForeignKeyAutocompleteAdmin
@@ -51,6 +51,18 @@ class PointAdmin(admin.ModelAdmin):
list_filter = ("gymnast", "event", "routine_type")
+
+class AccidentAdmin(admin.ModelAdmin):
+ model = Accident
+
+ fields = ("date", "gymnast", "informations") # educative
+ list_display = ("date", "gymnast") # educative
+ list_filter = ("date",)
+ search_fields = ("date", "gymnast") # educative
+ autocomplete_fields = ["gymnast"] # educative
+
+
+admin.site.register(Accident, AccidentAdmin)
admin.site.register(Point, PointAdmin)
admin.site.register(Chrono, ChronoAdmin)
admin.site.register(LearnedSkill, LearnedSkillAdmin)
diff --git a/followup/forms.py b/followup/forms.py
index d12e2f5865..b4f526bc76 100644
--- a/followup/forms.py
+++ b/followup/forms.py
@@ -5,7 +5,7 @@ from datetime import date
from django.db import models
from django.forms import fields, widgets
-from .models import Chrono, LearnedSkill, Point
+from .models import Chrono, LearnedSkill, Point, Accident
class ChronoForm(forms.ModelForm):
class Meta:
@@ -146,3 +146,44 @@ class ScoreForm(forms.ModelForm):
}
)
)
+
+
+class AccidentForm(forms.ModelForm):
+ class Meta:
+ model = Accident
+ fields = ("gymnast", "date", "informations") # , "educative"
+ widgets = {
+ "date": forms.DateInput(
+ attrs={
+ "class": "form-control datepicker",
+ # "value": date.today().strftime("%Y-%m-%d"),
+ }
+ ),
+ "gymnast": forms.HiddenInput(),
+ # "educative": forms.HiddenInput(),
+ "informations": forms.Textarea(
+ attrs={
+ "class": "form-control",
+ "placeholder": "Informations about accident: context (why, where, …), consequencies, …",
+ }
+ ),
+ }
+
+ gymnast_related = forms.CharField(
+ widget=forms.TextInput(
+ attrs={
+ "class": "form-control",
+ "placeholder": "Searching gymnast…",
+ "data-ref": "#id_gymnast",
+ }
+ )
+ )
+ # educative_related = forms.CharField(
+ # widget=forms.TextInput(
+ # attrs={
+ # "class": "form-control",
+ # "placeholder": "Searching skill…",
+ # "data-ref": "#id_educative",
+ # }
+ # )
+ # )
\ No newline at end of file
diff --git a/followup/migrations/0001_initial.py b/followup/migrations/0001_initial.py
deleted file mode 100644
index e67c124852..0000000000
--- a/followup/migrations/0001_initial.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:07
-
-import datetime
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('people', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Skill',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('short_label', models.CharField(max_length=50, verbose_name='Short label')),
- ('long_label', models.CharField(max_length=255, verbose_name='Long label')),
- ('difficulty', models.DecimalField(decimal_places=1, max_digits=3, verbose_name='Difficulty')),
- ('level', models.PositiveSmallIntegerField(default=0)),
- ('rank', models.PositiveSmallIntegerField(default=0)),
- ('numeric_notation', models.CharField(max_length=25)),
- ('ancestor', models.ManyToManyField(related_name='_followup_skill_ancestor_+', to='followup.Skill')),
- ],
- options={
- 'verbose_name': 'Skill',
- 'verbose_name_plural': 'Skills',
- 'ordering': ['short_label'],
- },
- ),
- migrations.CreateModel(
- name='Chrono',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('type', models.PositiveSmallIntegerField(choices=[(0, '10 |'), (1, 'Routine')], verbose_name='Chrono type')),
- ('score_type', models.PositiveSmallIntegerField(choices=[(0, 'Chrono'), (1, 'ToF')], verbose_name='Score type')),
- ('score', models.DecimalField(decimal_places=3, max_digits=5)),
- ('tof', models.DecimalField(blank=True, decimal_places=3, max_digits=5, null=True)),
- ('date', models.DateField(default=datetime.date.today, verbose_name='Date')),
- ('gymnast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chronos', to='people.gymnast', verbose_name='gymnast')),
- ],
- options={
- 'verbose_name': 'Chrono',
- 'verbose_name_plural': 'Chronos',
- 'ordering': ['date', 'gymnast'],
- },
- ),
- migrations.CreateModel(
- name='LearnedSkill',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('cando', models.PositiveSmallIntegerField(choices=[(0, 'No'), (1, 'With help'), (2, 'Without help'), (3, 'Chained')], verbose_name='Can do type')),
- ('date', models.DateField(default=datetime.date.today, verbose_name='Date')),
- ('gymnast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='can_do_skill', to='people.gymnast', verbose_name='gymnast')),
- ('skill', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='done_by_gymnasts', to='followup.skill', verbose_name='Skill')),
- ],
- options={
- 'verbose_name': 'Learned Skill',
- 'verbose_name_plural': 'Learned Skills',
- 'unique_together': {('gymnast', 'skill', 'date')},
- },
- ),
- ]
diff --git a/followup/migrations/0002_point.py b/followup/migrations/0002_point.py
deleted file mode 100644
index ff130b00f9..0000000000
--- a/followup/migrations/0002_point.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 16:29
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('people', '0002_auto_20211116_1144'),
- ('planning', '0001_initial'),
- ('followup', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Point',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('routine_type', models.PositiveSmallIntegerField(choices=[(0, 'Routine 1'), (1, 'Routine 2'), (2, 'Final')])),
- ('point_execution', models.DecimalField(decimal_places=3, max_digits=5)),
- ('point_difficulty', models.DecimalField(decimal_places=1, max_digits=3)),
- ('point_time_of_flight', models.DecimalField(decimal_places=3, max_digits=5)),
- ('point_horizontal_displacement', models.DecimalField(decimal_places=3, max_digits=4)),
- ('penality', models.DecimalField(decimal_places=1, max_digits=3)),
- ('total', models.DecimalField(decimal_places=3, max_digits=6)),
- ('event', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='planning.event')),
- ('gymnast', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='people.gymnast')),
- ],
- ),
- ]
diff --git a/followup/migrations/__init__.py b/followup/migrations/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/followup/models.py b/followup/models.py
index 6290f4404f..39abf3cf4f 100644
--- a/followup/models.py
+++ b/followup/models.py
@@ -2,6 +2,7 @@ from django.db import models
from datetime import date
from django.db.models.deletion import CASCADE
+from tools.models import Markdownizable
from people.models import Gymnast
from planning.models import Event
@@ -45,6 +46,37 @@ class Chrono(models.Model):
)
+class Accident(Markdownizable):
+ """
+ La classe `Accident` permet d'indiquer qu'un gymnaste a eu un accident.
+ """
+
+ class Meta:
+ verbose_name = "Accident"
+ verbose_name_plural = "Accidents"
+ # ordering = ["date", "gymnast"]
+
+ gymnast = models.ForeignKey(
+ Gymnast,
+ verbose_name="Gymnast",
+ related_name="accident",
+ on_delete=models.CASCADE,
+ )
+ # educative = models.ForeignKey(
+ # "objective.Skill",
+ # verbose_name="Skill",
+ # related_name="accident",
+ # on_delete=models.CASCADE,
+ # )
+ date = models.DateField(verbose_name="Date")
+
+ def __str__(self):
+ return "%s(%s)" % (
+ self.gymnast,
+ self.date,
+ )
+
+
class Skill(models.Model):
"""
Représente la ligne d'apprentissage.
diff --git a/followup/urls.py b/followup/urls.py
index c9ba598e32..8fac5405fd 100644
--- a/followup/urls.py
+++ b/followup/urls.py
@@ -34,4 +34,17 @@ score_urlpatterns = [
path(r"add", views.score_create_or_update, name="score_create"),
path(r"edit/", views.score_create_or_update, name="score_update"),
path(r"", views.score_listing),
+]
+
+# Accident
+accident_urlpatterns = [
+ path(r"search/", views.accident_listing),
+ path(r"", views.accident_listing, name="accident_list"),
+ path(r"add/", views.accident_create_or_update, name="accident_create"),
+ path(
+ r"edit//",
+ views.accident_create_or_update,
+ name="accident_update",
+ ),
+ path(r"/", views.accident_detail, name="accident_details"),
]
\ No newline at end of file
diff --git a/followup/views.py b/followup/views.py
index c50166eec3..8681d5bfd1 100644
--- a/followup/views.py
+++ b/followup/views.py
@@ -5,8 +5,8 @@ from django.http import HttpResponse, HttpResponseRedirect
from django.db.models import Q
from people.models import Gymnast
-from .models import Chrono, Skill, Point
-from .forms import ChronoForm, LearnedSkillForm, ScoreForm
+from .models import Chrono, Skill, Point, Accident
+from .forms import ChronoForm, LearnedSkillForm, ScoreForm, AccidentForm
import simplejson
@@ -39,25 +39,17 @@ def chrono_create_or_update(request, chronoid=None, gymnastid=None):
form = ChronoForm(request.POST, instance=chrono)
if form.is_valid():
- print(form.cleaned_data)
+ new_chrono = form.save(commit=False)
# Calcul du ToF
- if form.cleaned_data['score_type'] == 1:
- form.cleaned_data['tof'] = form.cleaned_data['score']
+ if new_chrono.score_type == 1:
+ new_chrono.tof = new_chrono.score
else:
- tof = round(( form.cleaned_data['score'] * 13 ) / 15, 3) * 1000
+ tof = round(( new_chrono.score * 13 ) / 15, 3) * 1000
tof = tof - (tof % 5)
- form.cleaned_data['tof'] = tof / 1000
+ new_chrono.tof = tof / 1000
- print(form.cleaned_data)
- form.save()
- if chronoid is not None:
- return HttpResponseRedirect("/chrono/")
- elif gymnastid is not None:
- return HttpResponseRedirect(
- "/gymnast/" + str(gymnastid)
- )
- else:
- return HttpResponseRedirect("/chrono/")
+ new_chrono.save()
+ return HttpResponseRedirect("/gymnast/details/" + str(new_chrono.gymnast.id) + "/")
else:
if data is None and gymnastid is not None:
@@ -223,3 +215,71 @@ def score_listing(request):
context = {"score_list": score_list}
return render(request, "followup/scores/list.html", context)
+
+
+
+
+@login_required
+@require_http_methods(["GET"])
+def accident_listing(request):
+ """
+ Récupère la liste des accidents suivant un pattern si celui-ci est définit.
+ """
+ pattern = request.GET.get("pattern", None)
+
+ if pattern:
+ accident_list = Accident.objects.filter(
+ Q(gymnast__lastname__icontains=pattern)
+ | Q(gymnast__firstname__icontains=pattern)
+ )
+ else:
+ accident_list = Accident.objects.all()
+
+ context = {"accident_list": accident_list}
+ return render(request, "followup/accidents/list.html", context)
+
+
+@login_required
+@require_http_methods(["GET", "POST"])
+def accident_create_or_update(request, accidentid=None):
+ """
+ Formulaire de création d'un nouvel accident.
+ """
+
+ if accidentid:
+ accident = get_object_or_404(Accident, pk=accidentid)
+ data = {
+ "gymnast_related": accident.gymnast,
+ "educative_related": accident.educative,
+ }
+ else:
+ accident = None
+ data = {}
+
+ if request.method == "POST":
+ form = AccidentForm(request.POST, instance=accident)
+
+ if form.is_valid():
+ form.save()
+ if accidentid:
+ return HttpResponseRedirect("/accident/" + str(accidentid) + "/")
+ else:
+ return HttpResponseRedirect("/accident/")
+ else:
+
+ form = AccidentForm(instance=accident, initial=data)
+
+ context = {"form": form, "accidentid": accidentid}
+ return render(request, "followup/accidents/create.html", context)
+
+
+@login_required
+@require_http_methods(["GET"])
+def accident_detail(request, accidentid):
+ """
+ Récupère toutes les informations d'un accident.
+ """
+ accident = get_object_or_404(Accident, pk=accidentid)
+ context = {"accident": accident}
+ return render(request, "followup/accidents/details.html", context)
+
diff --git a/location/migrations/0001_initial.py b/location/migrations/0001_initial.py
deleted file mode 100644
index 427ccf6dc9..0000000000
--- a/location/migrations/0001_initial.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:07
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ]
-
- operations = [
- migrations.CreateModel(
- name='Country',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('nameus', models.CharField(max_length=255, verbose_name='English name')),
- ('namefr', models.CharField(max_length=255, verbose_name='French Name')),
- ('nationality', models.CharField(max_length=255, verbose_name='Nationality')),
- ('iso2', models.CharField(max_length=2)),
- ('iso3', models.CharField(max_length=3)),
- ('isonum', models.PositiveSmallIntegerField()),
- ],
- options={
- 'verbose_name': 'Country',
- 'verbose_name_plural': 'Countries',
- },
- ),
- migrations.CreateModel(
- name='Place',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=255, verbose_name='Name')),
- ('address', models.CharField(max_length=255, verbose_name='Address')),
- ('postal', models.PositiveIntegerField(verbose_name='Postal code')),
- ('city', models.CharField(max_length=255, verbose_name='City')),
- ('nbkm', models.PositiveIntegerField(blank=True, help_text='in km', null=True)),
- ('timing', models.PositiveIntegerField(blank=True, help_text='in minutes', null=True)),
- ('active', models.BooleanField(default=1, verbose_name='Active')),
- ('country', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='location.country', verbose_name='Country')),
- ],
- options={
- 'verbose_name': 'Place',
- 'verbose_name_plural': 'Places',
- },
- ),
- migrations.CreateModel(
- name='Club',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=255, verbose_name='Name')),
- ('acronym', models.CharField(max_length=4, verbose_name='Acronym')),
- ('active', models.BooleanField(default=1, verbose_name='Active')),
- ('place', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='location.place', verbose_name='Place')),
- ],
- options={
- 'verbose_name': 'Club',
- 'verbose_name_plural': 'Clubs',
- },
- ),
- ]
diff --git a/location/migrations/0002_auto_20211116_0942.py b/location/migrations/0002_auto_20211116_0942.py
deleted file mode 100644
index 5e1c78d8b1..0000000000
--- a/location/migrations/0002_auto_20211116_0942.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:42
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('location', '0001_initial'),
- ]
-
- operations = [
- migrations.RenameField(
- model_name='country',
- old_name='nameus',
- new_name='name',
- ),
- migrations.RemoveField(
- model_name='country',
- name='namefr',
- ),
- ]
diff --git a/location/migrations/__init__.py b/location/migrations/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/people/admin.py b/people/admin.py
index 0ebae42a19..5b1f42ba9d 100644
--- a/people/admin.py
+++ b/people/admin.py
@@ -6,17 +6,19 @@ class GymnastAdmin(admin.ModelAdmin):
model = Gymnast
fields = (
- "last_name",
- "first_name",
- "birthdate",
- "gender",
- "is_active",
+ 'last_name',
+ 'first_name',
+ 'birthdate',
+ 'gender',
+ 'trainings_by_week',
+ 'hours_by_week',
+ 'is_active',
# "club"
)
- list_display = ("last_name", "first_name", "age", "is_active") # , "club"
- list_filter = ("gender", "is_active") # , "club"
- search_fields = ("last_name", "first_name")
+ list_display = ('last_name', 'first_name', 'age', 'is_active') # , "club"
+ list_filter = ('gender', 'is_active') # , "club"
+ search_fields = ('last_name', 'first_name')
# autocomplete_fields = ("club",)
admin.site.register(Gymnast, GymnastAdmin)
diff --git a/people/migrations/0001_initial.py b/people/migrations/0001_initial.py
deleted file mode 100644
index b812044725..0000000000
--- a/people/migrations/0001_initial.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:07
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('location', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Gymnast',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('informations', models.TextField(blank=True, help_text='Only MarkDown is authorized', null=True, verbose_name='Comments')),
- ('last_name', models.CharField(max_length=40)),
- ('first_name', models.CharField(max_length=25)),
- ('birthdate', models.DateField(verbose_name='Date de naissance')),
- ('gender', models.PositiveSmallIntegerField(choices=[(0, 'Male'), (1, 'Female')], verbose_name='Sexe')),
- ('is_active', models.BooleanField(default=1, verbose_name='Active')),
- ('hours_by_week', models.PositiveSmallIntegerField(verbose_name='Hours by week')),
- ('club', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='gymnast', to='location.club')),
- ],
- options={
- 'verbose_name': 'Gymnast',
- 'verbose_name_plural': 'Gymnasts',
- },
- ),
- migrations.CreateModel(
- name='Accident',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('informations', models.TextField(blank=True, help_text='Only MarkDown is authorized', null=True, verbose_name='Comments')),
- ('date', models.DateField(verbose_name='Date')),
- ('indisponibility', models.PositiveIntegerField()),
- ('gymnast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accident', to='people.gymnast', verbose_name='Gymnast')),
- ],
- options={
- 'verbose_name': 'Accident',
- 'verbose_name_plural': 'Accidents',
- },
- ),
- ]
diff --git a/people/migrations/0002_auto_20211116_1144.py b/people/migrations/0002_auto_20211116_1144.py
deleted file mode 100644
index 7dc12afa47..0000000000
--- a/people/migrations/0002_auto_20211116_1144.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 11:44
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('people', '0001_initial'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='gymnast',
- name='trainings_by_week',
- field=models.PositiveSmallIntegerField(default=0, verbose_name='# Training by week'),
- preserve_default=False,
- ),
- migrations.AlterField(
- model_name='gymnast',
- name='hours_by_week',
- field=models.PositiveSmallIntegerField(verbose_name='# Hours by week'),
- ),
- ]
diff --git a/people/migrations/__init__.py b/people/migrations/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/people/models.py b/people/models.py
index 3d577ac388..ee1a932728 100644
--- a/people/models.py
+++ b/people/models.py
@@ -49,37 +49,4 @@ class Gymnast(Markdownizable):
@property
def next_age(self):
""" Renvoie l'âge prochain du gymnaste. """
- return (self.age) + 1
-
-
-
-
-class Accident(Markdownizable):
- """La classe `Accident` permet d'indiquer qu'un gymnaste est tombé durant un saut.
- """
-
- class Meta:
- verbose_name = "Accident"
- verbose_name_plural = "Accidents"
- # ordering = ["date", "gymnast"]
-
- gymnast = models.ForeignKey(
- Gymnast,
- verbose_name="Gymnast",
- related_name="accident",
- on_delete=models.CASCADE,
- )
- # educative = models.ForeignKey(
- # "objective.Skill",
- # verbose_name="Skill",
- # related_name="accident",
- # on_delete=models.CASCADE,
- # )
- date = models.DateField(verbose_name="Date")
- indisponibility = models.PositiveIntegerField(null=False, blank=False)
-
- def __str__(self):
- return "%s(%s)" % (
- self.gymnast,
- self.date,
- )
\ No newline at end of file
+ return (self.age) + 1
\ No newline at end of file
diff --git a/planning/migrations/0001_initial.py b/planning/migrations/0001_initial.py
deleted file mode 100644
index 3e119a302c..0000000000
--- a/planning/migrations/0001_initial.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:07
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('people', '0001_initial'),
- ('location', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Event',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('informations', models.TextField(blank=True, help_text='Only MarkDown is authorized', null=True, verbose_name='Comments')),
- ('datebegin', models.DateTimeField(verbose_name='Début')),
- ('dateend', models.DateTimeField(blank=True, verbose_name='Fin')),
- ('name', models.CharField(max_length=255, verbose_name='Nom')),
- ],
- options={
- 'verbose_name': 'Event',
- 'verbose_name_plural': 'Event',
- },
- ),
- migrations.CreateModel(
- name='EventType',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=255, verbose_name='Nom')),
- ('acronym', models.CharField(max_length=15, verbose_name='Acronyme')),
- ],
- options={
- 'verbose_name': 'Event Type',
- 'verbose_name_plural': 'Event Types',
- },
- ),
- migrations.CreateModel(
- name='Event_Participation',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('rank', models.PositiveSmallIntegerField(default=0)),
- ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='planning.event')),
- ('gymnast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='people.gymnast')),
- ],
- options={
- 'verbose_name': 'Event Participation',
- },
- ),
- migrations.AddField(
- model_name='event',
- name='eventtype',
- field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='planning.eventtype', verbose_name='Type'),
- ),
- migrations.AddField(
- model_name='event',
- name='gymnasts',
- field=models.ManyToManyField(related_name='participate_to', through='planning.Event_Participation', to='people.Gymnast', verbose_name='Participants'),
- ),
- migrations.AddField(
- model_name='event',
- name='place',
- field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='location.place'),
- ),
- ]
diff --git a/planning/migrations/__init__.py b/planning/migrations/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/profiles/migrations/0001_initial.py b/profiles/migrations/0001_initial.py
deleted file mode 100644
index c0bc932ad1..0000000000
--- a/profiles/migrations/0001_initial.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Generated by Django 3.2.8 on 2021-11-16 09:07
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Profile',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('template_color', models.PositiveSmallIntegerField(choices=[(0, 'Dark'), (1, 'Light')], default=0, verbose_name='Template')),
- ('sidebar_color', models.PositiveSmallIntegerField(choices=[(0, 'Purple'), (1, 'Blue'), (2, 'Green'), (3, 'Orange'), (4, 'Red')], default=0, verbose_name='Sidebar')),
- ('is_sidebar_minified', models.BooleanField(default=False)),
- ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
- ],
- ),
- ]
diff --git a/profiles/migrations/__init__.py b/profiles/migrations/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/templates/base.html b/templates/base.html
index 37b948d101..c93210b54f 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -59,8 +59,9 @@
- {{ gymnast.age }} years ({{ gymnast.birthdate | date:"d F Y" }})
{{ gymnast.get_orientation_display }}
- {{ gymnast.club.name }} - {{ gymnast.club.place.city }}
-
+ {{ gymnast.age }} years ({{ gymnast.birthdate | date:"d F Y" }})
{{ gymnast.get_orientation_display }}
+ {{ gymnast.club.name }} - {{ gymnast.club.place.city }}
+ {{ gymnast.trainings_by_week }} training/week - {{ gymnast.hours_by_week }} hours/week
+
{% if best_routine or best_straightjump %}
Bests Scores
@@ -155,10 +156,9 @@
]
},
{% endif %}
-
{% if routine_score %}
{
- label: 'L2',
+ label: 'Routine',
backgroundColor: 'rgb(255, 159, 64, 0.25)',
borderColor: 'rgb(255, 159, 64)',
fill: true,
@@ -179,8 +179,8 @@
xAxes: [{
type: "time",
time: {
- format: 'DD-MM-YYYY',
- round: 'day'
+ unit: 'day',
+ format: 'DD-MM-YYYY'
},
scaleLabel: {
display: true,