Django_Basic_Manufacturing_3/venv/Lib/site-packages/modeltranslation/tests/translation.py
2025-08-22 17:05:22 +07:00

325 lines
7.2 KiB
Python

from django.conf import settings
from django.contrib.auth.models import Group
from django.utils.translation import gettext_lazy
from modeltranslation.tests import models
from modeltranslation.tests.models import InheritedPermission
from modeltranslation.translator import TranslationOptions, register, translator
@register(models.TestModel)
class TestTranslationOptions(TranslationOptions):
fields = (
"title",
"text",
"url",
"email",
"dynamic_default",
)
empty_values = ""
@register(models.UniqueNullableModel)
class UniqueNullableTranslationOptions(TranslationOptions):
fields = ("title",)
@register(models.ModelWithConstraint)
class ModelWithConstrainTranslationOptions(TranslationOptions):
fields = ("sub_title",)
# ######### Proxy model testing
@register(models.ProxyTestModel)
class ProxyTestTranslationOptions(TranslationOptions):
fields = (
"title",
"text",
"url",
"email",
)
# ######### Fallback values testing
@register(models.FallbackModel)
class FallbackModelTranslationOptions(TranslationOptions):
fields = ("title", "text", "url", "email", "description")
fallback_values = "fallback"
@register(models.FallbackModel2)
class FallbackModel2TranslationOptions(TranslationOptions):
fields = (
"title",
"text",
"url",
"email",
)
fallback_values = {"text": gettext_lazy("Sorry, translation is not available.")}
fallback_undefined = {"title": "no title"}
# ######### File fields testing
@register(models.FileFieldsModel)
class FileFieldsModelTranslationOptions(TranslationOptions):
fields = (
"title",
"file",
"file2",
"image",
)
# ######### Foreign Key / OneToOneField / ManytoManyField testing
@register(models.ForeignKeyModel)
class ForeignKeyModelTranslationOptions(TranslationOptions):
fields = (
"title",
"test",
"optional",
"hidden",
"non",
)
@register(models.OneToOneFieldModel)
class OneToOneFieldModelTranslationOptions(TranslationOptions):
fields = (
"title",
"test",
"optional",
"non",
)
@register(models.FilteredTestModel)
class FilteredTestModelTranslationOptions(TranslationOptions):
fields = ("title",)
@register(models.ForeignKeyFilteredModel)
class ForeignKeyFilteredModelTranslationOptions(TranslationOptions):
fields = ("title",)
@register(models.ManyToManyFieldModel)
class ManyToManyFieldModelTranslationOptions(TranslationOptions):
fields = (
"title",
"test",
"self_call_1",
"self_call_2",
"through_model",
"trans_through_model",
"untrans",
)
@register(models.RegisteredThroughModel)
class RegisteredThroughModelTranslationOptions(TranslationOptions):
fields = ("title",)
# ######### Custom fields testing
@register(models.OtherFieldsModel)
class OtherFieldsModelTranslationOptions(TranslationOptions):
fields = (
"int",
"boolean",
"float",
"decimal",
"genericip",
"date",
"datetime",
"time",
"json",
)
@register(models.DescriptorModel)
class DescriptorModelTranslationOptions(TranslationOptions):
fields = ("trans",)
# ######### Multitable inheritance testing
@register(models.MultitableModelA)
class MultitableModelATranslationOptions(TranslationOptions):
fields = ("titlea",)
@register(models.MultitableModelB)
class MultitableModelBTranslationOptions(TranslationOptions):
fields = ("titleb",)
@register(models.MultitableModelC)
class MultitableModelCTranslationOptions(TranslationOptions):
fields = ("titlec",)
# ######### Abstract inheritance testing
@register(models.AbstractModelA)
class AbstractModelATranslationOptions(TranslationOptions):
fields = ("titlea",)
@register(models.AbstractModelB)
class AbstractModelBTranslationOptions(TranslationOptions):
fields = ("titleb",)
# ######### 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(models.Slugged, SluggedTranslationOptions)
translator.register(models.MetaData, MetaDataTranslationOptions)
translator.register(models.RichText, RichTextTranslationOptions)
translator.register(models.Displayable)
translator.register(models.Page, PageTranslationOptions)
translator.register(models.RichTextPage)
# ######### Manager testing
@register(models.ManagerTestModel)
class ManagerTestModelTranslationOptions(TranslationOptions):
fields = ("title", "visits", "description")
@register(
[
models.CustomManagerTestModel,
models.CustomManager2TestModel,
models.CustomManagerChildTestModel,
models.PlainChildTestModel,
]
)
class CustomManagerTestModelTranslationOptions(TranslationOptions):
fields = ("title",)
# ######### 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"]
# ######### Integration testing
@register(models.ThirdPartyRegisteredModel)
class ThirdPartyTranslationOptions(TranslationOptions):
fields = ("name",)
# ######### Admin testing
@register(models.GroupFieldsetsModel)
class GroupFieldsetsTranslationOptions(TranslationOptions):
fields = (
"title",
"text",
)
@register(models.NameModel)
class NameTranslationOptions(TranslationOptions):
fields = ("firstname", "lastname", "slug2")
# ######### Required fields testing
@register(models.RequiredModel)
class RequiredTranslationOptions(TranslationOptions):
fields = ("non_req", "req", "req_reg", "req_en_reg")
required_languages = {
"en": (
# We include `non_req` field here, to test that it's `blank` attribute is preserved,
# even when languages is required.
"non_req",
"req_reg",
"req_en_reg",
),
"default": ("req_reg",), # for all other languages
}
# ######### Complex M2M with abstract classes and custom managers
@register(models.ModelX)
class ModelXOptions(TranslationOptions):
fields = ("name",)
@register(models.ModelY)
class ModelYOptions(TranslationOptions):
fields = ("title",)
# ######### 3-rd party with custom manager
@register(Group)
class GroupTranslationOptions(TranslationOptions):
fields = ("name",)
@register(InheritedPermission)
class InheritedPermissionOptions(TranslationOptions):
fields = ("translated_var",)
required_languages = [x[0] for x in settings.LANGUAGES]