Extensions list: sort_by parameter #159

Merged
Márton Lente merged 36 commits from filter-sort into main 2024-06-03 12:57:45 +02:00
3 changed files with 38 additions and 3 deletions
Showing only changes of commit 295d36e199 - Show all commits

View File

@ -0,0 +1,29 @@
# Generated by Django 4.2.11 on 2024-05-31 09:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('extensions', '0031_extension_latest_version'),
]
operations = [
migrations.AlterModelOptions(
name='extension',
options={},
),
migrations.AddIndex(
model_name='extension',
index=models.Index(fields=['average_score'], name='extensions__average_c33b2b_idx'),
),
migrations.AddIndex(
model_name='extension',
index=models.Index(fields=['date_approved'], name='extensions__date_ap_b18acd_idx'),
),
migrations.AddIndex(
model_name='extension',
index=models.Index(fields=['download_count'], name='extensions__downloa_516939_idx'),
),
]

View File

@ -220,6 +220,11 @@ class Extension(CreatedModifiedMixin, RatingMixin, TrackChangesMixin, models.Mod
objects = ExtensionManager() objects = ExtensionManager()
class Meta: class Meta:
indexes = [
models.Index(fields=['average_score']),
models.Index(fields=['date_approved']),
models.Index(fields=['download_count']),
]
ordering = ['-average_score', '-date_created', 'name'] ordering = ['-average_score', '-date_created', 'name']
def __str__(self): def __str__(self):

View File

@ -46,6 +46,7 @@ class HomeView(ListedExtensionsView):
'ratings', 'ratings',
'team', 'team',
) )
.order_by('-average_score')
) )
context['addons'] = q.filter(type=EXTENSION_TYPE_CHOICES.BPY)[:8] context['addons'] = q.filter(type=EXTENSION_TYPE_CHOICES.BPY)[:8]
context['themes'] = q.filter(type=EXTENSION_TYPE_CHOICES.THEME)[:8] context['themes'] = q.filter(type=EXTENSION_TYPE_CHOICES.THEME)[:8]
@ -68,13 +69,13 @@ def extension_version_download(request, type_slug, slug, version, filename):
class SearchView(ListedExtensionsView): class SearchView(ListedExtensionsView):
paginate_by = 16 paginate_by = 16
template_name = 'extensions/list.html' template_name = 'extensions/list.html'
default_sort_by = '-date_approved' default_sort_by = '-average_score'
sort_by_options = OrderedDict( sort_by_options = OrderedDict(
[ [
('-date_approved', _('Newest First')),
('date_approved', _('Oldest First')),
('-average_score', _('Rating')), ('-average_score', _('Rating')),
('-download_count', _('Downloads')), ('-download_count', _('Downloads')),
('-date_approved', _('Newest First')),
('date_approved', _('Oldest First')),
('name', _('Title (A-Z)')), ('name', _('Title (A-Z)')),
('-name', _('Title (Z-A)')), ('-name', _('Title (Z-A)')),
] ]