Parcourir la source

filtrage des IP par route

Élie Bouttier il y a 7 ans
Parent
commit
70aabb8360
1 fichiers modifiés avec 20 ajouts et 1 suppressions
  1. 20 1
      services/admin.py

+ 20 - 1
services/admin.py

@@ -37,6 +37,24 @@ class ResourceInUseFilter(admin.SimpleListFilter):
             return queryset.filter(available_filter)
 
 
+class RouteFilter(admin.SimpleListFilter):
+    title = 'route'
+    parameter_name = 'route'
+
+    def lookups(self, request, model_admin):
+        return ServiceAllocation.objects.filter(active=True).values_list('route__pk', 'route__name')
+
+    def queryset(self, request, queryset):
+        try:
+            route = int(self.value())
+        except (TypeError, ValueError):
+            pass
+        else:
+            allocations = ServiceAllocation.objects.filter(active=True, route__pk=route).values_list('pk', flat=True)
+            queryset = queryset.filter(service_allocation__in=allocations)
+        return queryset
+
+
 class AntennaPrefixFilter(admin.SimpleListFilter):
     title = 'préfix'
     parameter_name = 'prefix'
@@ -49,7 +67,7 @@ class AntennaPrefixFilter(admin.SimpleListFilter):
     def queryset(self, request, queryset):
         try:
             prefix = int(self.value())
-        except TypeError:
+        except (TypeError, ValueError):
             pass
         else:
             allocations = AntennaAllocation.objects.filter(active=True, resource__prefixes__pk=prefix).values_list('pk', flat=True)
@@ -168,6 +186,7 @@ class IPResourceAdmin(admin.ModelAdmin):
         'category',
         ResourceInUseFilter,
         ('prefixes', admin.RelatedOnlyFieldListFilter),
+        RouteFilter,
     )
     fields = ('ip', 'reserved', 'notes')
     readonly_fields = ('ip', 'reserved',)