# -*- coding: utf-8 -*- from django.db import models from hvad.models import TranslatableModel, TranslatedFields from settings import LANGUAGES # from functions.custom_fields import EnumField VALUES = ('int', 'text', 'transl', 'date') class Settings(TranslatableModel): """ Create Settings model, which stores different settings of project Uses hvad.TranslatableModel which is child of django.db.models class """ key = models.CharField(max_length=50) type = EnumField(values=VALUES) int = models.IntegerField(blank=True, null=True) text = models.CharField(max_length=255, blank=True) date = models.DateTimeField(blank=True, null=True) translations = TranslatedFields( transl = models.CharField(max_length=255, blank=True), name = models.CharField(max_length=50), ) def __unicode__(self): return self.key def get_value(self, code=None): """ returns value of setting value can be - int, text, date or translated field """ if self.type == 'transl': obj = Settings._meta.translations_model.objects.get(language_code = code,master__id=getattr(self, 'id')) return getattr(obj, self.type) else: return getattr(self,self.type) def set_value(self, value, code=None): """ sets value of setting """ if self.type == 'transl': obj = Settings._meta.translations_model.objects.get(language_code = code,master__id=getattr(self, 'id')) setattr(obj, self.type, value) obj.save() else: setattr(self, self.type, value)