From 2767777d0ecee3bcaf8bbdff56c31ddae08f200a Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Sun, 2 Jan 2022 15:39:10 +0000 Subject: [PATCH] Add ability to edit past training records --- training/forms.py | 2 +- training/models.py | 2 +- training/templates/edit_training_record.html | 17 ++++++++++++----- training/templates/trainee_item_list.html | 6 ++++++ training/urls.py | 2 ++ training/views.py | 17 +++++++++++++++++ 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/training/forms.py b/training/forms.py index 4c00a06a..9cfcf368 100644 --- a/training/forms.py +++ b/training/forms.py @@ -19,7 +19,7 @@ class QualificationForm(forms.ModelForm): pk = kwargs.pop('pk', None) super(QualificationForm, self).__init__(*args, **kwargs) self.fields['trainee'].initial = Profile.objects.get(pk=pk) - self.fields['date'].initial = date.today() + self.fields['date'].widget.format = '%Y-%m-%d' def clean_date(self): date = self.cleaned_data['date'] diff --git a/training/models.py b/training/models.py index 0b6099d7..9ab380fb 100644 --- a/training/models.py +++ b/training/models.py @@ -93,7 +93,7 @@ class TrainingItemQualification(models.Model): # TODO Maximum depth - some things stop at Complete and you can't be passed out in them def __str__(self): - return "{} in {} on {}".format(self.depth, self.item, self.date) + return "{} in {} on {}".format(self.get_depth_display(), self.item, self.date.strftime("%b %d %Y")) @property def activity_feed_string(self): diff --git a/training/templates/edit_training_record.html b/training/templates/edit_training_record.html index 5b2d328e..c63b5e88 100644 --- a/training/templates/edit_training_record.html +++ b/training/templates/edit_training_record.html @@ -31,6 +31,9 @@
@@ -40,20 +43,24 @@
- {% render_field form.date|add_class:'form-control'|attr:'type="date"' value=form.date.initial %} + {% with training_date=object.date|date:"Y-m-d" %} + {% render_field form.date|add_class:'form-control'|attr:'type="date"' value=training_date %} + {% endwith %}
- -
- + +
+ {% render_field form.notes|add_class:'form-control' rows=3 %}
{% if not request.is_ajax %} diff --git a/training/templates/trainee_item_list.html b/training/templates/trainee_item_list.html index cb1f53c7..02e86d04 100644 --- a/training/templates/trainee_item_list.html +++ b/training/templates/trainee_item_list.html @@ -19,6 +19,9 @@ Date Supervisor Notes + {% if request.user.is_supervisor or perms.training.change_trainingitemqualification %} + + {% endif %} @@ -29,6 +32,9 @@ {{ object.date }} {{ object.supervisor }} {{ object.notes }} + {% if request.user.is_supervisor or perms.training.change_trainingitemqualification %} + {% button 'edit' 'edit_qualification' object.pk %} + {% endif %} {% empty %} diff --git a/training/urls.py b/training/urls.py index eca70c49..e1ec58bc 100644 --- a/training/urls.py +++ b/training/urls.py @@ -15,6 +15,8 @@ urlpatterns = [ path('trainee//history', permission_required_with_403('RIGS.view_profile')(VersionHistory.as_view()), name='trainee_history', kwargs={'model': models.Trainee, 'app': 'training'}), # Not picked up automatically because proxy model (I think) path('trainee//add_qualification/', login_required(views.AddQualification.as_view()), name='add_qualification'), + path('trainee//edit_qualification/', permission_required_with_403('training.change_trainingitemqualification')(views.EditQualification.as_view()), + name='edit_qualification'), path('session/', login_required(views.SessionLog.as_view()), name='session_log'), path('levels/', login_required(views.LevelList.as_view()), name='level_list'), path('level//', login_required(views.LevelDetail.as_view()), name='level_detail'), diff --git a/training/views.py b/training/views.py index 6a07ec54..6664a7fc 100644 --- a/training/views.py +++ b/training/views.py @@ -152,6 +152,23 @@ class AddQualification(generic.CreateView, ModalURLMixin): return kwargs +class EditQualification(generic.UpdateView): + template_name = 'edit_training_record.html' + model = models.TrainingItemQualification + form_class = forms.QualificationForm + + def get_context_data(self, **kwargs): + context = super(EditQualification, self).get_context_data(**kwargs) + context["depths"] = models.TrainingItemQualification.CHOICES + context['page_title'] = "Edit Qualification {} for {}".format(self.object, models.Trainee.objects.get(pk=self.kwargs['pk'])) + return context + + def get_form_kwargs(self): + kwargs = super(EditQualification, self).get_form_kwargs() + kwargs['pk'] = self.kwargs['pk'] + return kwargs + + class AddLevelRequirement(generic.CreateView, ModalURLMixin): template_name = "add_level_requirement.html" model = models.TrainingLevelRequirement