2012-10-27 13:16:49 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
2016-08-04 20:32:22 +00:00
|
|
|
from django.conf import settings
|
2012-10-27 13:16:49 +00:00
|
|
|
from django.utils.translation import ugettext_lazy
|
|
|
|
|
|
2015-05-22 21:49:11 +00:00
|
|
|
from modeltranslation.translator import translator, register, TranslationOptions
|
2012-10-27 13:16:49 +00:00
|
|
|
from modeltranslation.tests.models import (
|
2013-03-06 21:21:09 +00:00
|
|
|
TestModel, FallbackModel, FallbackModel2, FileFieldsModel, ForeignKeyModel, OtherFieldsModel,
|
|
|
|
|
DescriptorModel, AbstractModelA, AbstractModelB, Slugged, MetaData, Displayable, Page,
|
|
|
|
|
RichText, RichTextPage, MultitableModelA, MultitableModelB, MultitableModelC, ManagerTestModel,
|
2013-04-01 18:32:40 +00:00
|
|
|
CustomManagerTestModel, CustomManager2TestModel, GroupFieldsetsModel, NameModel,
|
2013-02-18 16:45:36 +00:00
|
|
|
ThirdPartyRegisteredModel, ProxyTestModel, UniqueNullableModel, OneToOneFieldModel,
|
2017-09-26 13:26:27 +00:00
|
|
|
RequiredModel, DecoratedModel, ModelX, ModelY)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title', 'text', 'url', 'email',)
|
2013-10-23 13:40:45 +00:00
|
|
|
empty_values = ''
|
2012-10-27 13:16:49 +00:00
|
|
|
translator.register(TestModel, TestTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2013-02-21 11:54:05 +00:00
|
|
|
class UniqueNullableTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title',)
|
|
|
|
|
translator.register(UniqueNullableModel, UniqueNullableTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Proxy model testing
|
2013-05-26 18:22:39 +00:00
|
|
|
|
|
|
|
|
class ProxyTestTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title', 'text', 'url', 'email',)
|
|
|
|
|
translator.register(ProxyTestModel, ProxyTestTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Fallback values testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class FallbackModelTranslationOptions(TranslationOptions):
|
2013-02-20 16:31:08 +00:00
|
|
|
fields = ('title', 'text', 'url', 'email', 'description')
|
2012-12-06 12:48:56 +00:00
|
|
|
fallback_values = "fallback"
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(FallbackModel, FallbackModelTranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class FallbackModel2TranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('title', 'text', 'url', 'email',)
|
2013-02-12 11:20:32 +00:00
|
|
|
fallback_values = {'text': ugettext_lazy('Sorry, translation is not available.')}
|
2013-03-17 16:34:05 +00:00
|
|
|
fallback_undefined = {'title': 'no title'}
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(FallbackModel2, FallbackModel2TranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### File fields testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class FileFieldsModelTranslationOptions(TranslationOptions):
|
2013-11-13 18:04:42 +00:00
|
|
|
fields = ('title', 'file', 'file2', 'image',)
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(FileFieldsModel, FileFieldsModelTranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Foreign Key / OneToOneField testing
|
2013-03-06 21:21:09 +00:00
|
|
|
|
|
|
|
|
class ForeignKeyModelTranslationOptions(TranslationOptions):
|
2013-03-13 14:50:22 +00:00
|
|
|
fields = ('title', 'test', 'optional', 'hidden', 'non',)
|
2013-03-06 21:21:09 +00:00
|
|
|
translator.register(ForeignKeyModel, ForeignKeyModelTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2013-10-12 11:58:57 +00:00
|
|
|
class OneToOneFieldModelTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title', 'test', 'optional', 'non',)
|
|
|
|
|
translator.register(OneToOneFieldModel, OneToOneFieldModelTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Custom fields testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-11 14:52:12 +00:00
|
|
|
class OtherFieldsModelTranslationOptions(TranslationOptions):
|
2012-11-17 15:19:15 +00:00
|
|
|
fields = ('int', 'boolean', 'nullboolean', 'csi', 'float', 'decimal',
|
2014-08-02 14:42:14 +00:00
|
|
|
'ip', 'genericip', 'date', 'datetime', 'time',)
|
2012-11-11 14:52:12 +00:00
|
|
|
translator.register(OtherFieldsModel, OtherFieldsModelTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2013-02-13 10:59:11 +00:00
|
|
|
class DescriptorModelTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('trans',)
|
|
|
|
|
translator.register(DescriptorModel, DescriptorModelTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Multitable inheritance testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class MultitableModelATranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('titlea',)
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(MultitableModelA, MultitableModelATranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class MultitableModelBTranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('titleb',)
|
2013-02-11 10:53:01 +00:00
|
|
|
translator.register(MultitableModelB, MultitableModelBTranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class MultitableModelCTranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('titlec',)
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(MultitableModelC, MultitableModelCTranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Abstract inheritance testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class AbstractModelATranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('titlea',)
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(AbstractModelA, AbstractModelATranslationOptions)
|
2012-10-27 13:16:49 +00:00
|
|
|
|
|
|
|
|
|
2012-11-06 19:00:31 +00:00
|
|
|
class AbstractModelBTranslationOptions(TranslationOptions):
|
2012-10-27 13:16:49 +00:00
|
|
|
fields = ('titleb',)
|
2012-11-06 19:00:31 +00:00
|
|
|
translator.register(AbstractModelB, AbstractModelBTranslationOptions)
|
2012-11-11 14:57:44 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Fields inheritance testing
|
2013-02-10 17:04:27 +00:00
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Manager testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-11 14:57:44 +00:00
|
|
|
class ManagerTestModelTranslationOptions(TranslationOptions):
|
2013-02-05 14:15:33 +00:00
|
|
|
fields = ('title', 'visits', 'description')
|
2012-11-11 14:57:44 +00:00
|
|
|
translator.register(ManagerTestModel, ManagerTestModelTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CustomManagerTestModelTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title',)
|
2013-01-07 17:02:15 +00:00
|
|
|
translator.register([CustomManagerTestModel, CustomManager2TestModel],
|
|
|
|
|
CustomManagerTestModelTranslationOptions)
|
2012-11-15 18:08:08 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### TranslationOptions field inheritance testing
|
2012-12-06 17:13:59 +00:00
|
|
|
|
2012-11-15 19:34:20 +00:00
|
|
|
class FieldInheritanceATranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ['titlea']
|
2012-11-15 18:08:08 +00:00
|
|
|
|
2012-11-15 19:34:20 +00:00
|
|
|
|
|
|
|
|
class FieldInheritanceBTranslationOptions(FieldInheritanceATranslationOptions):
|
|
|
|
|
fields = ['titleb']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FieldInheritanceCTranslationOptions(FieldInheritanceBTranslationOptions):
|
|
|
|
|
fields = ['titlec']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FieldInheritanceDTranslationOptions(FieldInheritanceBTranslationOptions):
|
|
|
|
|
fields = ('titled',)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FieldInheritanceETranslationOptions(FieldInheritanceCTranslationOptions,
|
|
|
|
|
FieldInheritanceDTranslationOptions):
|
|
|
|
|
fields = ('titlee',)
|
2013-02-12 11:20:32 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Integration testing
|
2013-04-01 18:32:40 +00:00
|
|
|
|
|
|
|
|
class ThirdPartyTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('name',)
|
|
|
|
|
translator.register(ThirdPartyRegisteredModel, ThirdPartyTranslationOptions)
|
|
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Admin testing
|
2013-02-12 11:20:32 +00:00
|
|
|
|
|
|
|
|
class GroupFieldsetsTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title', 'text',)
|
|
|
|
|
translator.register(GroupFieldsetsModel, GroupFieldsetsTranslationOptions)
|
2013-02-12 14:53:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class NameTranslationOptions(TranslationOptions):
|
2013-10-10 14:54:15 +00:00
|
|
|
fields = ('firstname', 'lastname', 'slug2')
|
2013-02-12 14:53:00 +00:00
|
|
|
translator.register(NameModel, NameTranslationOptions)
|
2013-02-18 16:45:36 +00:00
|
|
|
|
|
|
|
|
|
2014-03-26 23:39:33 +00:00
|
|
|
# ######### Required fields testing
|
2013-02-18 16:45:36 +00:00
|
|
|
|
|
|
|
|
class RequiredTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('non_req', 'req', 'req_reg', 'req_en_reg')
|
|
|
|
|
required_languages = {
|
|
|
|
|
'en': ('req_reg', 'req_en_reg',),
|
|
|
|
|
'default': ('req_reg',), # for all other languages
|
|
|
|
|
}
|
|
|
|
|
translator.register(RequiredModel, RequiredTranslationOptions)
|
2015-05-22 21:49:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# ######### Decorated registration testing
|
|
|
|
|
|
|
|
|
|
@register(DecoratedModel)
|
|
|
|
|
class DecoratedTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('title',)
|
2015-12-13 14:47:01 +00:00
|
|
|
|
|
|
|
|
|
2017-09-26 13:26:27 +00:00
|
|
|
# ######### Complex M2M with abstract classes and custom managers
|
|
|
|
|
|
|
|
|
|
class ModelXOptions(TranslationOptions):
|
|
|
|
|
fields = ('name',)
|
|
|
|
|
translator.register(ModelX, ModelXOptions)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ModelYOptions(TranslationOptions):
|
|
|
|
|
fields = ('title',)
|
|
|
|
|
translator.register(ModelY, ModelYOptions)
|
|
|
|
|
|
|
|
|
|
|
2015-12-13 14:47:01 +00:00
|
|
|
# ######### 3-rd party with custom manager
|
|
|
|
|
|
2019-02-13 15:37:20 +00:00
|
|
|
if "django.contrib.auth" in settings.INSTALLED_APPS:
|
2015-12-13 14:47:01 +00:00
|
|
|
from django.contrib.auth.models import Group
|
2019-02-13 15:29:41 +00:00
|
|
|
from .models import InheritedPermission
|
2015-12-13 14:47:01 +00:00
|
|
|
|
|
|
|
|
@register(Group)
|
|
|
|
|
class GroupTranslationOptions(TranslationOptions):
|
|
|
|
|
fields = ('name',)
|
2019-02-13 15:29:41 +00:00
|
|
|
|
|
|
|
|
@register(InheritedPermission)
|
|
|
|
|
class InheritedPermissionOptions(TranslationOptions):
|
|
|
|
|
fields = ('translated_var',)
|
|
|
|
|
required_languages = [x[0] for x in settings.LANGUAGES]
|