Reapply "Improve the performance of access checking for a specific user in CourseViewList by prefetching data"
This reverts commit d8cd6135a6.
This commit is contained in:
@@ -12,14 +12,24 @@ def is_in_holdback(user):
|
||||
"""
|
||||
in_holdback = False
|
||||
if user and user.is_authenticated:
|
||||
try:
|
||||
holdback_value = ExperimentData.objects.get(
|
||||
user=user,
|
||||
experiment_id=EXPERIMENT_ID,
|
||||
key=EXPERIMENT_DATA_HOLDBACK_KEY,
|
||||
).value
|
||||
in_holdback = holdback_value == 'True'
|
||||
except ExperimentData.DoesNotExist:
|
||||
pass
|
||||
if 'experimentdata' in getattr(user, '_prefetched_objects_cache', {}):
|
||||
for experiment_data in user.experimentdata_set.all():
|
||||
if (
|
||||
experiment_data.experiment_id == EXPERIMENT_ID and
|
||||
experiment_data.key == EXPERIMENT_DATA_HOLDBACK_KEY
|
||||
):
|
||||
in_holdback = experiment_data.value == 'True'
|
||||
break
|
||||
else:
|
||||
try:
|
||||
holdback_value = ExperimentData.objects.get(
|
||||
user=user,
|
||||
experiment_id=EXPERIMENT_ID,
|
||||
key=EXPERIMENT_DATA_HOLDBACK_KEY,
|
||||
).value
|
||||
except ExperimentData.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
in_holdback = holdback_value == 'True'
|
||||
|
||||
return in_holdback
|
||||
|
||||
Reference in New Issue
Block a user