fix: Make Artist ordering by name case insensitive
Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2431>
This commit is contained in:
parent
786735d122
commit
ccec8288ef
4 changed files with 42 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
|||
from django import forms
|
||||
from django.db.models import Q
|
||||
from django.db.models.functions import Lower
|
||||
from django_filters import rest_framework as filters
|
||||
from django_filters import widgets
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
|
|
@ -239,3 +240,19 @@ class ActorScopeFilter(filters.CharFilter):
|
|||
raise EmptyQuerySet()
|
||||
|
||||
return Q(**{self.actor_field: actor})
|
||||
|
||||
|
||||
class CaseInsensitiveNameOrderingFilter(filters.OrderingFilter):
|
||||
def filter(self, qs, value):
|
||||
order_by = []
|
||||
|
||||
if value is None:
|
||||
return qs
|
||||
|
||||
for param in value:
|
||||
if param == "name":
|
||||
order_by.append(Lower("name"))
|
||||
else:
|
||||
order_by.append(self.get_ordering_value(param))
|
||||
|
||||
return qs.order_by(*order_by)
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ class ArtistFilter(
|
|||
distinct=True,
|
||||
library_field="tracks__uploads__library",
|
||||
)
|
||||
ordering = django_filters.OrderingFilter(
|
||||
ordering = common_filters.CaseInsensitiveNameOrderingFilter(
|
||||
fields=(
|
||||
("id", "id"),
|
||||
("name", "name"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue