gault-millau/apps/translation/models.py
Виктор Гладких ee93cf9ff6 Fix migrate
2019-10-21 15:15:19 +03:00

65 lines
1.9 KiB
Python

"""Translation app models."""
from django.contrib.postgres.fields import JSONField
from django.db import models
from django.utils.translation import gettext_lazy as _
from utils.models import ProjectBaseMixin, LocaleManagerMixin
class LanguageQuerySet(models.QuerySet):
"""QuerySet for model Language"""
def by_locale(self, locale: str) -> models.QuerySet:
"""Filter by locale"""
return self.filter(locale=locale)
def by_title(self, title: str) -> models.QuerySet:
"""Filter by title"""
return self.filter(title=title)
class Language(models.Model):
"""Language model."""
title = models.CharField(max_length=255,
verbose_name=_('Language title'))
locale = models.CharField(max_length=10,
verbose_name=_('Locale identifier'))
objects = LanguageQuerySet.as_manager()
class Meta:
"""Meta class."""
verbose_name = _('Language')
verbose_name_plural = _('Languages')
unique_together = ('title', 'locale')
def __str__(self):
"""String method"""
return f'{self.title} ({self.locale})'
class SiteInterfaceDictionaryManager(LocaleManagerMixin):
"""Extended manager for SiteInterfaceDictionary model."""
class SiteInterfaceDictionary(ProjectBaseMixin):
"""Site interface dictionary model."""
page = models.CharField(max_length=255, db_index=True,
verbose_name=_('Page'))
keywords = models.CharField(max_length=255, verbose_name='Keywords')
text = JSONField(_('Text'), null=True, blank=True,
default=None, help_text='{"en-GB":"some text"}')
objects = SiteInterfaceDictionaryManager()
class Meta:
"""Meta class."""
verbose_name = _('Site interface dictionary')
verbose_name_plural = _('Site interface dictionary')
def __str__(self):
return f'{self.page}: {self.keywords}'