Parcourir la source

suppression doublon de services

Élie Bouttier il y a 7 ans
Parent
commit
72a29cafab
2 fichiers modifiés avec 13 ajouts et 2 suppressions
  1. 2 2
      adhesions/admin.py
  2. 11 0
      services/models.py

+ 2 - 2
adhesions/admin.py

@@ -60,14 +60,14 @@ class ActiveServiceInline(ServiceInline):
     verbose_name_plural = 'Services actifs'
     verbose_name_plural = 'Services actifs'
 
 
     def get_queryset(self, request):
     def get_queryset(self, request):
-        return super().get_queryset(request).filter(get_active_filter('allocation'))
+        return super().get_queryset(request).filter(active=True)
 
 
 
 
 class InactiveServiceInline(ServiceInline):
 class InactiveServiceInline(ServiceInline):
     verbose_name_plural = 'Anciens services'
     verbose_name_plural = 'Anciens services'
 
 
     def get_queryset(self, request):
     def get_queryset(self, request):
-        return super().get_queryset(request).exclude(get_active_filter('allocation'))
+        return super().get_queryset(request).filter(active=False)
 
 
 
 
 ### Filters
 ### Filters

+ 11 - 0
services/models.py

@@ -75,6 +75,15 @@ class ActiveAllocationManager(models.Manager):
         return qs
         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):
 class IPResource(models.Model):
@@ -142,6 +151,8 @@ class Service(models.Model):
 
 
     contribution = models.OneToOneField(RecurringPayment, on_delete=models.CASCADE)
     contribution = models.OneToOneField(RecurringPayment, on_delete=models.CASCADE)
 
 
+    objects = ActiveServiceManager()
+
     def save(self, *args, **kwargs):
     def save(self, *args, **kwargs):
         if not hasattr(self, 'contribution'):
         if not hasattr(self, 'contribution'):
             self.contribution = RecurringPayment.objects.create()
             self.contribution = RecurringPayment.objects.create()