|
@@ -87,9 +87,9 @@ class ActiveServiceFilter(admin.SimpleListFilter):
|
|
|
|
|
|
def queryset(self, request, queryset):
|
|
|
if self.value() == '0': # inactif
|
|
|
- return queryset.exclude(get_active_filter('allocation')) # has_active_allocations=False ne fonctionne pas
|
|
|
+ return queryset.exclude(get_active_filter('allocation'))
|
|
|
if self.value() == '1': # actif
|
|
|
- return queryset.filter(has_active_allocations=True)
|
|
|
+ return queryset.filter(get_active_filter('allocation'))
|
|
|
|
|
|
|
|
|
class RouteFilter(admin.SimpleListFilter):
|
|
@@ -189,6 +189,11 @@ class AllocationInline(admin.TabularInline):
|
|
|
extra = 0
|
|
|
show_change_link = True
|
|
|
|
|
|
+ def get_queryset(self, request):
|
|
|
+ qs = super().get_queryset(request)
|
|
|
+ qs = qs.select_related('resource', 'route')
|
|
|
+ return qs
|
|
|
+
|
|
|
def get_formset(self, request, obj=None, **kwargs):
|
|
|
formset = super().get_formset(request, obj, **kwargs)
|
|
|
formset.request = request
|
|
@@ -208,7 +213,7 @@ class ActiveAllocationMixin:
|
|
|
return existing + 1
|
|
|
|
|
|
def get_queryset(self, request):
|
|
|
- return super().get_queryset(request).filter(active=True)
|
|
|
+ return super().get_queryset(request).filter(get_active_filter())
|
|
|
|
|
|
|
|
|
class InactiveAllocationMixin:
|
|
@@ -216,7 +221,7 @@ class InactiveAllocationMixin:
|
|
|
max_num = 0
|
|
|
|
|
|
def get_queryset(self, request):
|
|
|
- return super().get_queryset(request).filter(active=False)
|
|
|
+ return super().get_queryset(request).exclude(get_active_filter())
|
|
|
|
|
|
|
|
|
class ServiceAllocationMixin:
|
|
@@ -287,7 +292,7 @@ ends_resource.short_description = 'Terminer les allocations sélectionnées'
|
|
|
|
|
|
class ServiceAdmin(admin.ModelAdmin):
|
|
|
list_display = ('id', 'get_adhesion_link', 'get_adherent_link', 'service_type', 'label', 'is_active',)
|
|
|
- list_select_related = ('adhesion', 'adhesion__user', 'adhesion__user__profile', 'adhesion__corporation', 'service_type')
|
|
|
+ list_select_related = ('adhesion', 'adhesion__user', 'adhesion__user__profile', 'adhesion__corporation', 'service_type',)
|
|
|
list_filter = (
|
|
|
ActiveServiceFilter,
|
|
|
('service_type', admin.RelatedOnlyFieldListFilter),
|
|
@@ -297,6 +302,11 @@ class ServiceAdmin(admin.ModelAdmin):
|
|
|
readonly_fields = ('get_contribution_link', 'is_active',)
|
|
|
raw_id_fields = ('adhesion',)
|
|
|
|
|
|
+ def get_queryset(self, request):
|
|
|
+ qs = super().get_queryset(request)
|
|
|
+ qs = qs.prefetch_related('allocations',)
|
|
|
+ return qs
|
|
|
+
|
|
|
get_adhesion_link = lambda self, service: service.adhesion.get_adhesion_link()
|
|
|
get_adhesion_link.short_description = Adhesion.get_adhesion_link.short_description
|
|
|
|