Browse Source

paiement : filtrage par type de service

Élie Bouttier 8 years ago
parent
commit
e4d14e3115
1 changed files with 15 additions and 3 deletions
  1. 15 3
      banking/admin.py

+ 15 - 3
banking/admin.py

@@ -3,7 +3,7 @@ from django.contrib.contenttypes.admin import GenericTabularInline
 from django.contrib.contenttypes.models import ContentType
 from django.db.models import Q
 
-from services.models import Service
+from services.models import Service, ServiceType
 from .models import Payment
 
 
@@ -59,10 +59,16 @@ class PaymentTypeFilter(admin.SimpleListFilter):
     parameter_name = 'type'
 
     def lookups(self, request, model_admin):
-        return (
+        choices = [
             ('membership', 'Cotisation'),
             ('service', 'Service'),
-        )
+        ]
+        service_types = ServiceType.objects.all()
+        if not request.user.is_superuser:
+            service_types = service_types.filter(group__in=request.user.groups.all())
+        for stype in service_types:
+            choices.append((stype.pk, 'Service (%s)' % stype.name))
+        return choices
 
     def queryset(self, request, queryset):
         if self.value() == 'membership':
@@ -71,6 +77,12 @@ class PaymentTypeFilter(admin.SimpleListFilter):
         if self.value() == 'service':
             return queryset.filter(reason_type__app_label='services',
                                    reason_type__model='service')
+        try:
+            service_type = ServiceType.objects.get(pk=int(self.value()))
+        except (ValueError, TypeError, ServiceType.DoesNotExist,):
+            return queryset
+        else:
+            return queryset.filter(service__service_type=service_type)
 
 
 class PaymentAdmin(PaymentMixin, admin.ModelAdmin):