diff --git a/aleksis/core/util/core_helpers.py b/aleksis/core/util/core_helpers.py
index 6428e293c158ecd37af26b8e3a3625b24011a5a0..aeffad13fb6d1d869a8b6e2793b18f36a9063096 100644
--- a/aleksis/core/util/core_helpers.py
+++ b/aleksis/core/util/core_helpers.py
@@ -361,6 +361,18 @@ def handle_uploaded_file(f, filename: str):
             destination.write(chunk)
 
 
+@cache_memoize(3600)
+def get_content_type_by_perm(perm: str) -> Union["ContentType", None]:
+    from django.contrib.contenttypes.models import ContentType  # noqa
+
+    try:
+        return ContentType.objects.get(
+            app_label=perm.split(".", 1)[0], permission__codename=perm.split(".", 1)[1]
+        )
+    except ContentType.DoesNotExist:
+        return None
+
+
 @cache_memoize(3600)
 def queryset_rules_filter(
     obj: Union[HttpRequest, Model], queryset: QuerySet, perm: str
diff --git a/aleksis/core/util/predicates.py b/aleksis/core/util/predicates.py
index 46fe98c7379034eb07b3bad2a7c442ab4d9e02b5..d107b425bab206b9a1a0c57d0cb4a4e997a82d34 100644
--- a/aleksis/core/util/predicates.py
+++ b/aleksis/core/util/predicates.py
@@ -1,6 +1,5 @@
 from django.contrib.auth.backends import ModelBackend
 from django.contrib.auth.models import User
-from django.contrib.contenttypes.models import ContentType
 from django.db.models import Model
 from django.http import HttpRequest
 
@@ -9,7 +8,7 @@ from guardian.shortcuts import get_objects_for_user
 from rules import predicate
 
 from ..models import Group
-from .core_helpers import get_site_preferences
+from .core_helpers import get_content_type_by_perm, get_site_preferences
 from .core_helpers import has_person as has_person_helper
 from .core_helpers import queryset_rules_filter
 
@@ -65,12 +64,7 @@ def has_any_object(perm: str, klass):
 
     @predicate(name)
     def fn(user: User) -> bool:
-        try:
-            ct_perm = ContentType.objects.get(
-                app_label=perm.split(".", 1)[0], permission__codename=perm.split(".", 1)[1]
-            )
-        except ContentType.DoesNotExist:
-            ct_perm = None
+        ct_perm = get_content_type_by_perm(perm)
         if ct_perm and ct_perm.model_class() == klass:
             return get_objects_for_user(user, perm, klass).exists()
         else: