|
@@ -1,5 +1,6 @@
|
|
import base64
|
|
import base64
|
|
from django.db import models
|
|
from django.db import models
|
|
|
|
+from misago.conf import hydrators
|
|
try:
|
|
try:
|
|
import cPickle as pickle
|
|
import cPickle as pickle
|
|
except ImportError:
|
|
except ImportError:
|
|
@@ -12,58 +13,6 @@ class SettingsGroup(models.Model):
|
|
description = models.TextField(null=True, blank=True)
|
|
description = models.TextField(null=True, blank=True)
|
|
|
|
|
|
|
|
|
|
-# Setting hydrate/dehydrate functions
|
|
|
|
-
|
|
|
|
-def hydrate_string(dry_value):
|
|
|
|
- return dry_value
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def dehydrate_string(wet_value):
|
|
|
|
- return wet_value
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def hydrate_bool(dry_value):
|
|
|
|
- return dry_value == 'True'
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def dehydrate_bool(wet_value):
|
|
|
|
- return 'True' if dry_value else 'False'
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def hydrate_int(dry_value):
|
|
|
|
- return int(dry_value)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def dehydrate_int(wet_value):
|
|
|
|
- return unicode(wet_value)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def hydrate_list(dry_value):
|
|
|
|
- return dry_value.split(',')
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def dehydrate_list(wet_value):
|
|
|
|
- return ','.join(wet_value)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-VALUE_HYDRATORS = {
|
|
|
|
- 'string': (hydrate_string, dehydrate_string),
|
|
|
|
- 'bool': (hydrate_bool, dehydrate_bool),
|
|
|
|
- 'int': (hydrate_int, dehydrate_int),
|
|
|
|
- 'list': (hydrate_list, dehydrate_list),
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def hydrate_value(python_type, dry_value):
|
|
|
|
- value_hydrator = VALUE_HYDRATORS[python_type][0]
|
|
|
|
- return value_hydrator(dry_value)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def dehydrate_value(python_type, wet_value):
|
|
|
|
- value_dehydrator = VALUE_HYDRATORS[python_type][1]
|
|
|
|
- return value_dehydrator(wet_value)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
class Setting(models.Model):
|
|
class Setting(models.Model):
|
|
group = models.ForeignKey('SettingsGroup')
|
|
group = models.ForeignKey('SettingsGroup')
|
|
setting = models.CharField(max_length=255, unique=True)
|
|
setting = models.CharField(max_length=255, unique=True)
|
|
@@ -80,11 +29,11 @@ class Setting(models.Model):
|
|
|
|
|
|
@property
|
|
@property
|
|
def value(self):
|
|
def value(self):
|
|
- return hydrate_value(self.python_type, self.dry_value)
|
|
|
|
|
|
+ return hydrators.hydrate_value(self.python_type, self.dry_value)
|
|
|
|
|
|
@value.setter
|
|
@value.setter
|
|
def value(self, new_value):
|
|
def value(self, new_value):
|
|
- return dehydrate_value(self.python_type, self.new_value)
|
|
|
|
|
|
+ return hydrators.dehydrate_value(self.python_type, self.new_value)
|
|
|
|
|
|
@property
|
|
@property
|
|
def has_custom_value(self):
|
|
def has_custom_value(self):
|