Skip to content

Commit

Permalink
Rename settings.py to conf.py and add additional test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
jieter committed Sep 4, 2017
1 parent 25700c0 commit 77257f7
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 16 deletions.
2 changes: 1 addition & 1 deletion modeltrans/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import django.apps
from django.apps import AppConfig

from .settings import check_fallback_chain
from .conf import check_fallback_chain
from .translator import translate_model


Expand Down
13 changes: 7 additions & 6 deletions modeltrans/settings.py → modeltrans/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,16 @@ def check_fallback_chain():
if 'default' not in MODELTRANS_FALLBACK:
raise ImproperlyConfigured('MODELTRANS_FALLBACK setting must have a `default` key.')

message_fmt = (
'MODELTRANS_FALLBACK contains language `{}` '
'which is not in MODELTRANS_AVAILABLE_LANGUAGES'
)
for lang, chain in MODELTRANS_FALLBACK.items():
if lang != 'default' and lang not in MODELTRANS_AVAILABLE_LANGUAGES:
raise ImproperlyConfigured(message_fmt.format(lang))
for l in chain:
if l not in MODELTRANS_AVAILABLE_LANGUAGES:
raise ImproperlyConfigured(
'MODELTRANS_FALLBACK contains language `{}` '
'which is not in MODELTRANS_AVAILABLE_LANGUAGES'.format(
l
)
)
raise ImproperlyConfigured(message_fmt.format(l))


def get_fallback_chain(lang):
Expand Down
2 changes: 1 addition & 1 deletion modeltrans/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from django.db.models.functions import Cast, Coalesce
from django.utils.translation import ugettext as _

from .settings import get_default_language, get_fallback_chain
from .conf import get_default_language, get_fallback_chain
from .utils import build_localized_fieldname, get_language

SUPPORTED_FIELDS = (
Expand Down
2 changes: 1 addition & 1 deletion modeltrans/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from django.db.models.constants import LOOKUP_SEP
from django.db.models.functions import Cast

from .conf import get_default_language
from .fields import TranslatedVirtualField, TranslationField
from .settings import get_default_language
from .utils import split_translated_fieldname


Expand Down
8 changes: 3 additions & 5 deletions modeltrans/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
from django.db.migrations.loader import MigrationLoader
from django.utils.timezone import now

from modeltrans import __version__ as VERSION
from modeltrans.settings import get_default_language
from modeltrans.utils import split_translated_fieldname
from . import __version__ as VERSION
from .conf import get_default_language
from .utils import split_translated_fieldname

try:
from modeltranslation.translator import translator
Expand Down Expand Up @@ -153,8 +153,6 @@ def write(self, out=None):
if out is None:
out = sys.stdout

from modeltrans import settings

indexes = '\n'.join(
[CREATE_INDEX_TEMPLATE.format(table=Model._meta.db_table) for Model, fields in self.models]
)
Expand Down
2 changes: 1 addition & 1 deletion modeltrans/translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
from django.db.models import Manager

from .conf import get_available_languages, get_default_language
from .fields import TranslationField, translated_field_factory
from .manager import MultilingualManager, transform_translatable_fields
from .settings import get_available_languages, get_default_language


def translate_model(Model):
Expand Down
2 changes: 1 addition & 1 deletion modeltrans/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.utils.functional import lazy
from django.utils.translation import get_language as _get_language

from .settings import get_available_languages, get_default_language
from .conf import get_available_languages, get_default_language


def get_language():
Expand Down
44 changes: 44 additions & 0 deletions tests/test_conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase, override_settings

from modeltrans.conf import check_fallback_chain


class FallbackConfTest(TestCase):

@override_settings(
MODELTRANS_FALLBACK={
'fy': ('nl', 'en')
}
)
def test_fallback_must_have_default(self):
message = 'MODELTRANS_FALLBACK setting must have a `default` key.'

with self.assertRaisesMessage(ImproperlyConfigured, message):
check_fallback_chain()

@override_settings(
MODELTRANS_AVAILABLE_LANGUAGES=('nl', 'en'),
MODELTRANS_FALLBACK={
'default': ('en', ),
'fy': ('nl', 'en')
}
)
def test_fallback_must_use_available_languages_as_key(self):
message = 'MODELTRANS_FALLBACK contains language `fy` which is not in MODELTRANS_AVAILABLE_LANGUAGES'

with self.assertRaisesMessage(ImproperlyConfigured, message):
check_fallback_chain()

@override_settings(
MODELTRANS_AVAILABLE_LANGUAGES=('fy', 'nl', 'en'),
MODELTRANS_FALLBACK={
'default': ('en', ),
'fy': ('nl', 'fr', 'en')
}
)
def test_fallback_must_use_available_languages_in_chain(self):
message = 'MODELTRANS_FALLBACK contains language `fr` which is not in MODELTRANS_AVAILABLE_LANGUAGES'

with self.assertRaisesMessage(ImproperlyConfigured, message):
check_fallback_chain()

0 comments on commit 77257f7

Please sign in to comment.