From 418dcd9803899a0cffe7a1bc562145c38d55f6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Thu, 16 Jul 2020 23:13:15 +0800 Subject: [PATCH] Renamed the get_multi_language_attr() method to get_multi_lingual_attr(), and renamed the multi-lingual model fields from _zhtw to _zh_hant, and _zhcn to _zh_hans. --- accounting/models.py | 11 ++++++----- mia_core/models.py | 26 ++++++++++++++------------ mia_core/utils.py | 12 +++++------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/accounting/models.py b/accounting/models.py index c9e3ba9..c301b64 100644 --- a/accounting/models.py +++ b/accounting/models.py @@ -23,7 +23,7 @@ from django.db import models from django.urls import reverse from mia_core.templatetags.mia_core import smart_month -from mia_core.utils import get_multi_language_attr +from mia_core.utils import get_multi_lingual_attr class Subject(models.Model): @@ -33,10 +33,11 @@ class Subject(models.Model): "self", on_delete=models.PROTECT, null=True, blank=True, db_column="parent_sn") code = models.CharField(max_length=5) - title_zhtw = models.CharField(max_length=32) + title_zh_hant = models.CharField( + max_length=32, db_column="title_zhtw") title_en = models.CharField(max_length=128, null=True, blank=True) - title_zhcn = models.CharField( - max_length=32, null=True, blank=True) + title_zh_hans = models.CharField( + max_length=32, null=True, blank=True, db_column="title_zhcn") created_at = models.DateTimeField( auto_now_add=True, db_column="created") created_by = models.ForeignKey( @@ -60,7 +61,7 @@ class Subject(models.Model): @property def title(self): if self._title is None: - self._title = get_multi_language_attr(self, "title") + self._title = get_multi_lingual_attr(self, "title") return self._title @title.setter diff --git a/mia_core/models.py b/mia_core/models.py index df557b6..cc317df 100644 --- a/mia_core/models.py +++ b/mia_core/models.py @@ -21,7 +21,7 @@ from django.db import models -from mia_core.utils import get_multi_language_attr +from mia_core.utils import get_multi_lingual_attr class Country(models.Model): @@ -29,8 +29,10 @@ class Country(models.Model): sn = models.PositiveIntegerField(primary_key=True) code = models.CharField(max_length=2, unique=True) name_en = models.CharField(max_length=64) - name_zhtw = models.CharField(max_length=32, null=True) - name_zhcn = models.CharField(max_length=32, null=True) + name_zh_hant = models.CharField( + max_length=32, null=True, db_column="name_zhtw") + name_zh_hans = models.CharField( + max_length=32, null=True, db_column="name_zhcn") is_special = models.BooleanField( default=False, db_column="special") created_at = models.DateTimeField( @@ -46,19 +48,19 @@ class Country(models.Model): def __str__(self): """Returns the string representation of this country.""" - return self.code.__str__() + " " + self.name_zhtw.__str__() + return self.code.__str__() + " " + self.name.__str__() - _title = None + _name = None @property - def title(self): - if self._title is None: - self._title = get_multi_language_attr(self, "title") - return self._title + def name(self): + if self._name is None: + self._name = get_multi_lingual_attr(self, "name") + return self._name - @title.setter - def title(self, value): - self._title = value + @name.setter + def name(self, value): + self._name = value class Meta: db_table = "countries" diff --git a/mia_core/utils.py b/mia_core/utils.py index 0ae0293..2447b76 100644 --- a/mia_core/utils.py +++ b/mia_core/utils.py @@ -41,15 +41,13 @@ class Language: is_default = False def __init__(self, language): + self.db = "_" + language.lower().replace("-", "_") if language == "zh-hant": self.locale = "zh-TW" - self.db = "zhtw" elif language == "zh-hans": self.locale = "zh-CN" - self.db = "zhcn" else: self.locale = language - self.db = language self.is_default = (language == settings.LANGUAGE_CODE) @staticmethod @@ -61,8 +59,8 @@ class Language: return Language(get_language()) -def get_multi_language_attr(model, name): - """Returns a multi-language attribute of a data model. +def get_multi_lingual_attr(model, name): + """Returns a multi-lingual attribute of a data model. Args: model (object): The data model. @@ -73,12 +71,12 @@ def get_multi_language_attr(model, name): language if there is no content in the current language. """ language = Language.current() - title = getattr(model, name + "_" + language.db) + title = getattr(model, name + language.db) if language.is_default: return title if title is not None: return title - return getattr(model, name + "_" + Language.default().db) + return getattr(model, name + Language.default().db) class UrlBuilder: