You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
# -*- coding: utf-8 -*-
|
|
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _, get_language
|
|
from sorl.thumbnail import ImageField
|
|
from hvad.models import TranslatableModel, TranslatedFields
|
|
from functions.custom_fields import EnumField
|
|
|
|
|
|
class Html(TranslatableModel):
|
|
name = models.CharField(max_length=100, blank=True)
|
|
translations = TranslatedFields(
|
|
text=models.TextField()
|
|
)
|
|
|
|
def __unicode__(self):
|
|
return self.name
|
|
|
|
|
|
class LandingComment(TranslatableModel):
|
|
translations = TranslatedFields(
|
|
text=models.TextField(verbose_name=_(u'Комментарий')),
|
|
name=models.CharField(verbose_name=_(u'Имя Фамилия'), max_length=255),
|
|
position=models.CharField(verbose_name=_(u'Должность'), max_length=255),
|
|
)
|
|
logo = models.ImageField(verbose_name=_(u'Лого'), upload_to='landing/comments/', max_length=255)
|
|
|
|
def __unicode__(self):
|
|
return self.lazy_translation_getter('name', self.pk)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(LandingComment, self).__init__(*args, **kwargs)
|
|
self.cache_fields = ['name', 'position', 'text']
|
|
self.is_new = True
|
|
|
|
def save(self, *args, **kwargs):
|
|
return super(LandingComment, self).save(*args, **kwargs)
|
|
|
|
self.initial_language = get_language()[:2] or 'ru'
|
|
|
|
new_values = {field: getattr(self, field) for field in self.cache_fields}
|
|
langs = [code for code, _ in settings.LANGUAGES]
|
|
if self.is_new:
|
|
for lang in langs:
|
|
if lang not in self.get_available_languages():
|
|
self.translate(lang)
|
|
for key, value in new_values.items():
|
|
setattr(self, key, value)
|
|
self.save_translations(self)
|
|
else:
|
|
translations = {obj.language_code: obj for obj in list(self.translations.all())}
|
|
for lang in langs:
|
|
if lang is not self.initial_language:
|
|
tr = translations[lang]
|
|
for key, value in new_values.items():
|
|
#if u'%s' % getattr(tr, key) is u'%s' % self.var_cache[key]:
|
|
setattr(tr, key, value)
|
|
tr.save()
|
|
|
|
self.lazy_translation_getter(self.initial_language)
|
|
self.var_cache = {var: copy.copy(getattr(self, var)) for var in self.cache_fields}
|
|
self.is_new = False
|
|
return self
|
|
|
|
|
|
class LandingParticipationComment(TranslatableModel):
|
|
translations = TranslatedFields(
|
|
text=models.TextField(verbose_name=_(u'Комментарий')),
|
|
name=models.CharField(verbose_name=_(u'Имя Фамилия'), max_length=255),
|
|
position=models.CharField(verbose_name=_(u'Должность'), max_length=255),
|
|
)
|
|
logo = models.ImageField(verbose_name=_(u'Лого'), upload_to='landing/comments/', max_length=255)
|
|
|
|
def __unicode__(self):
|
|
return self.lazy_translation_getter('name', self.pk)
|
|
|