app_logs_manager.py 3.82 KB
Newer Older
wanli's avatar
wanli committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#!/usr/bin/env python
# -*- coding: utf_8 -*-

import copy
import time
import types
import json
import logging
import traceback
from datetime import datetime
from pony.orm import *
from model import fullStackDB
from model.app_logs import AppLogs
from model.user import User
from utils import sql_filter

logger = logging.getLogger("AppLogsManager")

class AppLogsManager(object):
    def __init__(self):
        super(AppLogsManager, self).__init__()

    def add(self, user, data):
        # 判断角色名是否存在
        result = AppLogs.get(name=data.get("name"))
        if result:
            return False, "app logs name has been exists."

        editor = User.get(id=user)
        if not editor:
            return False, "current user is not exists"

        data.update({
            'create_by': editor,
            'create_at': datetime.now(),
        })

        result = fullStackDB.add(AppLogs, **data)
        return result, "add app logs {}.".format("success" if result else "fail")

    def delete(self, user, uuid):
        with db_session:
            editor = User.get(id=user)
            if not editor:
                return False, "current user is not exists"

            result = AppLogs.get(uuid=uuid)
            if result:
                result.delete()

            return result, "delete app logs {}.".format("success" if result else "fail")

    def get(self, data):
        result = AppLogs.get(**data)
        if result:
            result = result.to_dict(with_collections=True, related_objects=True, only=["uuid", "name", "create_at", "update_at", "delete_at"])
        return result, "get app logs {}.".format("success" if result else "fail")

    def getList(self, user, data):
        if not data or len(data) <= 0:
            return False, 0, "parameters can not be null"

        temp = copy.deepcopy(data)
        if 'pagenum' in temp:
            temp.pop('pagenum')
        if 'pagesize' in temp:
            temp.pop('pagesize')
        if 'scope_type' in temp:
            temp.pop('scope_type')

        with db_session:
wanli's avatar
wanli committed
72 73 74
            editor = User.get(id=user)
            if not editor:
                return False, "current user is not exists"
wanli's avatar
wanli committed
75

wanli's avatar
wanli committed
76
            if editor.role != "administrator":
wanli's avatar
wanli committed
77
                temp.update({ 'create_by': editor })
wanli's avatar
wanli committed
78

wanli's avatar
wanli committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
            if "scope_type" in data and data.get("scope_type") == "list":
                result = AppLogs.select().where(**temp).order_by(desc(AppLogs.create_at))
                temp = []
                for item in result:
                    temp.append(item.to_dict(only=["uuid", "app_name"]))
                return temp, len(temp), "get select {}.".format("success" if temp else "no data")

            result = AppLogs.select().where(**temp).order_by(desc(AppLogs.create_at)).page(data.get("pagenum", 1), data.get("pagesize", 10))
            count = AppLogs.select().where(**temp).count()

        if result and len(result):
            temp = []
            for item in result:
                t = item.to_dict(with_collections=True, related_objects=True)
                t.update({
                    "create_at": item.create_at.strftime("%Y-%m-%d %H:%M:%S"),
                    "create_by": item.create_by.to_dict(only=["uuid", "username"]),
                })
                temp.append(t)
            result = temp

        return result, count, "get app logs {}.".format("success" if result else "no data")

    def update(self, user, uuid, data):
        # 当参数为空时,直接返回错误
        if len(data) <= 0 or (len(data.keys()) == 1 and "id" in data):
            return False, "parameters can not be null."

        # 查询请求者是否存在
        editor = User.get(id=user)
        if not editor:
            return False, "current user is not exists"

        return True, "update app logs {}.".format("success" if True else "fail")

appLogsManager = AppLogsManager()