2020-02-05 20:54:30 +09:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
#########################################################
|
|
|
|
|
# python
|
2020-03-15 15:29:32 +09:00
|
|
|
import traceback
|
2020-02-05 20:54:30 +09:00
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
# third-party
|
|
|
|
|
|
|
|
|
|
# sjva 공용
|
2020-03-10 17:56:36 +09:00
|
|
|
from framework import app, db, path_app_root
|
2020-03-15 15:29:32 +09:00
|
|
|
from framework.util import Util
|
2020-02-05 20:54:30 +09:00
|
|
|
|
|
|
|
|
# 패키지
|
2020-03-15 15:29:32 +09:00
|
|
|
from .plugin import logger, package_name
|
2020-02-05 20:54:30 +09:00
|
|
|
|
2020-03-15 15:29:32 +09:00
|
|
|
app.config['SQLALCHEMY_BINDS'][package_name] = 'sqlite:///%s' % (os.path.join(path_app_root, 'data', 'db', '%s.db' % package_name))
|
|
|
|
|
#########################################################
|
2020-02-05 20:54:30 +09:00
|
|
|
|
|
|
|
|
class ModelSetting(db.Model):
|
2020-07-23 23:00:02 +09:00
|
|
|
__tablename__ = '%s_setting' % package_name
|
|
|
|
|
__table_args__ = {'mysql_collate': 'utf8_general_ci'}
|
|
|
|
|
__bind_key__ = package_name
|
|
|
|
|
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
key = db.Column(db.String(100), unique=True, nullable=False)
|
|
|
|
|
value = db.Column(db.String, nullable=False)
|
|
|
|
|
|
|
|
|
|
def __init__(self, key, value):
|
|
|
|
|
self.key = key
|
|
|
|
|
self.value = value
|
|
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
|
return repr(self.as_dict())
|
|
|
|
|
|
|
|
|
|
def as_dict(self):
|
|
|
|
|
return {x.name: getattr(self, x.name) for x in self.__table__.columns}
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def get(key):
|
|
|
|
|
try:
|
|
|
|
|
return db.session.query(ModelSetting).filter_by(key=key).first().value.strip()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s %s', e, key)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def get_int(key):
|
|
|
|
|
try:
|
|
|
|
|
return int(ModelSetting.get(key))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s %s', e, key)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def get_bool(key):
|
|
|
|
|
try:
|
|
|
|
|
return ModelSetting.get(key) == 'True'
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s %s', e, key)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def set(key, value):
|
|
|
|
|
try:
|
|
|
|
|
item = db.session.query(ModelSetting).filter_by(key=key).with_for_update().first()
|
|
|
|
|
if item is not None:
|
|
|
|
|
item.value = value.strip()
|
|
|
|
|
db.session.commit()
|
|
|
|
|
else:
|
|
|
|
|
db.session.add(ModelSetting(key, value.strip()))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s', e)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
logger.error('Error Key:%s Value:%s', key, value)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def to_dict():
|
|
|
|
|
try:
|
|
|
|
|
return Util.db_list_to_dict(db.session.query(ModelSetting).all())
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s', e)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def setting_save(req):
|
|
|
|
|
try:
|
|
|
|
|
for key, value in req.form.items():
|
|
|
|
|
if key in ['scheduler', 'is_running']:
|
|
|
|
|
continue
|
|
|
|
|
if key.startswith('tmp_'):
|
|
|
|
|
continue
|
|
|
|
|
logger.debug('Key:%s Value:%s', key, value)
|
|
|
|
|
entity = db.session.query(ModelSetting).filter_by(key=key).with_for_update().first()
|
|
|
|
|
entity.value = value
|
|
|
|
|
db.session.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s', e)
|
|
|
|
|
logger.error(traceback.format_exc())
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def get_list(key):
|
|
|
|
|
try:
|
|
|
|
|
value = ModelSetting.get(key)
|
|
|
|
|
values = [x.strip().strip() for x in value.replace('\n', '|').split('|')]
|
|
|
|
|
values = Util.get_list_except_empty(values)
|
|
|
|
|
return values
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error('Exception:%s %s', e, key)
|
|
|
|
|
logger.error(traceback.format_exc())
|