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.
 
 
 
 
 
 

52 lines
1.6 KiB

# -*- 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)