Add gymnast trainer management.

This commit is contained in:
Gregory Trullemans 2024-04-24 10:04:37 +02:00
parent 0f2fcda740
commit 9a127cfb87
29 changed files with 271 additions and 199 deletions

View File

@ -202,8 +202,6 @@
</div>
</div>
<script src="{% static "js/plugins/perfect-scrollbar.jquery_1.4.0.min.js" %}"></script>
<!-- Plugin for Sorting Tables -->
<script src="{% static "js/plugins/jquery.tablesorter_2.0.5b.js" %}"></script>
<!-- Forms Validations Plugin -->
@ -250,79 +248,6 @@
$full_page.attr('filter-color', color);
$sidebar_responsive.attr('data', color);
// $('.fixed-plugin a').click(function(event) {
// if ($(this).hasClass('switch-trigger')) {
// if (event.stopPropagation) {
// event.stopPropagation();
// } else if (window.event) {
// window.event.cancelBubble = true;
// }
// }
// });
// $('.fixed-plugin .background-color span').click(function() {
// $(this).siblings().removeClass('active');
// $(this).addClass('active');
// var new_color = $(this).data('color');
// if ($sidebar.length != 0)
// $sidebar.attr('data', new_color);
// if ($main_panel.length != 0)
// $main_panel.attr('data', new_color);
// if ($full_page.length != 0)
// $full_page.attr('filter-color', new_color);
// if ($sidebar_responsive.length != 0)
// $sidebar_responsive.attr('data', new_color);
// });
// $('.switch-sidebar-mini input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (sidebar_mini_active == true) {
// $('body').removeClass('sidebar-mini');
// sidebar_mini_active = false;
// blackDashboard.showSidebarMessage('Sidebar mini deactivated...');
// } else {
// $('body').addClass('sidebar-mini');
// sidebar_mini_active = true;
// blackDashboard.showSidebarMessage('Sidebar mini activated...');
// }
// // we simulate the window Resize so the charts will get updated in realtime.
// var simulateWindowResize = setInterval(function() {
// window.dispatchEvent(new Event('resize'));
// }, 180);
// // we stop the simulation of Window Resize after the animations are completed
// setTimeout(function() {
// clearInterval(simulateWindowResize);
// }, 1000);
// });
// $('.switch-change-color input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (white_color == true) {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').removeClass('white-content');
// }, 900);
// white_color = true; // false
// } else {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').addClass('white-content');
// }, 900);
// white_color = true;
// }
// });
$('.light-badge').click(function() {
$('body').addClass('white-content');
});
@ -330,10 +255,6 @@
$('.dark-badge').click(function() {
$('body').removeClass('white-content');
});
// $('#searchModal').on('shown.bs.modal', function() {
// $('#inlineFormInputGroup').trigger('focus')
// });
});
});
</script>

View File

@ -883,6 +883,11 @@
<p>Toutes ces données permettent aux coaches de pouvoir planifier la saison et d'avoir une vision du passé de l'élève.</p>
<br />
<p><b>Entraîneurs</b></p>
<p>L'application demande à chaque gymnaste d'encoder beaucoup d'informations, parfois très personnelles (taille, poids, …). L'elève à donc le choix de <b>QUI</b> peut voir ses informations.</p>
<p class="text-danger">Attention : en supprimant à un entraîneur le droit d'accès à vos informations, vous supprimez également la possibilité à ces entraîneurs d'encoder des informations pour vous (vous lier à un évènement, vous laisser une note, …).</p>
<br />
<h4 class="mt-2 mb-0" id="gym_report_title">Rapports</h4>
<p>Pour linstant la fonctionnalité est limitée : elle ne permet de générer un rapport que pour la dernière semaine et ne prend en compte que certaines données. Elle fera lobjet daméliorations futures.</p>

View File

