Merge pull request #546 from rpkilby/fix-orderingfilter-translation

Fix OrderingFilter label translation
This commit is contained in:
Carlton Gibson 2016-11-08 11:01:20 +01:00 committed by GitHub
commit 470b89c1a1
3 changed files with 50 additions and 3 deletions

View File

@ -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

View File

@ -10,6 +10,7 @@ INSTALLED_APPS = (
'django.contrib.staticfiles',
'django.contrib.auth',
'rest_framework',
'django_filters',
'tests.rest_framework',
'tests',
)

View File

@ -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)'),
])