mirror of https://github.com/veops/cmdb.git
75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
# -*- coding:utf-8 -*-
|
|
|
|
from flask import abort
|
|
|
|
from api.lib.cmdb.resp_format import ErrFormat
|
|
from api.models.cmdb import CustomDashboard
|
|
from api.models.cmdb import SystemConfig
|
|
|
|
|
|
class CustomDashboardManager(object):
|
|
cls = CustomDashboard
|
|
|
|
@staticmethod
|
|
def get():
|
|
return sorted(CustomDashboard.get_by(to_dict=True), key=lambda x: (x["category"], x['order']))
|
|
|
|
@staticmethod
|
|
def add(**kwargs):
|
|
from api.lib.cmdb.cache import CMDBCounterCache
|
|
|
|
if kwargs.get('name'):
|
|
CustomDashboard.get_by(name=kwargs['name']) and abort(400, ErrFormat.custom_name_duplicate)
|
|
|
|
new = CustomDashboard.create(**kwargs)
|
|
|
|
CMDBCounterCache.update(new.to_dict())
|
|
|
|
return new
|
|
|
|
@staticmethod
|
|
def update(_id, **kwargs):
|
|
from api.lib.cmdb.cache import CMDBCounterCache
|
|
|
|
existed = CustomDashboard.get_by_id(_id) or abort(404, ErrFormat.not_found)
|
|
|
|
new = existed.update(**kwargs)
|
|
|
|
CMDBCounterCache.update(new.to_dict())
|
|
|
|
return new
|
|
|
|
@staticmethod
|
|
def batch_update(id2options):
|
|
for _id in id2options:
|
|
existed = CustomDashboard.get_by_id(_id) or abort(404, ErrFormat.not_found)
|
|
existed.update(options=id2options[_id])
|
|
|
|
@staticmethod
|
|
def delete(_id):
|
|
existed = CustomDashboard.get_by_id(_id) or abort(404, ErrFormat.not_found)
|
|
|
|
existed.soft_delete()
|
|
|
|
|
|
class SystemConfigManager(object):
|
|
cls = SystemConfig
|
|
|
|
@staticmethod
|
|
def get(name):
|
|
return SystemConfig.get_by(name=name, first=True, to_dict=True)
|
|
|
|
@staticmethod
|
|
def create_or_update(name, option):
|
|
existed = SystemConfig.get_by(name=name, first=True, to_dict=False)
|
|
if existed is not None:
|
|
return existed.update(option=option)
|
|
else:
|
|
return SystemConfig.create(name=name, option=option)
|
|
|
|
@staticmethod
|
|
def delete(name):
|
|
existed = SystemConfig.get_by(name=name, first=True, to_dict=False) or abort(404, ErrFormat.not_found)
|
|
|
|
existed.soft_delete()
|