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

@ -105,6 +105,9 @@
{% else %}
<p class="text-muted">No more informations provided for this skill.</p>
{% endif %}
<a href="{% url 'skill_update' skill.id %}">
<span class="tim-icons icon-pencil text-warning"></span>
</a>
</div>
</div>
</div>

View File

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

View File

@ -11,6 +11,11 @@ urlpatterns = [
path(r"skill/lookup/", views.skill_lookup, name="skill_lookup"),
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>/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/prerequisiteless/",

View File

@ -8,6 +8,7 @@ from django.urls import reverse
from ultron.people.models import Gymnast
from .forms import (
SkillForm,
RoutineForm,
RoutineSkillForm,
)
@ -138,6 +139,34 @@ def skill_details(request, skill_id):
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
@require_http_methods(["GET"])
def routine_listing(request, gymnast_id=None):