최신 플러그인 구조로 변경
This commit is contained in:
119
model.py
119
model.py
@@ -1,119 +0,0 @@
|
||||
import os
|
||||
import traceback
|
||||
|
||||
from framework import app, db, path_data
|
||||
from framework.logger import get_logger
|
||||
from framework.util import Util
|
||||
|
||||
package_name = __name__.split(".", maxsplit=1)[0]
|
||||
logger = get_logger(package_name)
|
||||
app.config["SQLALCHEMY_BINDS"][package_name] = "sqlite:///%s" % (
|
||||
os.path.join(path_data, "db", f"{package_name}.db")
|
||||
)
|
||||
|
||||
|
||||
class ModelSetting(db.Model):
|
||||
__tablename__ = f"{package_name}_setting"
|
||||
__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 error:
|
||||
logger.error("Exception:%s %s", error, key)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def get_int(key):
|
||||
try:
|
||||
return int(ModelSetting.get(key))
|
||||
except Exception as error:
|
||||
logger.error("Exception:%s %s", error, key)
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
@staticmethod
|
||||
def get_bool(key):
|
||||
try:
|
||||
return ModelSetting.get(key) == "True"
|
||||
except Exception as error:
|
||||
logger.error("Exception:%s %s", error, 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 error:
|
||||
logger.error("Exception:%s", error)
|
||||
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 error:
|
||||
logger.error("Exception:%s", error)
|
||||
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 error:
|
||||
logger.error("Exception:%s", error)
|
||||
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 error:
|
||||
logger.error("Exception:%s %s", error, key)
|
||||
logger.error(traceback.format_exc())
|
||||
Reference in New Issue
Block a user