Risk assessment form now validates power training status where required

This commit is contained in:
2022-01-12 19:09:20 +00:00
parent 9c8d8f077d
commit b4c5493705
7 changed files with 53 additions and 61 deletions

View File

@@ -1,15 +1,8 @@
from django import forms
from datetime import date
from training import models
from RIGS.models import Profile
class SessionLogForm(forms.Form):
pass
class QualificationForm(forms.ModelForm):
class Meta:
model = models.TrainingItemQualification

View File

@@ -1,10 +1,8 @@
from django.db import models
from RIGS.models import RevisionMixin, Profile
from reversion import revisions as reversion
from django.db import models
from django.urls import reverse
from django.utils.safestring import SafeData, mark_safe
from django.utils.safestring import mark_safe
@reversion.register(for_concrete_model=False, fields=[], follow=["qualifications_obtained", "level_qualifications"])
@@ -105,13 +103,13 @@ class TrainingItemQualification(models.Model, RevisionMixin):
return str("{} in {}".format(self.get_depth_display(), self.item))
@classmethod
def get_colour_from_depth(obj, depth):
def get_colour_from_depth(cls, obj, depth):
if depth == 0:
return "warning"
elif depth == 1:
if depth == 1:
return "success"
else:
return "info"
return "info"
def get_absolute_url(self):
return reverse('trainee_item_detail', kwargs={'pk': self.trainee.pk})
@@ -157,16 +155,16 @@ class TrainingLevel(models.Model, RevisionMixin):
def department_colour(self):
if self.department == self.SOUND:
return "info"
elif self.department == self.LIGHTING:
if self.department == self.LIGHTING:
return "dark"
elif self.department == self.POWER:
if self.department == self.POWER:
return "danger"
elif self.department == self.RIGGING:
if self.department == self.RIGGING:
return "warning"
elif self.department == self.HAULAGE:
if self.department == self.HAULAGE:
return "light"
else:
return "primary"
return "primary"
def get_requirements_of_depth(self, depth):
return self.requirements.filter(depth=depth)
@@ -197,8 +195,8 @@ class TrainingLevel(models.Model, RevisionMixin):
if len(needed_qualifications) > 0:
return int(relavant_qualifications / float(len(needed_qualifications)) * 100)
else:
return 0
return 0
def user_has_requirements(self, user):
has_required_items = all(TrainingItem.user_has_qualification(req.item, user, req.depth) for req in self.requirements.all())
@@ -225,7 +223,7 @@ class TrainingLevel(models.Model, RevisionMixin):
@property
def get_icon(self):
if self.icon is not None:
icon = "<span class='fas fa-{}'></span>".format(self.icon)
icon = f"<span class='fas fa-{self.icon}'></span>"
else:
icon = "".join([w[0] for w in str(self).split()])
return mark_safe("<span class='badge badge-{} badge-pill' data-toggle='tooltip' title='{}'>{}</span>".format(self.department_colour, str(self), icon))
@@ -260,14 +258,14 @@ class TrainingLevelQualification(models.Model, RevisionMixin):
return self.level.get_icon
def clean(self):
if level.level >= TrainingLevel.SUPERVISOR and level.department != TrainingLevel.HAULAGE:
trainee.is_supervisor = True
trainee.save()
if self.level.level >= TrainingLevel.SUPERVISOR and self.level.department != TrainingLevel.HAULAGE:
self.trainee.is_supervisor = True
self.trainee.save()
def __str__(self):
if self.level.is_common_competencies:
return "{} is qualified in the {}".format(self.trainee, self.level)
return "{} is qualified as a {}".format(self.trainee, self.level)
return f"{self.trainee} is qualified in the {self.level}"
return f"{self.trainee} is qualified as a {self.level}"
class Meta:
unique_together = ["trainee", "level"]

View File

@@ -1,14 +1,13 @@
import reversion
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views import generic
from PyRIGS.views import OEmbedView, is_ajax, ModalURLMixin
from training import models, forms
from django.utils import timezone
from django.db import transaction
from django.db.models import Q, Count, OuterRef, F, Subquery, Window
from django.db.models import Q, Count
from PyRIGS.views import is_ajax, ModalURLMixin
from training import models, forms
from users import views
@@ -98,12 +97,12 @@ class TraineeList(generic.ListView):
def get_queryset(self):
q = self.request.GET.get('q', "")
filter = Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(initials__icontains=q)
fil = Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(initials__icontains=q)
# try and parse an int
try:
val = int(q)
filter = filter | Q(pk=val)
fil = fil | Q(pk=val)
except: # noqa
# not an integer
pass
@@ -200,7 +199,7 @@ class RemoveRequirement(generic.DeleteView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_title"] = "Delete Requirement '{}' from Training Level {}?".format(self.object, self.object.level)
context["page_title"] = f"Delete Requirement '{self.object}' from Training Level {self.object.level}?"
return context
def get_success_url(self):