diff --git a/RIGS/finance.py b/RIGS/finance.py index 70c723c3..113099a5 100644 --- a/RIGS/finance.py +++ b/RIGS/finance.py @@ -179,24 +179,7 @@ class InvoiceWaiting(generic.ListView): return context def get_queryset(self): - return self.get_objects() - - def get_objects(self): - # TODO find a way to select items - events = self.model.objects.filter( - ( - Q(start_date__lte=datetime.date.today(), end_date__isnull=True) | # Starts before with no end - Q(end_date__lte=datetime.date.today()) # Has end date, finishes before - ) & Q(invoice__isnull=True) & # Has not already been invoiced - Q(is_rig=True) # Is a rig (not non-rig) - - ).order_by('start_date') \ - .select_related('person', - 'organisation', - 'venue', 'mic') \ - .prefetch_related('items') - - return events + return self.model.objects.waiting_invoices() class InvoiceEvent(generic.View): diff --git a/RIGS/models.py b/RIGS/models.py index 83effe0a..5efb6388 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -278,6 +278,19 @@ class EventManager(models.Manager): ).count() return event_count + def waiting_invoices(self): + events = self.filter( + ( + models.Q(start_date__lte=datetime.date.today(), end_date__isnull=True) | # Starts before with no end + models.Q(end_date__lte=datetime.date.today()) # Or has end date, finishes before + ) & models.Q(invoice__isnull=True) & # Has not already been invoiced + models.Q(is_rig=True) # Is a rig (not non-rig) + ).order_by('start_date') \ + .select_related('person', 'organisation', 'venue', 'mic') \ + .prefetch_related('items') + + return events + @reversion.register(follow=['items']) class Event(models.Model, RevisionMixin): diff --git a/RIGS/templates/base_rigs.html b/RIGS/templates/base_rigs.html index 1bb89d51..6ae9d110 100644 --- a/RIGS/templates/base_rigs.html +++ b/RIGS/templates/base_rigs.html @@ -1,6 +1,7 @@ {% extends 'base.html' %} {% load static %} +{% load invoices_waiting from filters %} {% block titleheader %} RIGS @@ -45,11 +46,11 @@ {% if perms.RIGS.view_invoice %}