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