diff --git a/RIGS/forms.py b/RIGS/forms.py index 0d425a9e..b3c68ce6 100644 --- a/RIGS/forms.py +++ b/RIGS/forms.py @@ -170,6 +170,7 @@ class EventRiskAssessmentForm(forms.ModelForm): ], attrs={'class': 'custom-control-input', 'required': 'true'}) def clean(self): + # Check expected values unexpected_values = [] for field, value in models.RiskAssessment.expected_values.items(): if self.cleaned_data.get(field) != value: diff --git a/RIGS/migrations/0047_auto_20201213_1642.py b/RIGS/migrations/0047_auto_20201213_1642.py new file mode 100644 index 00000000..dcbbfc7f --- /dev/null +++ b/RIGS/migrations/0047_auto_20201213_1642.py @@ -0,0 +1,22 @@ +# Generated by Django 3.1.2 on 2020-12-13 16:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('RIGS', '0046_auto_20201213_1625'), + ] + + operations = [ + migrations.RemoveField( + model_name='eventchecklist', + name='event_size', + ), + migrations.AddField( + model_name='riskassessment', + name='event_size', + field=models.IntegerField(blank=True, choices=[(0, 'Small'), (1, 'Medium'), (2, 'Large')], null=True), + ), + ] diff --git a/RIGS/models.py b/RIGS/models.py index d376540d..8d48f812 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -622,6 +622,11 @@ def validate_url(value): @reversion.register class RiskAssessment(models.Model, RevisionMixin): + SMALL = (0, 'Small') + MEDIUM = (1, 'Medium') + LARGE = (2, 'Large') + SIZES = (SMALL, MEDIUM, LARGE) + event = models.OneToOneField('Event', on_delete=models.CASCADE) # General nonstandard_equipment = models.BooleanField(help_text="Does the event require any hired in equipment or use of equipment that is not covered by " @@ -633,6 +638,7 @@ class RiskAssessment(models.Model, RevisionMixin): general_notes = models.TextField(blank=True, null=True, help_text="Did you have to consult a supervisor about any of the above? If so who did you consult and what was the outcome?") # Power + event_size = models.IntegerField(blank=True, null=True, choices=SIZES) big_power = models.BooleanField(help_text="Does the event require larger power supplies than 13A or 16A single phase wall sockets, or draw more than 20A total current?") outside = models.BooleanField(help_text="Is the event outdoors?") # If yes to the above two, you must answer... @@ -694,6 +700,19 @@ class RiskAssessment(models.Model, RevisionMixin): } inverted_fields = {key: value for (key, value) in expected_values.items() if not value}.keys() + def clean(self): + # Check for idiots + if not self.outside and self.generators: + raise forms.ValidationError("Engage brain, please. No generators indoors!(!)") + # Confirm event size + if self.outside: + self.event_size = self.LARGE[0] + # Check all except generators, since generators entails outside and hence LARGE + elif self.big_power or self.other_companies_power or self.nonstandard_equipment_power or self.multiple_electrical_environments: + self.event_size = self.MEDIUM[0] + else: + self.event_size = self.SMALL[0] + class Meta: ordering = ['event'] permissions = [ @@ -713,10 +732,6 @@ class RiskAssessment(models.Model, RevisionMixin): @reversion.register(follow=['vehicles', 'crew']) class EventChecklist(models.Model, RevisionMixin): - SMALL = (0, 'Small') - MEDIUM = (1, 'Medium') - LARGE = (2, 'Large') - SIZES = (SMALL, MEDIUM, LARGE) event = models.ForeignKey('Event', related_name='checklists', on_delete=models.CASCADE) # General @@ -743,7 +758,6 @@ class EventChecklist(models.Model, RevisionMixin): earthing = models.BooleanField(blank=True, null=True, help_text="Equipment appropriately earthed?
(truss, stage, generators etc)") pat = models.BooleanField(blank=True, null=True, help_text="All equipment in PAT period?") - event_size = models.IntegerField(blank=True, null=True, choices=SIZES) # Medium Electrical Checks source_rcd = models.BooleanField(blank=True, null=True, help_text="Source RCD protected?
(if cable is more than 3m long) ") labelling = models.BooleanField(blank=True, null=True, help_text="Appropriate and clear labelling on distribution and cabling?") diff --git a/RIGS/templates/risk_assessment_detail.html b/RIGS/templates/risk_assessment_detail.html index 1866ceb8..6491ada0 100644 --- a/RIGS/templates/risk_assessment_detail.html +++ b/RIGS/templates/risk_assessment_detail.html @@ -40,7 +40,12 @@
-
Power
+
Power {% if object.event_size == 2 %} + Large Event + {% elif object.event_size == 1 %} + Medium Event + {%else%}Small Event + {%endif%}
{{ object|help_text:'big_power' }}