JourneyJoker/frontend/fields.py
2021-06-14 06:06:32 +02:00

23 lines
No EOL
766 B
Python

from django.conf import settings
from django.db import models
from .validators import LanguageValidator
class LanguageField(models.CharField):
default_validators = [LanguageValidator()]
def __init__(self, *args, **kwargs):
kwargs.setdefault("max_length", 16)
super().__init__(*args, **kwargs)
def pre_save(self, model_instance, add):
value = getattr(model_instance, self.attname, None)
if value:
value = value.lower()
if "_" in value:
lang, country = value.split("_")
value = "_".join([lang, country.upper()])
setattr(model_instance, self.attname, value)
return value
else:
return super().pre_save(model_instance, add)