Merge pull request #546 from rpkilby/fix-orderingfilter-translation
Fix OrderingFilter label translation
This commit is contained in:
commit
470b89c1a1
|
@ -656,12 +656,12 @@ class OrderingFilter(BaseCSVFilter, ChoiceFilter):
|
|||
|
||||
def build_choices(self, fields, labels):
|
||||
ascending = [
|
||||
(param, labels.get(field, pretty_name(param)))
|
||||
(param, labels.get(field, _(pretty_name(param))))
|
||||
for field, param in fields.items()
|
||||
]
|
||||
descending = [
|
||||
('-%s' % pair[0], self.descending_fmt % pair[1])
|
||||
for pair in ascending
|
||||
('-%s' % param, labels.get('-%s' % param, self.descending_fmt % label))
|
||||
for param, label in ascending
|
||||
]
|
||||
|
||||
# interleave the ascending and descending choices
|
||||
|
|
|
@ -10,6 +10,7 @@ INSTALLED_APPS = (
|
|||
'django.contrib.staticfiles',
|
||||
'django.contrib.auth',
|
||||
'rest_framework',
|
||||
'django_filters',
|
||||
'tests.rest_framework',
|
||||
'tests',
|
||||
)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
@ -8,6 +9,8 @@ import mock
|
|||
|
||||
from django import forms
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils import translation
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from django_filters import filters, widgets
|
||||
from django_filters.fields import (
|
||||
|
@ -1174,6 +1177,21 @@ class OrderingFilterTests(TestCase):
|
|||
('-d', 'D (descending)'),
|
||||
))
|
||||
|
||||
def test_field_labels_descending(self):
|
||||
f = OrderingFilter(
|
||||
fields=['username'],
|
||||
field_labels={
|
||||
'username': 'BLABLA',
|
||||
'-username': 'XYZXYZ',
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEqual(f.field.choices, [
|
||||
('', '---------'),
|
||||
('username', 'BLABLA'),
|
||||
('-username', 'XYZXYZ'),
|
||||
])
|
||||
|
||||
def test_normalize_fields(self):
|
||||
f = OrderingFilter.normalize_fields
|
||||
O = OrderedDict
|
||||
|
@ -1213,3 +1231,31 @@ class OrderingFilterTests(TestCase):
|
|||
|
||||
self.assertIsInstance(widget, widgets.BaseCSVWidget)
|
||||
self.assertIsInstance(widget, forms.Select)
|
||||
|
||||
def test_translation_sanity(self):
|
||||
with translation.override('pl'):
|
||||
self.assertEqual(_('Username'), 'Nazwa użytkownika')
|
||||
self.assertEqual(_('%s (descending)') % _('Username'), 'Nazwa użytkownika (malejąco)')
|
||||
|
||||
def test_translation_default_label(self):
|
||||
with translation.override('pl'):
|
||||
f = OrderingFilter(fields=['username'])
|
||||
|
||||
self.assertEqual(f.field.choices, [
|
||||
('', '---------'),
|
||||
('username', 'Nazwa użytkownika'),
|
||||
('-username', 'Nazwa użytkownika (malejąco)'),
|
||||
])
|
||||
|
||||
def test_translation_override_label(self):
|
||||
with translation.override('pl'):
|
||||
f = OrderingFilter(
|
||||
fields=['username'],
|
||||
field_labels={'username': 'BLABLA'},
|
||||
)
|
||||
|
||||
self.assertEqual(f.field.choices, [
|
||||
('', '---------'),
|
||||
('username', 'BLABLA'),
|
||||
('-username', 'BLABLA (malejąco)'),
|
||||
])
|
||||
|
|
Loading…
Reference in New Issue