|
@@ -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):
|