add I18nField and replace the title JSONField with it

This commit is contained in:
Laura Klünder 2017-11-30 00:43:39 +01:00
parent 968fc3885d
commit f94be40470
4 changed files with 174 additions and 18 deletions

View file

@ -5,7 +5,7 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import get_language, get_language_info
from c3nav.mapdata.fields import JSONField
from c3nav.mapdata.fields import I18nField
from c3nav.mapdata.models import MapUpdate
@ -47,7 +47,7 @@ class SerializableMixin(models.Model):
class TitledMixin(SerializableMixin, models.Model):
titles = JSONField(default={})
title = I18nField(plural_name='titles', fallback_any=True, fallback_value='{model_name} {pk}')
class Meta:
abstract = True
@ -75,15 +75,6 @@ class TitledMixin(SerializableMixin, models.Model):
result['display'].append((language, title))
return result
@property
def title(self):
lang = get_language()
if self.titles:
if lang in self.titles:
return self.titles[lang]
return next(iter(self.titles.values()))
return super().title
class BoundsMixin(SerializableMixin, models.Model):
bottom = models.DecimalField(_('bottom coordinate'), max_digits=6, decimal_places=2)

View file

@ -117,12 +117,6 @@ class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model):
return code+':'+str(self.id)
return self.slug
@property
def title(self):
if not self.titles and self.slug:
return self._meta.verbose_name + ' ' + self.slug
return super().title
@property
def subtitle(self):
return ''