From 9feea5621150532cb77423173fc5a56c9d1944db Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Sun, 11 Dec 2022 00:49:56 +0000 Subject: [PATCH] Draft "upcoming subhire" view --- RIGS/models.py | 14 ++++++++++++++ RIGS/urls.py | 2 ++ RIGS/views/subhire.py | 10 ++++++++++ 3 files changed, 26 insertions(+) diff --git a/RIGS/models.py b/RIGS/models.py index 8157913d..2f7ae364 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -600,11 +600,25 @@ class EventAuthorisation(models.Model, RevisionMixin): return f"{self.event.display_id} (requested by {self.sent_by.initials})" +class SubhireManager(models.Manager): + def current_events(self): + events = self.filter( + (models.Q(start_date__gte=timezone.now(), end_date__isnull=True) & ~models.Q( + status=Event.CANCELLED)) | # Starts after with no end + (models.Q(end_date__gte=timezone.now().date()) & ~models.Q( + status=Event.CANCELLED)) # Ends after + ).order_by('start_date', 'end_date', 'start_time', 'end_time').select_related('person', 'organisation') + + return events + + @reversion.register class Subhire(BaseEvent): insurance_value = models.DecimalField(max_digits=10, decimal_places=2) # TODO Validate if this is over notifiable threshold events = models.ManyToManyField(Event) + objects = SubhireManager() + @property def display_id(self): return f"S{self.pk:05d}" diff --git a/RIGS/urls.py b/RIGS/urls.py index 89313377..8dc5bb0d 100644 --- a/RIGS/urls.py +++ b/RIGS/urls.py @@ -74,6 +74,8 @@ urlpatterns = [ name='subhire_create'), path('subhire//edit', views.SubhireEdit.as_view(), name='subhire_update'), + path('subhire/upcoming', views.SubhireList.as_view(), + name='subhire_list'), # Event H&S diff --git a/RIGS/views/subhire.py b/RIGS/views/subhire.py index 7e3b2d68..ff2a476d 100644 --- a/RIGS/views/subhire.py +++ b/RIGS/views/subhire.py @@ -46,3 +46,13 @@ class SubhireEdit(generic.UpdateView): def get_success_url(self): return reverse_lazy('subhire_detail', kwargs={'pk': self.object.pk}) + + +class SubhireList(generic.TemplateView): + template_name = 'rigboard.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['events'] = models.Subhire.objects.current_events() + context['page_title'] = "Upcoming Subhire" + return context