diff --git a/program/views.py b/program/views.py
index f8e9204ee874684f41248cc6398f28d661863461..c6c0e22ccfb94b412f5b22c29b57bf22bdf717cd 100644
--- a/program/views.py
+++ b/program/views.py
@@ -848,7 +848,22 @@ class APINoteViewSet(viewsets.ModelViewSet):
         return Response(status=status.HTTP_401_UNAUTHORIZED)
 
 
-class APICategoryViewSet(viewsets.ModelViewSet):
+class ActiveInactiveMixin:
+    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
+
+    def get_queryset(self: viewsets.ModelViewSet):
+        """Filters"""
+
+        if self.request.query_params.get('active') == 'true':
+            return self.queryset.model.objects.filter(is_active=True)
+
+        if self.request.query_params.get('active') == 'false':
+            return self.queryset.model.objects.filter(is_active=False)
+
+        return self.queryset.model.objects.all()
+
+
+class APICategoryViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /categories/ returns all categories (GET, POST)
     /categories/?active=true returns all active categories (GET)
@@ -858,21 +873,9 @@ class APICategoryViewSet(viewsets.ModelViewSet):
 
     queryset = Category.objects.all()
     serializer_class = CategorySerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return Category.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return Category.objects.filter(is_active=False)
-
-        return Category.objects.all()
 
 
-class APITypeViewSet(viewsets.ModelViewSet):
+class APITypeViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /types/ returns all types (GET, POST)
     /types/?active=true returns all active types (GET)
@@ -882,44 +885,21 @@ class APITypeViewSet(viewsets.ModelViewSet):
 
     queryset = Type.objects.all()
     serializer_class = TypeSerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return Type.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return Type.objects.filter(is_active=False)
-
-        return Type.objects.all()
 
 
-class APITopicViewSet(viewsets.ModelViewSet):
+class APITopicViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /topics/: Returns all topics (GET, POST)
     /topics/?active=true Returns all active topics (GET)
+    /topics/?active=false Returns all inactive topics (GET)
     /topics/{pk}: Returns a topic by its ID (GET, PUT, DELETE)
     """
 
     queryset = Topic.objects.all()
     serializer_class = TopicSerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return Topic.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return Topic.objects.filter(is_active=False)
-
-        return Topic.objects.all()
 
 
-class APIMusicFocusViewSet(viewsets.ModelViewSet):
+class APIMusicFocusViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /musicfocus/ returns all music focuses (GET, POST)
     /musicfocus/?active=true: returns all active music focuses (GET)
@@ -929,21 +909,9 @@ class APIMusicFocusViewSet(viewsets.ModelViewSet):
 
     queryset = MusicFocus.objects.all()
     serializer_class = MusicFocusSerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return MusicFocus.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return MusicFocus.objects.filter(is_active=False)
-
-        return MusicFocus.objects.all()
 
 
-class APIFundingCategoryViewSet(viewsets.ModelViewSet):
+class APIFundingCategoryViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /fundingcategories/: returns all funding categories (GET, POST)
     /fundingcategories/?active=true returns all active funding categories (GET)
@@ -953,21 +921,9 @@ class APIFundingCategoryViewSet(viewsets.ModelViewSet):
 
     queryset = FundingCategory.objects.all()
     serializer_class = FundingCategorySerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return FundingCategory.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return FundingCategory.objects.filter(is_active=False)
-
-        return FundingCategory.objects.all()
 
 
-class APILanguageViewSet(viewsets.ModelViewSet):
+class APILanguageViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /languages/ returns all languages (GET, POST)
     /languages/?active=true returns all active languages (GET)
@@ -977,21 +933,9 @@ class APILanguageViewSet(viewsets.ModelViewSet):
 
     queryset = Language.objects.all()
     serializer_class = LanguageSerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return Language.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return Language.objects.filter(is_active=False)
-
-        return Language.objects.all()
 
 
-class APIHostViewSet(viewsets.ModelViewSet):
+class APIHostViewSet(ActiveInactiveMixin, viewsets.ModelViewSet):
     """
     /hosts/ returns all hosts (GET, POST)
     /hosts/?active=true returns all active hosts (GET)
@@ -1001,16 +945,4 @@ class APIHostViewSet(viewsets.ModelViewSet):
 
     queryset = Host.objects.all()
     serializer_class = HostSerializer
-    permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
     pagination_class = LimitOffsetPagination
-
-    def get_queryset(self):
-        """Filters"""
-
-        if self.request.query_params.get('active') == 'true':
-            return Host.objects.filter(is_active=True)
-
-        if self.request.query_params.get('active') == 'false':
-            return Host.objects.filter(is_active=False)
-
-        return Host.objects.all()