Browse Source

Improved USE_TRANSLATABLE_FIELDS.

master
Erik Stein 7 years ago
parent
commit
0c50efff57
  1. 3
      CHANGES
  2. 3
      shared/utils/conf.py
  3. 5
      shared/utils/models/events.py
  4. 44
      shared/utils/models/pages.py

3
CHANGES

@ -1,3 +1,6 @@
0.2.13 2018-10-13
- Improved USE_TRANSLATABLE_FIELDS
0.2.12 2018-09-28 0.2.12 2018-09-28
- Additional text template tags. - Additional text template tags.

3
shared/utils/conf.py

@ -0,0 +1,3 @@
from django.conf import settings
USE_TRANSLATABLE_FIELDS = getattr(settings, 'USE_TRANSLATABLE_FIELDS', False)

5
shared/utils/models/events.py

@ -3,17 +3,14 @@ from __future__ import unicode_literals
import datetime import datetime
from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from shared.utils.dateformat import format_partial_date, format_date_range from shared.utils.dateformat import format_partial_date, format_date_range
from ..conf import USE_TRANSLATABLE_FIELDS
USE_TRANSLATABLE_FIELDS = getattr(settings, 'CONTENT_USE_TRANSLATABLE_FIELDS', False)
# TODO Implement translatable AutoSlugField: USE_TRANSLATABLE_SLUG_FIELDS = getattr(settings, 'CONTENT_USE_TRANSLATABLE_SLUG_FIELDS', True)
if USE_TRANSLATABLE_FIELDS: if USE_TRANSLATABLE_FIELDS:
from shared.multilingual.utils.fields import TranslatableCharField from shared.multilingual.utils.fields import TranslatableCharField
else: else:

44
shared/utils/models/pages.py

@ -9,17 +9,27 @@ from django.utils.text import normalize_newlines
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from shared.multilingual.utils import i18n_fields_list from shared.multilingual.utils import i18n_fields_list
from ..fields import AutoSlugField
from ..functional import firstof from ..functional import firstof
from ..text import slimdown from ..text import slimdown
from .slugs import DowngradingSlugField
USE_TRANSLATABLE_FIELDS = getattr(settings, 'CONTENT_USE_TRANSLATABLE_FIELDS', False) from ..conf import USE_TRANSLATABLE_FIELDS
# TODO Implement translatable AutoSlugField: USE_TRANSLATABLE_SLUG_FIELDS = getattr(settings, 'CONTENT_USE_TRANSLATABLE_SLUG_FIELDS', True)
if USE_TRANSLATABLE_FIELDS: if USE_TRANSLATABLE_FIELDS:
from shared.multilingual.utils.fields import TranslatableCharField, TranslatableTextField from shared.multilingual.utils.fields import (
TranslatableCharField,
TranslatableTextField
)
# TODO populate_from might use settings.LANGUAGE_CODE
SLUG_POPULATE_FORM = getattr(settings, 'SLUG_POPULATE_FORM', 'name_en')
else:
TranslatableCharField = models.CharField
TranslatableTextField = models.TextField
SLUG_POPULATE_FORM = 'name'
# TODO Make slimdown optional through settings # TODO Make slimdown optional through settings
# TODO Leave window_title alone, do not slimdown # TODO Leave window_title alone, do not slimdown
@ -74,18 +84,14 @@ class PageTitlesMixin(models.Model, PageTitlesFunctionMixin):
pages with an URL. pages with an URL.
""" """
# FIXME signals are not sent from abstract models, therefore AutoSlugField doesn't work # FIXME signals are not sent from abstract models, therefore AutoSlugField doesn't work
if USE_TRANSLATABLE_FIELDS:
short_title = TranslatableCharField(_("Name"), max_length=50) short_title = TranslatableCharField(_("Name"), max_length=50)
title = TranslatableTextField(_("Titel (Langform)"), null=True, blank=True, max_length=300)
window_title = TranslatableCharField(_("Fenster-/Suchmaschinentitel"), null=True, blank=True, max_length=300)
# FIXME populate_from should use settings.LANGUAGE
slug = AutoSlugField(_("URL-Name"), max_length=200, populate_from='short_title_de', unique_slug=True, blank=True)
else: title = TranslatableTextField(_("title/subtitle"),
short_title = models.CharField(_("Name"), max_length=50) null=True, blank=True, max_length=500)
title = models.TextField(_("Titel (Langform)"), null=True, blank=True, max_length=300) window_title = TranslatableCharField(_("window title"),
window_title = models.CharField(_("Fenster-/Suchmaschinentitel"), null=True, blank=True, max_length=300) null=True, blank=True, max_length=300)
slug = AutoSlugField(_("URL-Name"), max_length=200, populate_from='short_title', unique_slug=True, blank=True) slug = DowngradingSlugField(_("URL-Name"), max_length=200,
populate_from=SLUG_POPULATE_FORM, unique_slug=True, blank=True)
class Meta: class Meta:
abstract = True abstract = True
@ -99,10 +105,6 @@ class PageTitleAdminMixin(object):
list_display = ['short_title', 'slug'] list_display = ['short_title', 'slug']
if USE_TRANSLATABLE_FIELDS: if USE_TRANSLATABLE_FIELDS:
search_fields = i18n_fields_list(search_fields) search_fields = i18n_fields_list(search_fields)
prepopulated_fields = { prepopulated_fields = {
'slug': ('short_title_en',), # FIXME Language suffix 'slug': [SLUG_POPULATE_FORM]
} }
else:
prepopulated_fields = {
'slug': ('short_title',), # FIXME Language suffix
}

Loading…
Cancel
Save