Add form to update skill informations

This commit is contained in:
Gregory Trullemans 2022-10-15 18:58:44 +02:00
parent 05650b210f
commit a3123d469f
4 changed files with 57 additions and 3 deletions

View File

@ -88,15 +88,15 @@
<br /> <br />
</div> </div>
<div class="col-md-6 alert {% if request.session.template == 0 %}skill-info{% else %}alert-secondary{% endif %} mr-0"> <div class="col-md-6 alert {% if request.session.template == 0 %}skill-info{% else %}alert-secondary{% endif %} mr-0">
<p>From <a href="#">{{ skill.departure }}</a>, <p>From <a href="#">{{ skill.departure }}</a>,
{% if skill.rotation %} {% if skill.rotation %}
<a href="#">{{ skill.rotation }}</a> quart of <a href="#">{{ skill.get_rotation_type_display }}</a> rotation <a href="#">{{ skill.rotation }}</a> quart of <a href="#">{{ skill.get_rotation_type_display }}</a> rotation
{% else %} {% else %}
straight jump straight jump
{% endif %} {% endif %}
{% if skill.twist %} {% if skill.twist %}
with <a href="#">{{ skill.twist }} half-twist</a> with <a href="#">{{ skill.twist }} half-twist</a>
{% endif %} {% endif %}
in a <a href="#">{{ skill.get_position_display }}</a> position, landing on <a href="#">{{ skill.landing }}</a>. in a <a href="#">{{ skill.get_position_display }}</a> position, landing on <a href="#">{{ skill.landing }}</a>.
</p> </p>
<br /> <br />
@ -105,6 +105,9 @@
{% else %} {% else %}
<p class="text-muted">No more informations provided for this skill.</p> <p class="text-muted">No more informations provided for this skill.</p>
{% endif %} {% endif %}
<a href="{% url 'skill_update' skill.id %}">
<span class="tim-icons icon-pencil text-warning"></span>
</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,11 +1,28 @@
from django import forms from django import forms
from .models import ( from .models import (
Skill,
Routine, Routine,
RoutineSkill RoutineSkill
) )
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
}
),
}
class RoutineForm(forms.ModelForm): class RoutineForm(forms.ModelForm):
class Meta: class Meta:
model = Routine model = Routine

View File

@ -11,6 +11,11 @@ urlpatterns = [
path(r"skill/lookup/", views.skill_lookup, name="skill_lookup"), path(r"skill/lookup/", views.skill_lookup, name="skill_lookup"),
path(r"skill/search/", views.skill_listing, name="skill_search"), path(r"skill/search/", views.skill_listing, name="skill_search"),
path(r"skill/<int:skill_id>/", views.skill_details, name="skill_details"), path(r"skill/<int:skill_id>/", views.skill_details, name="skill_details"),
path(
r"skill/<int:skill_id>/edit/",
views.skill_create_or_update,
name="skill_update"
),
path(r"skill/<int:skill_id>/tree/", views.skill_tree, name="skill_tree"), path(r"skill/<int:skill_id>/tree/", views.skill_tree, name="skill_tree"),
path( path(
r"skill/prerequisiteless/", r"skill/prerequisiteless/",

View File

@ -8,6 +8,7 @@ from django.urls import reverse
from ultron.people.models import Gymnast from ultron.people.models import Gymnast
from .forms import ( from .forms import (
SkillForm,
RoutineForm, RoutineForm,
RoutineSkillForm, RoutineSkillForm,
) )
@ -138,6 +139,34 @@ def skill_details(request, skill_id):
return render(request, "objectives/skills/details.html", context) return render(request, "objectives/skills/details.html", context)
@login_required
@require_http_methods(["GET", "POST"])
def skill_create_or_update(request, skill_id=None):
"""Création ou modification d'un saut.
Args:
skill_id (int): identifiant d'un object de classe <Skill>.
"""
if skill_id:
skill = get_object_or_404(Skill, pk=skill_id)
else:
skill = None
if request.method == "POST":
form = SkillForm(request.POST, instance=skill)
if form.is_valid():
skill = form.save()
return HttpResponseRedirect(reverse("skill_details", args=(skill.pk,)))
else:
return render(request, "objectives/skill/create.html", {"form": form})
form = SkillForm(instance=skill)
context = {"form": form, "skill_id": skill_id}
return render(request, "objectives/skills/create.html", context)
@login_required @login_required
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def routine_listing(request, gymnast_id=None): def routine_listing(request, gymnast_id=None):