diff --git a/extensions/views/public.py b/extensions/views/public.py index 10ca934a..778a1c12 100644 --- a/extensions/views/public.py +++ b/extensions/views/public.py @@ -1,5 +1,6 @@ from collections import OrderedDict import logging +import random from django.contrib.auth import get_user_model from django.db import connection @@ -43,10 +44,20 @@ class HomeView(ListedExtensionsView): def get_context_data(self, **kwargs): q = super().get_queryset().order_by('-rating_sortkey') + + addons_list = list(q.filter(type=EXTENSION_TYPE_CHOICES.BPY)[:24]) + themes_list = list(q.filter(type=EXTENSION_TYPE_CHOICES.THEME)[:12]) + + # Get 8 add-ons, 4 themes, or the minimum available. + addons_sample_size = min(8, len(addons_list)) + themes_sample_size = min(4, len(themes_list)) + + # Randomize a sample of the extensions to list. context = { - 'addons': q.filter(type=EXTENSION_TYPE_CHOICES.BPY)[:8], - 'themes': q.filter(type=EXTENSION_TYPE_CHOICES.THEME)[:8], + 'addons': random.sample(addons_list, addons_sample_size), + 'themes': random.sample(themes_list, themes_sample_size), } + return context