diff --git a/RIGS/migrations/0047_auto_20230510_1823.py b/RIGS/migrations/0047_auto_20230517_0944.py
similarity index 88%
rename from RIGS/migrations/0047_auto_20230510_1823.py
rename to RIGS/migrations/0047_auto_20230517_0944.py
index 1e3e6892..c58bb091 100644
--- a/RIGS/migrations/0047_auto_20230510_1823.py
+++ b/RIGS/migrations/0047_auto_20230517_0944.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.2.16 on 2023-05-10 17:23
+# Generated by Django 3.2.19 on 2023-05-17 08:44
from django.conf import settings
from django.db import migrations, models
@@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('time', models.DateTimeField()),
('role', models.CharField(blank=True, max_length=50)),
('vehicle', models.CharField(blank=True, max_length=100)),
- ('end_time', models.DateTimeField(null=True)),
+ ('end_time', models.DateTimeField(blank=True, null=True)),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='crew', to='RIGS.event')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checkins', to=settings.AUTH_USER_MODEL)),
],
@@ -145,6 +145,21 @@ class Migration(migrations.Migration):
name='power_mic',
field=models.ForeignKey(blank=True, help_text='Who is the Power MIC?', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='checklists', to=settings.AUTH_USER_MODEL, verbose_name='Power MIC'),
),
+ migrations.AlterField(
+ model_name='eventchecklist',
+ name='reviewed_at',
+ field=models.DateTimeField(blank=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name='powertestrecord',
+ name='reviewed_at',
+ field=models.DateTimeField(blank=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name='riskassessment',
+ name='reviewed_at',
+ field=models.DateTimeField(blank=True, null=True),
+ ),
migrations.DeleteModel(
name='EventChecklistCrew',
),
diff --git a/RIGS/models.py b/RIGS/models.py
index ccac6b4e..715faaa4 100644
--- a/RIGS/models.py
+++ b/RIGS/models.py
@@ -711,17 +711,17 @@ def validate_url(value):
class ReviewableModel(models.Model):
- reviewed_at = models.DateTimeField(null=True)
+ reviewed_at = models.DateTimeField(null=True, blank=True)
reviewed_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
verbose_name="Reviewer", on_delete=models.CASCADE)
+ class Meta:
+ abstract = True
+
@cached_property
def fieldz(self):
return [n.name for n in list(self._meta.get_fields()) if n.name != 'reviewed_at' and n.name != 'reviewed_by' and not n.is_relation and not n.auto_created]
- class Meta:
- abstract = True
-
@reversion.register
class RiskAssessment(ReviewableModel, RevisionMixin):
@@ -821,6 +821,12 @@ class RiskAssessment(ReviewableModel, RevisionMixin):
def get_event_size_display(self):
return self.SIZES[self.event_size][1] + " Event"
+ def __str__(self):
+ return f"{self.pk} | {self.event}"
+
+ def get_absolute_url(self):
+ return reverse('ra_detail', kwargs={'pk': self.pk})
+
@property
def activity_feed_string(self):
return str(self.event)
@@ -829,12 +835,6 @@ class RiskAssessment(ReviewableModel, RevisionMixin):
def name(self):
return str(self)
- def get_absolute_url(self):
- return reverse('ra_detail', kwargs={'pk': self.pk})
-
- def __str__(self):
- return f"{self.pk} | {self.event}"
-
@reversion.register
class EventChecklist(ReviewableModel, RevisionMixin):
@@ -862,6 +862,9 @@ class EventChecklist(ReviewableModel, RevisionMixin):
('review_eventchecklist', 'Can review Event Checklists')
]
+ def __str__(self):
+ return f"{self.pk} - {self.event}"
+
@property
def activity_feed_string(self):
return str(self.event)
@@ -869,9 +872,6 @@ class EventChecklist(ReviewableModel, RevisionMixin):
def get_absolute_url(self):
return reverse('ec_detail', kwargs={'pk': self.pk})
- def __str__(self):
- return f"{self.pk} - {self.event}"
-
@reversion.register
class PowerTestRecord(ReviewableModel, RevisionMixin):
@@ -915,6 +915,12 @@ class PowerTestRecord(ReviewableModel, RevisionMixin):
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)")
+ class Meta:
+ ordering = ['event']
+ permissions = [
+ ('review_power', 'Can review Power Test Records')
+ ]
+
def __str__(self):
return f"{self.pk} - {self.event}"
@@ -922,12 +928,6 @@ class PowerTestRecord(ReviewableModel, RevisionMixin):
def activity_feed_string(self):
return str(self.event)
- class Meta:
- ordering = ['event']
- permissions = [
- ('review_power', 'Can review Power Test Records')
- ]
-
class EventCheckIn(models.Model):
event = models.ForeignKey('Event', related_name='crew', on_delete=models.CASCADE)
@@ -935,7 +935,10 @@ class EventCheckIn(models.Model):
time = models.DateTimeField()
role = models.CharField(max_length=50, blank=True)
vehicle = models.CharField(max_length=100, blank=True)
- end_time = models.DateTimeField(null=True)
+ end_time = models.DateTimeField(null=True, blank=True)
+
+ def __str__(self):
+ return f"{self.person} on {self.event}"
def clean(self):
sass = " Please invent time travel and retry."
@@ -944,11 +947,8 @@ class EventCheckIn(models.Model):
if self.end_time and self.end_time < self.time:
raise ValidationError("May not check out before you've checked in." + sass)
+ def get_absolute_url(self):
+ return reverse('event_detail', kwargs={'pk': self.event_id})
+
def active(self):
return end_time is not None
-
- def get_absolute_url(self):
- return reverse('event_detail', kwargs={'pk': self.event.pk})
-
- def __str__(self):
- return f"{self.person} on {self.event}"
diff --git a/RIGS/views/hs.py b/RIGS/views/hs.py
index 845b015f..ef38bb81 100644
--- a/RIGS/views/hs.py
+++ b/RIGS/views/hs.py
@@ -1,7 +1,7 @@
from django.apps import apps
from django.contrib import messages
from django.http import HttpResponseRedirect
-from django.urls import reverse_lazy
+from django.urls import reverse
from django.utils import timezone
from django.views import generic
from reversion import revisions as reversion
@@ -37,7 +37,7 @@ class MarkReviewed(generic.View):
obj.reviewed_by = self.request.user
obj.reviewed_at = timezone.now()
obj.save()
- return HttpResponseRedirect(reverse_lazy('hs_list'))
+ return HttpResponseRedirect(reverse('hs_list'))
class EventRiskAssessmentCreate(HSCreateView):
@@ -53,12 +53,12 @@ class EventRiskAssessmentCreate(HSCreateView):
ra = models.RiskAssessment.objects.filter(event=event).first()
if ra is not None:
- return HttpResponseRedirect(reverse_lazy('ra_edit', kwargs={'pk': ra.pk}))
+ return HttpResponseRedirect(reverse('ra_edit', kwargs={'pk': ra.pk}))
return super(EventRiskAssessmentCreate, self).get(self)
def get_success_url(self):
- return reverse_lazy('ra_detail', kwargs={'pk': self.object.pk})
+ return reverse('ra_detail', kwargs={'pk': self.object.pk})
class EventRiskAssessmentEdit(generic.UpdateView):
@@ -71,7 +71,7 @@ class EventRiskAssessmentEdit(generic.UpdateView):
ra.reviewed_by = None
ra.reviewed_at = None
ra.save()
- return reverse_lazy('ra_detail', kwargs={'pk': self.object.pk})
+ return reverse('ra_detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super(EventRiskAssessmentEdit, self).get_context_data(**kwargs)
@@ -114,7 +114,7 @@ class EventChecklistEdit(generic.UpdateView):
ec.reviewed_by = None
ec.reviewed_at = None
ec.save()
- return reverse_lazy('ec_detail', kwargs={'pk': self.object.pk})
+ return reverse('ec_detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super(EventChecklistEdit, self).get_context_data(**kwargs)
@@ -142,12 +142,12 @@ class EventChecklistCreate(HSCreateView):
if ra is None:
messages.error(self.request, f'A Risk Assessment must exist prior to creating any Event Checklists for {event}! Please create one now.')
- return HttpResponseRedirect(reverse_lazy('event_ra', kwargs={'pk': epk}))
+ return HttpResponseRedirect(reverse('event_ra', kwargs={'pk': epk}))
return super(EventChecklistCreate, self).get(self)
def get_success_url(self):
- return reverse_lazy('ec_detail', kwargs={'pk': self.object.pk})
+ return reverse('ec_detail', kwargs={'pk': self.object.pk})
class PowerTestDetail(generic.DetailView):
@@ -170,7 +170,7 @@ class PowerTestEdit(generic.UpdateView):
ec.reviewed_by = None
ec.reviewed_at = None
ec.save()
- return reverse_lazy('ec_detail', kwargs={'pk': self.object.pk})
+ return reverse('ec_detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -197,12 +197,12 @@ class PowerTestCreate(HSCreateView):
if ra is None:
messages.error(self.request, f'A Risk Assessment must exist prior to creating any Power Test Records for {event}! Please create one now.')
- return HttpResponseRedirect(reverse_lazy('event_ra', kwargs={'pk': epk}))
+ return HttpResponseRedirect(reverse('event_ra', kwargs={'pk': epk}))
return super().get(self)
def get_success_url(self):
- return reverse_lazy('pt_detail', kwargs={'pk': self.object.pk})
+ return reverse('pt_detail', kwargs={'pk': self.object.pk})
class HSList(generic.ListView):