mirror of
https://github.com/Hopiu/django-modeltranslation.git
synced 2026-05-18 09:31:10 +00:00
It can be used with ``get_or_create`` (without resaving) and, more importantly, fixture loading. Extend population by providing two new modes: ``default`` that sets just the default translation (only if its not given; ensuring a fallback is available; alike ``update_translation_fields``) and ``required`` that further limits population by only filling default translation of non-nullable fields (minimum to keep some level of consistency). Add a ``populate(mode)`` toggle on multilingual query set / manager and an ``auto_populate`` context manager for fixture loading.
154 lines
4.9 KiB
Python
154 lines
4.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.utils.translation import ugettext_lazy
|
|
|
|
from modeltranslation.translator import translator, TranslationOptions
|
|
from modeltranslation.tests.models import (
|
|
TestModel, FallbackModel, FallbackModel2, FileFieldsModel, OtherFieldsModel, DescriptorModel,
|
|
AbstractModelA, AbstractModelB, Slugged, MetaData, Displayable, Page, RichText, RichTextPage,
|
|
MultitableModelA, MultitableModelB, MultitableModelC, ManagerTestModel, CustomManagerTestModel,
|
|
CustomManager2TestModel, GroupFieldsetsModel, NameModel)
|
|
|
|
|
|
class TestTranslationOptions(TranslationOptions):
|
|
fields = ('title', 'text', 'url', 'email',)
|
|
translator.register(TestModel, TestTranslationOptions)
|
|
|
|
|
|
########## Fallback values testing
|
|
|
|
class FallbackModelTranslationOptions(TranslationOptions):
|
|
fields = ('title', 'text', 'url', 'email',)
|
|
fallback_values = "fallback"
|
|
translator.register(FallbackModel, FallbackModelTranslationOptions)
|
|
|
|
|
|
class FallbackModel2TranslationOptions(TranslationOptions):
|
|
fields = ('title', 'text', 'url', 'email',)
|
|
fallback_values = {'text': ugettext_lazy('Sorry, translation is not available.')}
|
|
translator.register(FallbackModel2, FallbackModel2TranslationOptions)
|
|
|
|
|
|
########## File fields testing
|
|
|
|
class FileFieldsModelTranslationOptions(TranslationOptions):
|
|
fields = ('title', 'file', 'image',)
|
|
translator.register(FileFieldsModel, FileFieldsModelTranslationOptions)
|
|
|
|
|
|
########## Custom fields testing
|
|
|
|
class OtherFieldsModelTranslationOptions(TranslationOptions):
|
|
# fields = ('int', 'boolean', 'nullboolean', 'csi', 'float', 'decimal',
|
|
# 'ip', 'genericip')
|
|
fields = ('int', 'boolean', 'nullboolean', 'csi', 'float', 'decimal',
|
|
'ip', 'date', 'datetime', 'time',)
|
|
translator.register(OtherFieldsModel, OtherFieldsModelTranslationOptions)
|
|
|
|
|
|
class DescriptorModelTranslationOptions(TranslationOptions):
|
|
fields = ('trans',)
|
|
translator.register(DescriptorModel, DescriptorModelTranslationOptions)
|
|
|
|
|
|
########## Multitable inheritance testing
|
|
|
|
class MultitableModelATranslationOptions(TranslationOptions):
|
|
fields = ('titlea',)
|
|
translator.register(MultitableModelA, MultitableModelATranslationOptions)
|
|
|
|
|
|
class MultitableModelBTranslationOptions(TranslationOptions):
|
|
fields = ('titleb',)
|
|
translator.register(MultitableModelB, MultitableModelBTranslationOptions)
|
|
|
|
|
|
class MultitableModelCTranslationOptions(TranslationOptions):
|
|
fields = ('titlec',)
|
|
translator.register(MultitableModelC, MultitableModelCTranslationOptions)
|
|
|
|
|
|
########## Abstract inheritance testing
|
|
|
|
class AbstractModelATranslationOptions(TranslationOptions):
|
|
fields = ('titlea',)
|
|
translator.register(AbstractModelA, AbstractModelATranslationOptions)
|
|
|
|
|
|
class AbstractModelBTranslationOptions(TranslationOptions):
|
|
fields = ('titleb',)
|
|
translator.register(AbstractModelB, AbstractModelBTranslationOptions)
|
|
|
|
|
|
########## Fields inheritance testing
|
|
|
|
class SluggedTranslationOptions(TranslationOptions):
|
|
fields = ('slug',)
|
|
|
|
|
|
class MetaDataTranslationOptions(TranslationOptions):
|
|
fields = ('keywords',)
|
|
|
|
|
|
class RichTextTranslationOptions(TranslationOptions):
|
|
fields = ('content',)
|
|
|
|
|
|
class PageTranslationOptions(TranslationOptions):
|
|
fields = ('title',)
|
|
|
|
|
|
# BasePage left unregistered intentionally.
|
|
translator.register(Slugged, SluggedTranslationOptions)
|
|
translator.register(MetaData, MetaDataTranslationOptions)
|
|
translator.register(RichText, RichTextTranslationOptions)
|
|
translator.register(Displayable)
|
|
translator.register(Page, PageTranslationOptions)
|
|
translator.register(RichTextPage)
|
|
|
|
|
|
########## Manager testing
|
|
|
|
class ManagerTestModelTranslationOptions(TranslationOptions):
|
|
fields = ('title', 'visits', 'description')
|
|
translator.register(ManagerTestModel, ManagerTestModelTranslationOptions)
|
|
|
|
|
|
class CustomManagerTestModelTranslationOptions(TranslationOptions):
|
|
fields = ('title',)
|
|
translator.register([CustomManagerTestModel, CustomManager2TestModel],
|
|
CustomManagerTestModelTranslationOptions)
|
|
|
|
|
|
########## TranslationOptions field inheritance testing
|
|
|
|
class FieldInheritanceATranslationOptions(TranslationOptions):
|
|
fields = ['titlea']
|
|
|
|
|
|
class FieldInheritanceBTranslationOptions(FieldInheritanceATranslationOptions):
|
|
fields = ['titleb']
|
|
|
|
|
|
class FieldInheritanceCTranslationOptions(FieldInheritanceBTranslationOptions):
|
|
fields = ['titlec']
|
|
|
|
|
|
class FieldInheritanceDTranslationOptions(FieldInheritanceBTranslationOptions):
|
|
fields = ('titled',)
|
|
|
|
|
|
class FieldInheritanceETranslationOptions(FieldInheritanceCTranslationOptions,
|
|
FieldInheritanceDTranslationOptions):
|
|
fields = ('titlee',)
|
|
|
|
|
|
########## Admin testing
|
|
|
|
class GroupFieldsetsTranslationOptions(TranslationOptions):
|
|
fields = ('title', 'text',)
|
|
translator.register(GroupFieldsetsModel, GroupFieldsetsTranslationOptions)
|
|
|
|
|
|
class NameTranslationOptions(TranslationOptions):
|
|
fields = ('firstname', 'lastname',)
|
|
translator.register(NameModel, NameTranslationOptions)
|