Skip to content

Commit 52248dd

Browse files
committed
add further host API filtering
1 parent f8e79e0 commit 52248dd

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

hosts/views.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from django.db.models import Count, Q
2121
from django.shortcuts import get_object_or_404, redirect, render
2222
from django.urls import reverse
23+
from django_filters import rest_framework as filters
2324
from django_tables2 import RequestConfig
2425
from rest_framework import viewsets
2526
from taggit.models import Tag
@@ -279,13 +280,26 @@ def host_bulk_action(request):
279280
return redirect('hosts:host_list')
280281

281282

283+
class HostFilter(filters.FilterSet):
284+
package_id = filters.NumberFilter(field_name='packages', lookup_expr='exact')
285+
package_name = filters.CharFilter(field_name='packages__name__name', lookup_expr='exact')
286+
package_version = filters.CharFilter(field_name='packages__version', lookup_expr='exact')
287+
package_release = filters.CharFilter(field_name='packages__release', lookup_expr='exact')
288+
package_epoch = filters.CharFilter(field_name='packages__epoch', lookup_expr='exact')
289+
package_arch = filters.CharFilter(field_name='packages__arch__name', lookup_expr='exact')
290+
291+
class Meta:
292+
model = Host
293+
fields = ['hostname']
294+
295+
282296
class HostViewSet(viewsets.ModelViewSet):
283297
"""
284298
API endpoint that allows hosts to be viewed or edited.
285299
"""
286300
queryset = Host.objects.all()
287301
serializer_class = HostSerializer
288-
filterset_fields = ['hostname']
302+
filterset_class = HostFilter
289303

290304

291305
class HostRepoViewSet(viewsets.ModelViewSet):

0 commit comments

Comments
 (0)