@@ -162,49 +162,48 @@ class BaseDbModel(object):
Session().delete(obj)
def __repr__(self):
return '<DB:%s>' % (self.__class__.__name__)
_table_args_default_dict = {'extend_existing': True,
'mysql_engine': 'InnoDB',
'sqlite_autoincrement': True,
}
class Setting(Base, BaseDbModel):
__tablename__ = 'settings'
__table_args__ = (
_table_args_default_dict,
)
SETTINGS_TYPES = {
'str': safe_bytes,
'int': safe_int,
'unicode': safe_str,
'bool': asbool,
'list': functools.partial(aslist, sep=',')
DEFAULT_UPDATE_URL = ''
app_settings_id = Column(Integer(), primary_key=True)
app_settings_name = Column(String(255), nullable=False, unique=True)
_app_settings_value = Column("app_settings_value", Unicode(4096), nullable=False)
_app_settings_type = Column("app_settings_type", String(255), nullable=True) # FIXME: not nullable?
def __init__(self, key='', val='', type='unicode'):
self.app_settings_name = key
self.app_settings_value = val
self.app_settings_type = type
@validates('_app_settings_value')
def validate_settings_value(self, key, val):
assert isinstance(val, str)
return val
@hybrid_property
def app_settings_value(self):
v = self._app_settings_value
_type = self.app_settings_type
converter = self.SETTINGS_TYPES.get(_type) or self.SETTINGS_TYPES['unicode']
return converter(v)
@app_settings_value.setter
Status change: