From 66e0f6bf5df13d9b857faa39868e144ece141fe6 Mon Sep 17 00:00:00 2001 From: Alexander Sheehan Date: Mon, 7 Dec 2020 13:23:40 -0800 Subject: [PATCH] caching enterprise learner lookup --- openedx/features/enterprise_support/utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/openedx/features/enterprise_support/utils.py b/openedx/features/enterprise_support/utils.py index 37b026e832..a8e4463aa4 100644 --- a/openedx/features/enterprise_support/utils.py +++ b/openedx/features/enterprise_support/utils.py @@ -7,6 +7,7 @@ import json from crum import get_current_request from django.conf import settings +from django.core.cache import cache from django.urls import NoReverseMatch, reverse from django.utils.translation import ugettext as _ from edx_django_utils.cache import TieredCache, get_cache_key @@ -401,7 +402,15 @@ def is_enterprise_learner(user): Returns: (bool): True if given user is an enterprise learner. """ - return EnterpriseCustomerUser.objects.filter(user_id=user.id).exists() + cached_is_enterprise_key = '{}:user_is_enterprise'.format(user.id) + if cache.get(cached_is_enterprise_key): + return True + + if EnterpriseCustomerUser.objects.filter(user_id=user.id).exists(): + # Cache the enterprise user for one hour. + cache.set(cached_is_enterprise_key, True, expiry=3600) + return True + return False def get_enterprise_slug_login_url():