|
@@ -20,6 +20,7 @@ from djgeojson.views import GeoJSONLayerView
|
|
|
from urllib.parse import urlencode
|
|
|
|
|
|
from functools import partial, update_wrapper
|
|
|
+from datetime import timedelta
|
|
|
|
|
|
from djadhere.utils import get_active_filter
|
|
|
from adhesions.models import Adhesion
|
|
@@ -48,6 +49,29 @@ class ResourceInUseFilter(admin.SimpleListFilter):
|
|
|
return queryset.filter(available_filter)
|
|
|
|
|
|
|
|
|
+class ResourcePingFilter(admin.SimpleListFilter):
|
|
|
+ title = 'ping'
|
|
|
+ parameter_name = 'ping'
|
|
|
+
|
|
|
+ def lookups(self, request, model_admin):
|
|
|
+ return (
|
|
|
+ (1, 'Répond au ping'),
|
|
|
+ (0, 'Pas de ping >1j'),
|
|
|
+ (-1, 'Inconnu'),
|
|
|
+ )
|
|
|
+
|
|
|
+ def queryset(self, request, queryset):
|
|
|
+ answer_filter = Q(last_time_up__gte=timezone.now() - timedelta(days=1))
|
|
|
+ if self.value() == '-1':
|
|
|
+ return queryset.filter(last_time_up__isnull=True)
|
|
|
+ else:
|
|
|
+ queryset = queryset.exclude(last_time_up__isnull=True)
|
|
|
+ if self.value() == '0':
|
|
|
+ return queryset.exclude(answer_filter)
|
|
|
+ if self.value() == '1':
|
|
|
+ return queryset.filter(answer_filter)
|
|
|
+
|
|
|
+
|
|
|
class ActiveServiceFilter(admin.SimpleListFilter):
|
|
|
title = 'actif'
|
|
|
parameter_name = 'active'
|
|
@@ -254,6 +278,7 @@ class IPResourceAdmin(admin.ModelAdmin):
|
|
|
list_filter = (
|
|
|
'category',
|
|
|
ResourceInUseFilter,
|
|
|
+ ResourcePingFilter,
|
|
|
'reserved',
|
|
|
('prefixes', admin.RelatedOnlyFieldListFilter),
|
|
|
RouteFilter,
|