@ -89,33 +89,21 @@
<script src="{% static "js/core/bootstrap.min.js" %}"></script>
<script src="{% static "js/plugins/perfect-scrollbar.jquery_1.4.0.min.js" %}"></script>
<script src="{% static "js/plugins/momentjs/moment_2.29.1.min.js" %}"></script>
<!-- Plugin for Switches, full documentation here: http://www.jque.re/plugins/version3/bootstrap.switch/ -->
<script src="{% static "js/plugins/bootstrap-switch_3.3.4.js" %}"></script>
<!-- Plugin for Sweet Alert -->
<script src="{% static "js/plugins/sweetalert2.min.js" %}"></script>
<!-- Plugin for Sorting Tables -->
<script src="{% static "js/plugins/jquery.tablesorter_2.0.5b.js" %}"></script>
<!-- Forms Validations Plugin -->
<script src="{% static "js/plugins/jquery.validate_1.17.0.min.js" %}"></script>
<!-- Plugin for the Wizard, full documentation here: https://github.com/VinceG/twitter-bootstrap-wizard -->
<script src="{% static "js/plugins/jquery.bootstrap-wizard_1.4.2.js" %}"></script>
<!-- Plugin for Select, full documentation here: http://silviomoreto.github.io/bootstrap-select -->
<script src="{% static "js/plugins/bootstrap-selectpicker_1.12.4.js" %}"></script>
<!-- Plugin for the DateTimePicker, full documentation here: https://eonasdan.github.io/bootstrap-datetimepicker/ -->
<script src="{% static "js/plugins/bootstrap-datetimepicker_4.17.47.js" %}"></script>
<!-- DataTables.net Plugin, full documentation here: https://datatables.net/ -->
<script src="{% static "js/plugins/datatables/datatables_1.12.1.min.js" %}"></script>
<!-- Plugin for Tags, full documentation here: https://github.com/bootstrap-tagsinput/bootstrap-tagsinputs -->
<script src="{% static "js/plugins/bootstrap-tagsinput_0.8.0.js" %}"></script>
<!-- Plugin for Fileupload, full documentation here: http://www.jasny.net/bootstrap/javascript/#fileinput -->
<script src="{% static "js/plugins/jasny-bootstrap_3.1.3.min.js" %}"></script>
<!-- Full Calendar Plugin, full documentation here: https://github.com/fullcalendar/fullcalendar -->
<script src="{% static "js/plugins/fullcalendar/main.js" %}"></script>
<!-- Notifications Plugin -->
<script src="{% static "js/plugins/bootstrap-notify_3.1.5.js" %}"></script>
<script src="{% static "js/plugins/datatables/datatables_2.0.5.js" %}"></script>
<!-- Control Center for Black Dashboard: parallax effects, scripts for the example pages etc -->
<script src="{% static "js/black-dashboard.min.js" %}"></script>
<script src="{% static "js/black-dashboard.js" %}"></script>
<!-- Jquery UI for autocomplete, etc. -->
<script src="{% static "js/plugins/jqueryui/jquery-ui.min.js" %}"></script>
<script type="text/javascript" >
$(function(){

View File

@ -1,5 +1,9 @@
from datetime import timedelta
from weasyprint import HTML, CSS
import pendulum
from django.db.models import Max
from django.conf import settings
from django.db.models import Q, F, OuterRef, Subquery
from django.shortcuts import render
from django.utils import timezone
@ -17,16 +21,11 @@ from jarvis.location.models import Place, Club
from jarvis.people.models import Gymnast
from jarvis.people.views import gymnast_details
from jarvis.planning.models import Event
from django.db.models import Max
from django.conf import settings
from .models import Citation
from jarvis.tools.models import from_date_to_week_number
from jarvis.tools.clean_name import clean_name
from jarvis.tools.models import Season
from weasyprint import HTML, CSS
import pendulum
from .models import Citation
def login(request):
@ -53,7 +52,9 @@ def login(request):
available_gymnast = []
gymnast_list = user.gymnasts.all()
print(gymnast_list)
for gymnast in gymnast_list:
print(gymnast.id)
available_gymnast.append(gymnast.id)
try:

View File

@ -19,7 +19,7 @@ from jarvis.core.global_vars import (
)
from jarvis.tools.models import Markdownizable, Seasonisable
from jarvis.people.models import Gymnast, GENDER_CHOICES
from jarvis.people.models import Gymnast
from jarvis.planning.models import Event
from jarvis.objective.models import Educative, Skill, Routine
from jarvis.location.models import Club

View File

@ -18,7 +18,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -29,28 +29,28 @@
<label for="id_gymnast" class="col-4 col-sm-3 col-form-label">Date <span class="text-danger"><b>*</b></span></label>
<div class="col-6 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
<label for="id_chrono_type" class="col-4 col-sm-3 col-form-label">Chrono Type <span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.chrono_type.errors %}has-danger{% endif %}">
{{ form.chrono_type }}
{% if form.chrono_type.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.chrono_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.chrono_type.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.chrono_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
<label for="id_score_type" class="col-4 col-sm-3 col-form-label">Score Type <span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.score_type.errors %}has-danger{% endif %}">
{{ form.score_type }}
{% if form.score_type.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.score_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.score_type.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.score_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
<label for="id_score" class="col-4 col-sm-3 col-form-label">Score <span class="text-danger"><b>*</b></span></label>
<div class="col-3 col-sm-3 col-md-4 col-lg-3 {% if form.score.errors %}has-danger{% endif %}">
{{ form.score }}
{% if form.score.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.score.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.score.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.score.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
{{ form.tof }}

View File

@ -27,7 +27,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -40,7 +40,7 @@
class="text-danger"><b>*</b></span></label>
<div class="col-6 col-sm-3 col-md-4 col-lg-4 col-xl-3 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -49,7 +49,7 @@
class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-3 col-md-3 col-lg-3 {% if form.height.errors %}has-danger{% endif %}">
{{ form.height }}
{% if form.height.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.height.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.height.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.height.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -57,7 +57,7 @@
<div
class="col-4 col-sm-3 col-md-3 col-lg-3 {% if form.hips_height.errors %}has-danger{% endif %}">
{{ form.hips_height }}
{% if form.hips_height.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.hips_height.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.hips_height.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.hips_height.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -65,7 +65,7 @@
class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-3 col-md-3 col-lg-3 {% if form.weight.errors %}has-danger{% endif %}">
{{ form.weight }}
{% if form.weight.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.weight.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.weight.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.weight.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group text-center">

View File

@ -18,7 +18,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -29,7 +29,7 @@
<label for="id_date" class="col-4 col-sm-3 col-form-label">{{ form.date.label }} <span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -37,42 +37,42 @@
<div class="col-8 col-sm-8 col-md-6 col-lg-6 col-xl-6 {% if form.skill.errors %}has-danger{% endif %}">
{{ form.skill }}
{{ form.skill_related }}
{% if form.skill.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.skill.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.skill.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-4 col-sm-3 col-md-4 col-lg-4 col-xl-4 {% if form.mechanism.errors %}has-danger{% endif %}">
{{ form.mechanism }}
{% if form.mechanism.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.mechanism.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.mechanism.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.mechanism.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-8 col-sm-6 col-md-8 col-lg-6 col-xl-8 {% if form.injury_type.errors %}has-danger{% endif %}">
{{ form.injury_type }}
{% if form.injury_type.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.injury_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.injury_type.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.injury_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_location" class="col-4 col-sm-3 col-form-label">{{ form.location.label }}<span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-5 col-md-6 col-lg-6 col-xl-6 {% if form.location.errors %}has-danger{% endif %}">
{{ form.location }}
{% if form.location.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.location.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.location.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.location.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_body_side" class="col-4 col-sm-3 col-form-label">{{ form.body_side.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.body_side.errors %}has-danger{% endif %}">
{{ form.body_side }}
{% if form.body_side.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.body_side.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.body_side.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.body_side.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_nb_week_off" class="col-4 col-sm-3 col-form-label"># Week off</label>
<div class="col-3 col-sm-2 col-md-4 col-lg-2 col-xl-3 {% if form.nb_week_off.errors %}has-danger{% endif %}">
{{ form.nb_week_off }}
{% if form.nb_week_off.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.nb_week_off.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.nb_week_off.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.nb_week_off.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">

View File

@ -39,8 +39,8 @@
{% endif %}
<th class="header text-left" style="width: 9%">Mechanism</th>
<th class="header text-left" style="width: 20%">Location</th>
<th class="header text-left" style="width: 8%">Side</th>
<th style="width: 20%">Skill</th>
<th class="header text-left" style="width: 16%">Side</th>
<th style="width: 12%">Skill</th>
<th style="width: 8%"># Week off</th>
</tr>
</thead>
@ -69,7 +69,7 @@
<td class="text-left">{{ injury.get_body_side_display }}</td>
<td class="text-left">
{% if injury.skill %}
<a href="{% url 'skill_details' injury.skill.id %}">{{ injury.skill }}</a>
<a href="{% url 'skill_details' injury.skill.id %}">{{ injury.skill.notation }}</a>
{% else %}
-
{% endif %}

View File

@ -19,14 +19,14 @@
<div class="col-8 col-sm-9 col-md-9 col-lg-9 col-lg-8 col-xl-8 {% if form.gymnast.errors %}has-danger{% endif %}">
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_date" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0">Date <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-3 col-md-4 col-lg-4 col-xl-3 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -34,12 +34,12 @@
<label for="id_time" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0">Time <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.time.errors %}has-danger{% endif %}">
{{ form.time }}
{% if form.time.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.time.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.time.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.time.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<label for="id_theorical_time" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label pl-0 pr-0">Theorical time <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.theorical_time.errors %}has-danger{% endif %}">
{{ form.theorical_time }}
{% if form.theorical_time.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.theorical_time.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.theorical_time.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.theorical_time.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -47,12 +47,12 @@
<label for="id_difficulty" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0">Difficulty <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.difficulty.errors %}has-danger{% endif %}">
{{ form.difficulty }}
{% if form.difficulty.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.difficulty.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.difficulty.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.difficulty.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<label for="id_difficulty_asked" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label pl-0 pr-0">Difficulty asked <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.difficulty_asked.errors %}has-danger{% endif %}">
{{ form.difficulty_asked }}
{% if form.difficulty_asked.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.difficulty_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.difficulty_asked.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.difficulty_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -60,13 +60,13 @@
<label for="id_quantity_of_skill" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0"># skill <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.quantity_of_skill.errors %}has-danger{% endif %}">
{{ form.quantity_of_skill }}
{% if form.quantity_of_skill.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.quantity_of_skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.quantity_of_skill.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.quantity_of_skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<label for="id_quantity_of_skill_asked" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label pl-0 pr-0"># skill asked <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.quantity_of_skill_asked.errors %}has-danger{% endif %}">
{{ form.quantity_of_skill_asked }}
{% if form.quantity_of_skill_asked.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.quantity_of_skill_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.quantity_of_skill_asked.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.quantity_of_skill_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -74,13 +74,13 @@
<label for="id_number_of_passes" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0"># passes <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.number_of_passes.errors %}has-danger{% endif %}">
{{ form.number_of_passes }}
{% if form.number_of_passes.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_passes.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_passes.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_passes.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<label for="id_number_of_passes_asked" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label pl-0 pr-0"># passes asked <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.number_of_passes_asked.errors %}has-danger{% endif %}">
{{ form.number_of_passes_asked }}
{% if form.number_of_passes_asked.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_passes_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_passes_asked.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_passes_asked.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -88,7 +88,7 @@
<label for="id_number_of_gymnast" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-2 col-form-label pr-0"># gymnast <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-2 col-md-3 col-lg-3 {% if form.number_of_gymnast.errors %}has-danger{% endif %}">
{{ form.number_of_gymnast }}
{% if form.number_of_gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>

View File

@ -16,7 +16,7 @@
<label for="id_date" class="col-4 col-sm-3 col-form-label">Date</label>
<div class="col-sm-6 col-md-5 col-lg-4 col-xl-3 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -25,7 +25,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -38,14 +38,14 @@
<div class="col-8 col-md-9 col-lg-6 {% if form.skill.errors %}has-danger{% endif %}">
{{ form.skill }}
{{ form.skill_related }}
{% if form.skill.errors %}&nbsp;<skilln class="btn btn-sm btn-danger-outline">{% for error in form.skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.skill.errors %}&nbsp;<skilln class="btn btn-sm">{% for error in form.skill.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_learning_step" class="col-4 col-sm-3 col-form-label">Learning step</label>
<div class="col-8 col-sm-4 col-md-3 {% if form.learning_step.errors %}has-danger{% endif %}">
{{ form.learning_step }}
{% if form.learning_step.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.learning_step.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.learning_step.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.learning_step.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
{% if plan_id %}
@ -53,7 +53,7 @@
<label for="id_is_done" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Is Done</label>
<div class="col-8 col-sm-2 col-md-2 col-lg-2 col-xl-2">
{{ form.is_done }}
{% if form.is_done.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.is_done.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.is_done.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.is_done.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
{% endif %}

View File

@ -22,7 +22,7 @@
class="col-8 col-md-9 col-lg-6 col-lg-4 col-xl-4 {% if form.gymnast.errors %}has-danger{% endif %}">
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.title.errors %}has-error has-feedback{% endif %}">
@ -30,7 +30,7 @@
class="text-danger"><b>*</b></label>
<div class="col-8 col-md-9 col-lg-6 col-lg-4 col-xl-4">
{{ form.title }}
{% if form.title.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.title.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.title.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.title.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -39,7 +39,7 @@
<div
class="col-8 col-sm-6 col-md-4 col-lg-4 col-xl-3 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -57,7 +57,7 @@
<div
class="col-8 col-sm-5 col-md-4 col-lg-4 col-xl-4 {% if form.status.errors %}has-danger{% endif %}">
{{ form.status }}
{% if form.status.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.status.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.status.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.status.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group text-center">

View File

@ -16,7 +16,7 @@
<label for="id_date" class="col-4 col-sm-3 col-form-label">Date <span class="text-danger"><b>*</b></span></label>
<div class="col-sm-6 col-md-5 col-lg-4 col-xl-2 {% if form.date.errors %}has-danger{% endif %}">
{{ form.date }}
{% if form.date.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.date.errors %}<span class="btn btn-sm">{% for error in form.date.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -25,7 +25,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -37,14 +37,14 @@
<div class="col-8 col-sm-8 col-md-6 col-lg-6 col-xl-6 {% if form.educative.errors %}has-danger{% endif %}">
{{ form.educative }}
{{ form.educative_related }}
{% if form.educative.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.educative.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.educative.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.educative.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
<label for="id_learning_step" class="col-4 col-sm-3 col-form-label">Learning step</label>
<div class="col-8 col-sm-4 col-md-3 {% if form.learning_step.errors %}has-danger{% endif %}">
{{ form.learning_step }}
{% if form.learning_step.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.learning_step.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.learning_step.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.learning_step.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">

View File

@ -18,7 +18,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -67,7 +67,7 @@
<label for="id_number_of_successes" class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-3 col-form-label"># success <span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-2 col-md-4 col-lg-2 {% if form.number_of_successes.errors %}has-danger{% endif %}">
{{ form.number_of_successes }}
{% if form.number_of_successes.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_successes.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_successes.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_successes.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -75,7 +75,7 @@
<label for="id_number_of_try" class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-3 col-form-label"># try <span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-2 col-md-4 col-lg-2 {% if form.number_of_try.errors %}has-danger{% endif %}">
{{ form.number_of_try }}
{% if form.number_of_try.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_try.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_try.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_try.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>

View File

@ -19,7 +19,7 @@
{% if request.user|has_group:"trainer" %}
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% else %}
<input type="text" class="form-control" value="{{ request.user.first_name }} {{ request.user.last_name }}" readonly="readonly" />
<input type="hidden" name="gymnast" id="gymnast" value="{{ request.user.gymnast.id }}" />
@ -32,7 +32,7 @@
{{ form.event }}
{{ form.event_related }}
{% if form.event.errors %}
<label class="btn btn-sm btn-danger-outline">
<label class="btn btn-sm">
{% for error in form.event.errors %}{{ error }}{% endfor %}
</label>
{% endif %}
@ -43,7 +43,7 @@
<label for="id_routine_type" class="col-3 col-sm-3 col-md-3 col-lg-3 col-xl-2 col-form-label">Routine <span class="text-danger"><b>*</b></span></label>
<div class="col-5 col-sm-3 col-md-4 {% if form.routine_type.errors %}has-danger{% endif %}">
{{ form.routine_type }}
{% if form.routine_type.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.routine_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.routine_type.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.routine_type.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">

View File

@ -22,7 +22,7 @@
class="col-sm-9 col-md-9 col-lg-6 {% if form.gymnast.errors %}has-danger{% endif %}">
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gymnast.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gymnast.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -31,7 +31,7 @@
<div
class="col-sm-3 col-md-4 col-lg-4 col-xl-3 {% if form.season.errors %}has-danger{% endif %}">
{{ form.season }}
{% if form.season.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.season.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.season.errors %}<span class="btn btn-sm">{% for error in form.season.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -40,7 +40,7 @@
<div class="col-8 col-md-9 {% if form.club.errors %}has-danger{% endif %}">
{{ form.club }}
{{ form.club_related }}
{% if form.club.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.club.errors %}{{error}}{% endfor %}</span>{% endif %}
{% if form.club.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.club.errors %}{{error}}{% endfor %}</span>{% endif %}
</div>
</div>
@ -48,7 +48,7 @@
<label for="id_number_of_training_sessions_per_week" class="col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Training/week <span class="text-danger"><b>*</b></span></label>
<div class="col-sm-3 col-md-3 col-lg-2 {% if form.number_of_training_sessions_per_week.errors %}has-danger{% endif %}">
{{ form.number_of_training_sessions_per_week }}
{% if form.number_of_training_sessions_per_week.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_training_sessions_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_training_sessions_per_week.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_training_sessions_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -56,7 +56,7 @@
<label for="id_number_of_hours_per_week" class="col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Hours/week <span class="text-danger"><b>*</b></span></label>
<div class="col-sm-3 col-md-3 col-lg-2 {% if form.number_of_hours_per_week.errors %}has-danger{% endif %}">
{{ form.number_of_hours_per_week }}
{% if form.number_of_hours_per_week.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_hours_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_hours_per_week.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_hours_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -64,7 +64,7 @@
<label for="id_number_of_s_and_c_sessions_per_week" class="col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">S&C Training/week</label>
<div class="col-sm-3 col-md-3 col-lg-2 {% if form.number_of_s_and_c_sessions_per_week.errors %}has-danger{% endif %}">
{{ form.number_of_s_and_c_sessions_per_week }}
{% if form.number_of_s_and_c_sessions_per_week.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_s_and_c_sessions_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_s_and_c_sessions_per_week.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_s_and_c_sessions_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -72,7 +72,7 @@
<label for="id_number_of_s_and_c_hours_per_week" class="col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">S&C Hours/week</label>
<div class="col-sm-3 col-md-3 col-lg-2 {% if form.numbernumber_of_s_and_c_hours_per_week_of_hours_per_week.errors %}has-danger{% endif %}">
{{ form.number_of_s_and_c_hours_per_week }}
{% if form.number_of_s_and_c_hours_per_week.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.number_of_s_and_c_hours_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.number_of_s_and_c_hours_per_week.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.number_of_s_and_c_hours_per_week.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -80,7 +80,7 @@
<label for="id_category" class="col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Category <span class="text-danger"><b>*</b></span></label>
<div class="col-sm-3 col-md-3 col-lg-3 {% if form.category.errors %}has-danger{% endif %}">
{{ form.category }}
{% if form.category.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.category.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.category.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.category.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>

View File

@ -16,7 +16,7 @@
<div class="col-8 col-sm-10 col-md-10 col-lg-10 col-xl-10">
{{ form.name }}
{% if form.name.errors %}
<span class="btn btn-sm btn-danger-outline">
<span class="btn btn-sm">
{% for error in form.name.errors %}{{ error }}{% endfor %}
</span>
{% endif %}
@ -26,7 +26,7 @@
<label for="id_name" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Address</label>
<div class="col-8 col-sm-6 col-md-6 col-lg-6 col-xl-6">
{{ form.address }}
{% if form.address.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.address.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.address.errors %}<span class="btn btn-sm">{% for error in form.address.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.postal.errors %}has-error has-feedback{% endif %}">
@ -35,11 +35,11 @@
<div class="row">
<div class="col-7 col-sm-5 col-md-5 col-lg-5 col-xl-3 pr-0">
{{ form.postal }}
{% if form.postal.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.postal.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.postal.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.postal.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<div class="col-12 col-sm-7 col-md-7 col-lg-7 col-xl-9">
{{ form.city }}
{% if form.city.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.city.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.city.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.city.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
</div>
@ -58,11 +58,11 @@
<div class="row">
<div class="col-7 col-sm-5 col-md-5 col-lg-5 col-xl-3 pr-0">
{{ form.nbkm }}
{% if form.nbkm.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.nbkm.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.nbkm.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.nbkm.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<div class="col-7 col-sm-5 col-md-5 col-lg-5 col-xl-3 pr-0">
{{ form.timing }}
{% if form.timing.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.timing.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.timing.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.timing.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
</div>
@ -71,7 +71,7 @@
<label for="id_name" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Is active</label>
<div class="col-8 col-sm-2 col-md-2 col-lg-2 col-xl-2">
{{ form.active }}
{% if form.active.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.active.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.active.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.active.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group text-center">

View File

@ -16,7 +16,7 @@
<div class="col-8 col-sm-8 col-md-8 col-lg-8 col-xl-8">
{{ form.name }}
{% if form.name.errors %}
<span class="btn btn-sm btn-danger-outline">
<span class="btn btn-sm">
{% for error in form.name.errors %}{{ error }}{% endfor %}
</span>
{% endif %}
@ -26,7 +26,7 @@
<label for="id_name" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Address <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-6 col-md-6 col-lg-6 col-xl-8">
{{ form.address }}
{% if form.address.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.address.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.address.errors %}<span class="btn btn-sm">{% for error in form.address.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.postal.errors %}has-error has-feedback{% endif %}">
@ -34,11 +34,11 @@
<div class="col-8 col-sm-6 col-md-6 col-lg-6 col-xl-8 row">
<div class="col-7 col-sm-5 col-md-5 col-lg-5 col-xl-4 pr-0">
{{ form.postal }}
{% if form.postal.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.postal.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.postal.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.postal.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<div class="col-12 col-sm-7 col-md-7 col-lg-7 col-xl-8">
{{ form.city }}
{% if form.city.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.city.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.city.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.city.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
</div>
@ -55,7 +55,7 @@
<label for="id_name" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Is active</label>
<div class="col-8 col-sm-2 col-md-2 col-lg-2 col-xl-2">
{{ form.active }}
{% if form.active.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.active.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.active.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.active.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
{% endif %}

View File

@ -24,21 +24,21 @@
<div class="form-group row {% if form.short_label.errors %}has-error has-feedback{% endif %}">
<label for="id_short_label" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Short label <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-9 col-md-9 col-lg-9 col-xl-9">
{{ form.short_label }}&nbsp;{% if form.short_label.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.short_label.errors %}{{ error }}{% endfor %}</span>{% endif %}
{{ form.short_label }}&nbsp;{% if form.short_label.errors %}<span class="btn btn-sm">{% for error in form.short_label.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.is_routine.errors %}has-error has-feedback{% endif %}">
<label for="id_is_routine" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Is routine ? <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-9 col-md-9 col-lg-9 col-xl-9">
{{ form.is_routine }}&nbsp;{% if form.is_routine.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.is_routine.errors %}{{ error }}{% endfor %}</span>{% endif %}
{{ form.is_routine }}&nbsp;{% if form.is_routine.errors %}<span class="btn btn-sm">{% for error in form.is_routine.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.is_competitive.errors %}has-error has-feedback{% endif %}">
<label for="id_is_competitive" class="col-4 col-sm-3 col-md-3 col-lg-3 col-xl-3 col-form-label">Is Competitive ? <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-9 col-md-9 col-lg-9 col-xl-9">
{{ form.is_competitive }}&nbsp;{% if form.is_competitive.errors %}<span class="btn btn-sm btn-danger-outline">{% for error in form.is_competitive.errors %}{{ error }}{% endfor %}</span>{% endif %}
{{ form.is_competitive }}&nbsp;{% if form.is_competitive.errors %}<span class="btn btn-sm">{% for error in form.is_competitive.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>

View File

@ -19,7 +19,7 @@
<label for="id_label" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Label</label>
<div class="col-8 col-sm-10 col-md-10 col-lg-10 col-xl-10">
{{ form.label }}
{% if form.label.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.label.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.label.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.label.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
@ -27,7 +27,7 @@
<label for="id_regexp" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">{{ form.regexp.label }}<span class="text-danger"><b>*</b></span></label>
<div class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-3">
{{ form.regexp }}
{% if form.regexp.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.regexp.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.regexp.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.regexp.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>

View File

@ -16,11 +16,11 @@
<div class="row">
<div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 pr-0">
{{ form.first_name }}
{% if form.first_name.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.first_name.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.first_name.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.first_name.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
<div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6">
{{ form.last_name }}
{% if form.last_name.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.last_name.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.last_name.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.last_name.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
</div>
@ -29,28 +29,28 @@
<label for="id_birthdate" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Birthdate <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-3 col-md-3 col-lg-3 col-xl-3">
{{ form.birthdate }}
{% if form.birthdate.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.birthdate.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.birthdate.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.birthdate.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.gender.errors %}has-error has-feedback{% endif %}">
<label for="id_gender" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Gender <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-3 col-md-3 col-lg-3 col-xl-3">
{{ form.gender }}
{% if form.gender.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.gender.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.gender.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.gender.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.email.errors %}has-error has-feedback{% endif %}">
<label for="id_email" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Email</label>
<div class="col-12 col-sm-10 col-md-6 col-lg-6 col-xl-6">
{{ form.email }}
{% if form.email.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.email.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.email.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.email.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row {% if form.orientation.errors %}has-error has-feedback{% endif %}">
<label for="id_orientation" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Orientation <span class="text-danger"><b>*</b></span></label>
<div class="col-8 col-sm-3 col-md-3 col-lg-2 col-xl-2">
{{ form.orientation }}
{% if form.orientation.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.orientation.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.orientation.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.orientation.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
@ -70,7 +70,7 @@
<label for="id_email_trainer" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Email trainer</label>
<div class="col-12 col-sm-10 col-md-6 col-lg-6 col-xl-6">
{{ form.email_trainer }}
{% if form.email_trainer.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.email_trainer.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.email_trainer.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.email_trainer.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row ">
@ -84,7 +84,7 @@
<label for="id_is_active" class="col-4 col-sm-2 col-md-3 col-lg-3 col-xl-3 col-form-label">Is active</label>
<div class="col-8 col-sm-2 col-md-2 col-lg-2 col-xl-2">
{{ form.is_active }}
{% if form.is_active.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.is_active.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.is_active.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.is_active.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
{% else %}

View File

@ -20,7 +20,7 @@
{{ form.gymnast }}
{{ form.gymnast_related }}
{% if form.gymnast.errors %}
<span class="btn btn-sm btn-danger-outline">
<span class="btn btn-sm">
{% for error in form.gymnast.errors %}{{ error }}{% endfor %}
</span>
{% endif %}

View File

@ -0,0 +1,65 @@
{% extends "base.html" %}
{% load static %}
{% load has_group %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-8 col-lg-8 col-xl-6">
<div class="card">
<div class="card-header">
<h4 class=" ">Link trainer to you</h4>
</div>
<div class="card-body">
{% for trainer in trainers_list %}
{% if trainer != gymnast.user %}
<div class="form-group row mb-0">
<div class="col-md-8 ml-3">
{{ trainer.first_name }} {{ trainer.last_name }}
</div>
<div class="col-md-3">
<input type="checkbox" name="checkbox" class="trainer_check" data-trainer="{{ trainer.id }}" {% if trainer.id in already_linked %}checked{% endif %}/>
</div>
<hr />
</div>
{% endif %}
{% endfor %}
</form>
</div>
</div>
</div>
</div>
{% endblock %}
{% block footerscript %}
<script type="text/javascript">
$(document).ready(function() {
$('.trainer_check').change(function() {
if(this.checked) {
$.ajax({
url: "{% url 'link_trainer_to_gymnast' gymnast.id %}",
method: "POST",
data: {
trainer_id: $(this).data("trainer"),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success: function(data) {
}
});
} else {
$.ajax({
url: "{% url 'unlink_trainer_to_gymnast' gymnast.id %}",
method: "POST",
data: {
trainer_id: $(this).data("trainer"),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success: function(data) {
}
});
}
});
});
</script>
{% endblock %}

View File

@ -59,6 +59,42 @@
</div>
</div>
</div>
<div class="col-md-4 pl-0">
<div class="card mb-4">
<div class="card-header">
<div class="row">
<div class="col-8">
<h4>Trainers</h4>
</div>
<div class="col-2 ml-auto">
<div class="text-right">
<h4 class="mb-0">
<a href="{% url 'gymnast_trainers_listing' gymnast.id %}">
<span class="tim-icons icon-pencil text-warning"></span>
</a>
</h4>
</div>
</div>
</div>
</div>
<div class="card-body pt-0">
{% if trainers_list %}
<table class="table table-striped table-condensed mb-0" id="trainers_table">
<tbody>
{% for trainer in trainers_list %}
<tr>
<td class="text-center">{{ trainer.first_name }} {{ trainer.last_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>Nobody can see your profile.</p>
{% endif %}
</div>
</div>
</div>
</div>
<script type="text/javascript">

View File

@ -53,6 +53,9 @@ gymnast_urlpatterns = [
name="gymnast_display_season_informations",
),
path(r"add/", views.gymnast_create_or_update, name="gymnast_create"),
path(r"<int:gymnast_id>/trainer/", views.gymnast_trainers_listing, name="gymnast_trainers_listing"),
path(r"<int:gymnast_id>/add/trainer/", views.link_trainer_to_gymnast, name="link_trainer_to_gymnast"),
path(r"<int:gymnast_id>/remove/trainer/", views.unlink_trainer_to_gymnast, name="unlink_trainer_to_gymnast"),
path(
r"edit/<int:gymnast_id>/", views.gymnast_create_or_update, name="gymnast_update"
),

View File

@ -8,7 +8,7 @@ from django.db.models import (
Q,
Avg,
)
from django.http import HttpResponseRedirect, JsonResponse
from django.http import HttpResponseRedirect, JsonResponse, HttpResponse
from django.shortcuts import render, get_object_or_404
from django.views.decorators.http import require_http_methods
from django.urls import reverse
@ -57,10 +57,6 @@ def gymnast_lookup(request):
if pattern is not None and len(pattern) > 2:
name = clean_name(pattern)
# gymnast_list = Gymnast.objects.filter(
# Q(cleaned_last_name__icontains=name) | Q(cleaned_first_name__icontains=name)
# )
gymnast_list = Gymnast.objects.filter(
is_active=True, pk__in=request.session["available_gymnast"]
).filter(
@ -175,8 +171,13 @@ def gymnast_display_season_informations(request, gymnast_id):
gymnast_id (int) identifiant du gymnast
"""
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
trainers_list = gymnast.trainers.all().order_by("first_name", "last_name")
season_information_list = gymnast.season_informations.all()
context = {"season_information_list": season_information_list, "gymnast": gymnast}
context = {
"gymnast": gymnast,
"trainers_list": trainers_list,
"season_information_list": season_information_list,
}
return render(request, "gymnasts/tabs/tab_season_informations.html", context)
@ -438,13 +439,65 @@ def gymnast_create_or_update(request, gymnast_id=None):
return HttpResponseRedirect(reverse("gymnast_details", args=(gymnast.pk,)))
return render(request, "people/gymnasts/create.html", {"form": gymnast_form})
return render(request, "gymnasts/create.html", {"form": gymnast_form})
form = GymnastForm(instance=gymnast)
context = {"form": form, "gymnast_id": gymnast_id}
return render(request, "gymnasts/create.html", context)
@login_required
@require_http_methods(["GET", "POST"])
def gymnast_trainers_listing(request, gymnast_id):
""" Liste tous les user """
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
user_list = User.objects.filter(is_active=True, groups__name="trainer").order_by('first_name', 'last_name')
rows = gymnast.trainers.values("id")
already_linked = [row["id"] for row in rows]
context = {
"gymnast": gymnast,
"already_linked": already_linked,
"trainers_list": user_list,
}
return render(request, "gymnasts/link_trainer_to_gymnast.html", context)
@login_required
@require_http_methods(["POST"])
def link_trainer_to_gymnast(request, gymnast_id):
""" Lie un entraîneur à un gymnaste. """
trainer_id = request.POST.get("trainer_id", None)
if gymnast_id and trainer_id:
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
gymnast.trainers.add(get_object_or_404(User, pk=trainer_id))
return HttpResponse(status=200)
if gymnast_id:
print("Error : can not link Gymnast and Trainer. Missing trainer id.")
else:
print("Error : can not link Gymnast and Trainer. Missing gymnast id.")
return HttpResponse(status=500)
@login_required
@require_http_methods(["POST"])
def unlink_trainer_to_gymnast(request, gymnast_id):
""" Délie un entraîneur d'un gymanste. """
trainer_id = request.POST.get("trainer_id", None)
if gymnast_id and trainer_id:
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
gymnast.trainers.remove(get_object_or_404(User, pk=trainer_id))
return HttpResponse(status=200)
if gymnast_id:
print("Error : can not link Gymnast and Trainer. Missing trainer id.")
else:
print("Error : can not link Gymnast and Trainer. Missing gymnast id.")
return HttpResponse(status=500)
@login_required
@require_http_methods(["GET"])
def gymnast_display_skill(request, gymnast_id):

View File

@ -72,7 +72,7 @@
<label for="id_informations" class="col-4 col-sm-2 col-md-2 col-lg-2 col-xl-2 col-form-label">Informations</label>
<div class="col-8 col-sm-10 col-md-10 col-lg-10 col-xl-10 {% if form.informations.errors %}has-danger{% endif %}">
{{ form.informations }}
{% if form.informations.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.informations.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.informations.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.informations.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group text-center">

View File

@ -14,21 +14,21 @@
<label for="id_template_color" class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 col-form-label">Template</label>
<div class="col-8 col-sm-7 col-md-6 col-lg-5 col-xl-4 {% if form.template_color.errors %}has-danger{% endif %}">
{{ form.template_color }}
{% if form.template_color.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.template_color.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.template_color.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.template_color.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
<label for="id_is_sidebar_minified" class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 col-form-label">Sidebar active</label>
<div class="col-8 col-sm-2 col-md-2 col-lg-2 col-xl-2 {% if form.is_sidebar_minified.errors %}has-danger{% endif %}">
{{ form.is_sidebar_minified }}
{% if form.is_sidebar_minified.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.is_sidebar_minified.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.is_sidebar_minified.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.is_sidebar_minified.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<div class="form-group row">
<label for="id_sidebar_color" class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 col-form-label">Sidebar Color</label>
<div class="col-8 col-sm-7 col-md-6 col-lg-5 col-xl-4 {% if form.sidebar_color.errors %}has-danger{% endif %}">
{{ form.sidebar_color }}
{% if form.sidebar_color.errors %}&nbsp;<span class="btn btn-sm btn-danger-outline">{% for error in form.sidebar_color.errors %}{{ error }}{% endfor %}</span>{% endif %}
{% if form.sidebar_color.errors %}&nbsp;<span class="btn btn-sm">{% for error in form.sidebar_color.errors %}{{ error }}{% endfor %}</span>{% endif %}
</div>
</div>
<br />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 171 KiB