|
@@ -75,6 +75,15 @@ class ActiveAllocationManager(models.Manager):
|
|
|
return qs
|
|
|
|
|
|
|
|
|
+class ActiveServiceManager(models.Manager):
|
|
|
+ def get_queryset(self):
|
|
|
+ qs = super().get_queryset()
|
|
|
+ qs = qs.annotate(
|
|
|
+ active=models.Exists(
|
|
|
+ ServiceAllocation.objects.filter(Q(service=models.OuterRef('pk')) & get_active_filter())
|
|
|
+ )
|
|
|
+ )
|
|
|
+ return qs
|
|
|
|
|
|
|
|
|
class IPResource(models.Model):
|
|
@@ -142,6 +151,8 @@ class Service(models.Model):
|
|
|
|
|
|
contribution = models.OneToOneField(RecurringPayment, on_delete=models.CASCADE)
|
|
|
|
|
|
+ objects = ActiveServiceManager()
|
|
|
+
|
|
|
def save(self, *args, **kwargs):
|
|
|
if not hasattr(self, 'contribution'):
|
|
|
self.contribution = RecurringPayment.objects.create()
|