# -*- 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 ParticipationComment(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) class EventDefaultDescription(TranslatableModel): translations = TranslatedFields( expo_description=models.TextField( _(u'Описание для выставки'), blank=True ), conf_description=models.TextField( _(u'Описание для конференции'), blank=True ) ) def __unicode__(self): return str(self.pk)