diff --git a/RIGS/forms.py b/RIGS/forms.py
index bb375c14..3eb4453a 100644
--- a/RIGS/forms.py
+++ b/RIGS/forms.py
@@ -173,6 +173,12 @@ class EventRiskAssessmentForm(forms.ModelForm):
class EventChecklistForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super(EventChecklistForm, self).__init__(*args, **kwargs)
+ for name, field in self.fields.items():
+ if field.__class__ == forms.NullBooleanField:
+ # Only display yes/no to user, the 'none' is only ever set in the background
+ field.widget = forms.CheckboxInput()
# Parsed from incoming form data by clean, then saved into models when the form is saved
items = {}
@@ -231,6 +237,7 @@ class EventChecklistForm(forms.ModelForm):
# Remove all existing, to be recreated from the form
checklist.vehicles.all().delete()
checklist.crew.all().delete()
+ checklist.save()
for key in self.items:
item = self.items[key]
@@ -240,8 +247,6 @@ class EventChecklistForm(forms.ModelForm):
item.full_clean()
item.save()
- checklist.save()
-
self.items.clear()
return checklist
diff --git a/RIGS/migrations/0051_auto_20200830_1115.py b/RIGS/migrations/0051_auto_20200830_1115.py
new file mode 100644
index 00000000..bd845846
--- /dev/null
+++ b/RIGS/migrations/0051_auto_20200830_1115.py
@@ -0,0 +1,73 @@
+# Generated by Django 3.1 on 2020-08-30 10:15
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('RIGS', '0050_auto_20200830_1048'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='all_rcds_tested',
+ field=models.BooleanField(blank=True, help_text='All circuit RCDs tested?(using test button)'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_earth_fault',
+ field=models.IntegerField(blank=True, help_text='Earth Fault Loop Impedance (ZS)', verbose_name='Earth Fault Loop Impedance'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_phase_rotation',
+ field=models.BooleanField(blank=True, help_text='Phase Rotation
(if required)', verbose_name='Phase Rotation'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_pssc',
+ field=models.IntegerField(blank=True, help_text='Prospective Short Circuit Current', verbose_name='PSCC'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l1',
+ field=models.IntegerField(blank=True, help_text='L1 - N', verbose_name='First Distro Voltage L1-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l2',
+ field=models.IntegerField(blank=True, help_text='L2 - N', verbose_name='First Distro Voltage L2-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l3',
+ field=models.IntegerField(blank=True, help_text='L3 - N', verbose_name='First Distro Voltage L3-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='labelling',
+ field=models.BooleanField(blank=True, help_text='Appropriate and clear labelling on distribution and cabling?'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='public_sockets_tested',
+ field=models.BooleanField(blank=True, help_text='Public/Performer accessible circuits tested?(using socket tester)'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='rcds',
+ field=models.BooleanField(blank=True, help_text='RCDs installed where needed and tested?'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='source_rcd',
+ field=models.BooleanField(blank=True, help_text='Source RCD protected?
(if cable is more than 3m long) '),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='supply_test',
+ field=models.BooleanField(blank=True, help_text='Electrical supplies tested?
(using socket tester)'),
+ ),
+ ]
diff --git a/RIGS/migrations/0052_auto_20200830_1117.py b/RIGS/migrations/0052_auto_20200830_1117.py
new file mode 100644
index 00000000..7ef4d10d
--- /dev/null
+++ b/RIGS/migrations/0052_auto_20200830_1117.py
@@ -0,0 +1,73 @@
+# Generated by Django 3.1 on 2020-08-30 10:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('RIGS', '0051_auto_20200830_1115'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='all_rcds_tested',
+ field=models.BooleanField(blank=True, help_text='All circuit RCDs tested?(using test button)', null=True),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_earth_fault',
+ field=models.IntegerField(blank=True, help_text='Earth Fault Loop Impedance (ZS)', null=True, verbose_name='Earth Fault Loop Impedance'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_phase_rotation',
+ field=models.BooleanField(blank=True, help_text='Phase Rotation
(if required)', null=True, verbose_name='Phase Rotation'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_pssc',
+ field=models.IntegerField(blank=True, help_text='Prospective Short Circuit Current', null=True, verbose_name='PSCC'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l1',
+ field=models.IntegerField(blank=True, help_text='L1 - N', null=True, verbose_name='First Distro Voltage L1-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l2',
+ field=models.IntegerField(blank=True, help_text='L2 - N', null=True, verbose_name='First Distro Voltage L2-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='fd_voltage_l3',
+ field=models.IntegerField(blank=True, help_text='L3 - N', null=True, verbose_name='First Distro Voltage L3-N'),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='labelling',
+ field=models.BooleanField(blank=True, help_text='Appropriate and clear labelling on distribution and cabling?', null=True),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='public_sockets_tested',
+ field=models.BooleanField(blank=True, help_text='Public/Performer accessible circuits tested?(using socket tester)', null=True),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='rcds',
+ field=models.BooleanField(blank=True, help_text='RCDs installed where needed and tested?', null=True),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='source_rcd',
+ field=models.BooleanField(blank=True, help_text='Source RCD protected?
(if cable is more than 3m long) ', null=True),
+ ),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='supply_test',
+ field=models.BooleanField(blank=True, help_text='Electrical supplies tested?
(using socket tester)', null=True),
+ ),
+ ]
diff --git a/RIGS/models.py b/RIGS/models.py
index 5055e1bf..3356a82d 100644
--- a/RIGS/models.py
+++ b/RIGS/models.py
@@ -654,8 +654,8 @@ class EventChecklist(models.Model, RevisionMixin):
extinguishers_location = models.CharField(max_length=255, help_text="Location of fire extinguishers")
# Small Electrical Checks
- rcds = models.BooleanField(help_text="RCDs installed where needed and tested?")
- supply_test = models.BooleanField(help_text="Electrical supplies tested?
(using socket tester)")
+ rcds = models.BooleanField(blank=True,null=True,help_text="RCDs installed where needed and tested?")
+ supply_test = models.BooleanField(blank=True,null=True,help_text="Electrical supplies tested?
(using socket tester)")
# Shared electrical checks
earthing = models.BooleanField(help_text="Equipment appropriately earthed?
(truss, stage, generators etc)")
@@ -663,18 +663,27 @@ class EventChecklist(models.Model, RevisionMixin):
medium_event = models.BooleanField()
# Medium Electrical Checks
- source_rcd = models.BooleanField(help_text="Source RCD protected?
(if cable is more than 3m long) ")
- labelling = models.BooleanField(help_text="Appropriate and clear labelling on distribution and cabling?")
+ 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?")
# First Distro
- fd_voltage_l1 = models.IntegerField(verbose_name="First Distro Voltage L1-N", help_text="L1 - N")
- fd_voltage_l2 = models.IntegerField(verbose_name="First Distro Voltage L2-N", help_text="L2 - N")
- fd_voltage_l3 = models.IntegerField(verbose_name="First Distro Voltage L3-N", help_text="L3 - N")
- fd_phase_rotation = models.BooleanField(verbose_name="Phase Rotation", help_text="Phase Rotation
(if required)")
- fd_earth_fault = models.IntegerField(verbose_name="Earth Fault Loop Impedance", help_text="Earth Fault Loop Impedance (ZS)")
- fd_pssc = models.IntegerField(verbose_name="PSCC", help_text="Prospective Short Circuit Current")
+ fd_voltage_l1 = models.IntegerField(blank=True,null=True, verbose_name="First Distro Voltage L1-N", help_text="L1 - N")
+ fd_voltage_l2 = models.IntegerField(blank=True,null=True,verbose_name="First Distro Voltage L2-N", help_text="L2 - N")
+ fd_voltage_l3 = models.IntegerField(blank=True,null=True,verbose_name="First Distro Voltage L3-N", help_text="L3 - N")
+ fd_phase_rotation = models.BooleanField(blank=True,null=True,verbose_name="Phase Rotation", help_text="Phase Rotation
(if required)")
+ fd_earth_fault = models.IntegerField(blank=True,null=True,verbose_name="Earth Fault Loop Impedance", help_text="Earth Fault Loop Impedance (ZS)")
+ fd_pssc = models.IntegerField(blank=True,null=True,verbose_name="PSCC", help_text="Prospective Short Circuit Current")
- all_rcds_tested = models.BooleanField(help_text="All circuit RCDs tested?(using test button)")
- public_sockets_tested = models.BooleanField(help_text="Public/Performer accessible circuits tested?(using socket tester)")
+ all_rcds_tested = models.BooleanField(blank=True,null=True,help_text="All circuit RCDs tested?
(using test button)")
+ public_sockets_tested = models.BooleanField(blank=True,null=True,help_text="Public/Performer accessible circuits tested?
(using socket tester)")
+
+ def clean(self):
+ errdict = {}
+ if self.earthing == None or self.pat == None:
+ raise ValidationError('Fill out the electrical checks')
+ if self.medium_event and (self.source_rcd == None or self.labelling == None or self.all_rcds_tested == None or self.public_sockets_tested == None):
+ raise ValidationError('Fill out the medium event electrical checks')
+ elif self.rcds == None or self.supply_test == None:
+ raise ValidationError('Fill out the small event electrical checks')
@property
def activity_feed_string(self):
diff --git a/RIGS/templates/event_checklist_detail.html b/RIGS/templates/event_checklist_detail.html
index 1b547a9f..3e0f0fec 100644
--- a/RIGS/templates/event_checklist_detail.html
+++ b/RIGS/templates/event_checklist_detail.html
@@ -91,12 +91,75 @@
Tests at first distro
+| Test | +Value | +||
|---|---|---|---|
| Voltage (cube meter) |
+ {{ object|help_text:'fd_voltage_l1' }} | +{{ object|help_text:'fd_voltage_l2' }} | +{{ object|help_text:'fd_voltage_l3' }} | +
| {{ object.fd_voltage_l1 }} | +{{ object.fd_voltage_l2 }} | +{{ object.fd_voltage_l3 }} | +|
| {{ object|help_text:'fd_phase_rotation'|safe }} | +{{ object.fd_phase_rotation|yesno|title }} | +||
| {{ object|help_text:'fd_earth_fault'|safe}} | +{{ object.fd_earth_fault }} | +||
| {{ object|help_text:'fd_pssc'}} | +{{ object.fd_pssc }} | +||