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.
 
 
 
 
 
 

81 lines
2.3 KiB

# -*- coding: utf-8 -*-
from django.db import models
from hvad.models import TranslatableModel, TranslatedFields
from django.conf import settings
#
from functions.custom_fields import EnumField
class Setting(TranslatableModel):
"""
Create Settings model, which stores different settings of project
Uses hvad.TranslatableModel which is child of django.db.models class
"""
VALUES = ('int', 'text', 'transl', 'date')
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,default='111'),
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 = Setting._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 = Setting._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)
from django.db.models.signals import post_save
from django.dispatch import receiver
#@receiver(post_save, sender=Setting)
def create_transl_fields(sender, **kw):
"""
"""
setting = kw['instance']
setting.text = '111'
setting.save()
#if kwargs['created'] and setting.type == 'transl':
# setting.int = 1
#if len(setting.LANGUAGES) in range(10):
# for lid, (code, name) in enumerate(settings.LANGUAGES):
# using enumerate for detect iteration number
# first iteration is a default lang so it required fields
#post_save.connect(create_transl_fields, sender=Setting)