test
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
VERSION="4.0.0"
|
||||
from support import d
|
||||
|
||||
from .init_main import Framework
|
||||
|
||||
frame = Framework.get_instance()
|
||||
F = frame
|
||||
logger = frame.logger
|
||||
@@ -13,11 +15,13 @@ path_app_root = frame.path_app_root
|
||||
path_data = frame.path_data
|
||||
get_logger = frame.get_logger
|
||||
|
||||
from .init_declare import check_api, User
|
||||
from flask_login import login_required
|
||||
|
||||
from .init_declare import User, check_api
|
||||
from .scheduler import Job
|
||||
|
||||
frame.initialize_system()
|
||||
from system.setup import SystemModelSetting
|
||||
|
||||
frame.initialize_plugin()
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
from flask import request, abort
|
||||
from functools import wraps
|
||||
from flask import request
|
||||
|
||||
from flask import abort, request
|
||||
|
||||
|
||||
def check_api(original_function):
|
||||
@wraps(original_function)
|
||||
def wrapper_function(*args, **kwargs): #1
|
||||
from framework import F
|
||||
|
||||
#logger.debug('CHECK API... {} '.format(original_function.__module__))
|
||||
#logger.warning(request.url)
|
||||
#logger.warning(request.form)
|
||||
@@ -31,6 +32,8 @@ def check_api(original_function):
|
||||
|
||||
# Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언
|
||||
import logging
|
||||
|
||||
|
||||
class CustomFormatter(logging.Formatter):
|
||||
"""Logging Formatter to add colors and count warning / errors"""
|
||||
|
||||
@@ -61,8 +64,8 @@ class CustomFormatter(logging.Formatter):
|
||||
# Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언
|
||||
def read_yaml(filepath):
|
||||
import yaml
|
||||
#with open(filepath, encoding='utf8') as file:
|
||||
with open(filepath, 'rb') as file:
|
||||
with open(filepath, encoding='utf8') as file:
|
||||
#with open(filepath, 'rb') as file:
|
||||
data = yaml.load(file, Loader=yaml.FullLoader)
|
||||
return data
|
||||
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
import os, sys, traceback, time, logging, logging.handlers, shutil, platform
|
||||
import logging
|
||||
import logging.handlers
|
||||
import os
|
||||
import platform
|
||||
import shutil
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
from pytz import timezone, utc
|
||||
|
||||
from flask import Flask
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flask_socketio import SocketIO
|
||||
from flask_cors import CORS
|
||||
from flaskext.markdown import Markdown
|
||||
from flask_login import LoginManager, login_required
|
||||
from flask_socketio import SocketIO
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flaskext.markdown import Markdown
|
||||
from pytz import timezone, utc
|
||||
|
||||
from .init_declare import CustomFormatter, check_api
|
||||
|
||||
from .init_declare import check_api, CustomFormatter
|
||||
|
||||
class Framework:
|
||||
__instance = None
|
||||
@@ -63,7 +71,7 @@ class Framework:
|
||||
self.db = SQLAlchemy(self.app, session_options={"autoflush": False})
|
||||
|
||||
if True or self.config['run_flask']:
|
||||
from .scheduler import Scheduler, Job
|
||||
from .scheduler import Job, Scheduler
|
||||
self.scheduler = Scheduler(self)
|
||||
self.Job = Job
|
||||
|
||||
@@ -85,6 +93,7 @@ class Framework:
|
||||
def __init_celery(self):
|
||||
try:
|
||||
from celery import Celery
|
||||
|
||||
#if frame.config['use_celery'] == False or platform.system() == 'Windows':
|
||||
if self.config['use_celery'] == False:
|
||||
raise Exception('no celery')
|
||||
@@ -106,6 +115,7 @@ class Framework:
|
||||
from celery import bootsteps
|
||||
#from celery.bin.base import CeleryOption
|
||||
from click import Option
|
||||
|
||||
#from celery.bin import Option # 4.3.0
|
||||
celery.user_options['worker'].add(
|
||||
Option(('--config_filepath',), help='')
|
||||
@@ -154,6 +164,7 @@ class Framework:
|
||||
|
||||
def initialize_plugin(self):
|
||||
from system.setup import P as SP
|
||||
|
||||
from .init_web import jinja_initialize
|
||||
jinja_initialize(self.app)
|
||||
|
||||
@@ -173,8 +184,7 @@ class Framework:
|
||||
if self.config.get('port') == None:
|
||||
self.config['port'] = SP.SystemModelSetting.get_int('port')
|
||||
|
||||
from . import log_viewer
|
||||
from . import init_route
|
||||
from . import init_route, log_viewer
|
||||
|
||||
self.__make_default_logger()
|
||||
self.logger.info('### LAST')
|
||||
@@ -187,6 +197,7 @@ class Framework:
|
||||
if self.config['run_flask'] and self.config.get('use_celery') == True:
|
||||
try:
|
||||
from gevent import monkey
|
||||
|
||||
#from gevent import monkey;monkey.patch_all()
|
||||
#print('[MAIN] gevent mokey patch!!')
|
||||
#sys.getfilesystemencoding = lambda: 'UTF-8'
|
||||
@@ -263,6 +274,7 @@ class Framework:
|
||||
|
||||
def __load_config(self):
|
||||
from .init_declare import read_yaml
|
||||
|
||||
#if self.config['run_flask']:
|
||||
if self.config['arg_config'] == '.':
|
||||
#self.config['config_filepath'] = os.path.join(self.path_app_root, 'config.yaml')
|
||||
@@ -439,4 +451,4 @@ class Framework:
|
||||
self.logger.error(f'Exception:{str(e)}')
|
||||
self.logger.error(traceback.format_exc())
|
||||
self.config['recent_version'] = '확인 실패'
|
||||
return False
|
||||
return False
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import os, sys, traceback, threading, platform
|
||||
from framework import F, d
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
import traceback
|
||||
|
||||
from framework import F
|
||||
|
||||
|
||||
class PluginManager:
|
||||
plugin_list = {}
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import system
|
||||
from flask import (Response, jsonify, redirect, render_template, request,
|
||||
send_from_directory)
|
||||
from flask_login import current_user, login_required, login_user, logout_user
|
||||
from flask import jsonify, redirect, request, send_from_directory
|
||||
from flask_login import login_required
|
||||
|
||||
# sjva 공용
|
||||
from framework import VERSION, F
|
||||
from framework import VERSION, F
|
||||
|
||||
|
||||
@F.app.route('/global/ajax/<sub>', methods=['GET', 'POST'])
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import re
|
||||
from flask_login import current_user
|
||||
|
||||
from framework import F
|
||||
|
||||
|
||||
def get_menu(full_query):
|
||||
match = re.compile(r'\/(?P<menu>.*?)\/manual\/(?P<sub2>.*?)($|\?)').match(full_query)
|
||||
if match:
|
||||
@@ -19,7 +20,7 @@ def get_menu(full_query):
|
||||
if match:
|
||||
return match.group('menu'), None , None
|
||||
return 'home', None, None
|
||||
|
||||
|
||||
|
||||
|
||||
def get_theme():
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
import os, traceback, time, threading
|
||||
import os
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from flask import request
|
||||
from framework import F
|
||||
from support.base.util import SingletonClass
|
||||
|
||||
from framework import F
|
||||
|
||||
namespace = 'log'
|
||||
|
||||
@F.socketio.on('connect', namespace='/%s' % namespace)
|
||||
def socket_connect():
|
||||
def socket_connect():
|
||||
F.logger.debug('log connect')
|
||||
|
||||
@F.socketio.on('start', namespace='/%s' % namespace)
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
import threading
|
||||
import traceback
|
||||
from pytz import timezone
|
||||
from datetime import datetime, timedelta
|
||||
from random import randint
|
||||
|
||||
from apscheduler.jobstores.base import JobLookupError
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
import traceback, threading
|
||||
from datetime import datetime
|
||||
from pytz import timezone
|
||||
from random import randint
|
||||
from support.base.util import pt
|
||||
|
||||
|
||||
class Scheduler(object):
|
||||
job_list = []
|
||||
first_run_check_thread = None
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################
|
||||
# python
|
||||
import os
|
||||
import json
|
||||
import traceback
|
||||
import platform
|
||||
import subprocess
|
||||
# third-party
|
||||
from sqlalchemy.ext.declarative import DeclarativeMeta
|
||||
# sjva 공용
|
||||
from framework import app, logger
|
||||
|
||||
#########################################################
|
||||
from framework import F
|
||||
|
||||
|
||||
class Util(object):
|
||||
|
||||
|
||||
|
||||
@staticmethod
|
||||
def db_list_to_dict(db_list):
|
||||
"""
|
||||
@@ -52,11 +43,11 @@ class Util(object):
|
||||
paging['next_page'] = False
|
||||
paging['current_page'] = current_page
|
||||
paging['count'] = count
|
||||
logger.debug('paging : c:%s %s %s %s %s %s', count, paging['total_page'], paging['prev_page'], paging['next_page'] , paging['start_page'], paging['last_page'])
|
||||
F.logger.debug('paging : c:%s %s %s %s %s %s', count, paging['total_page'], paging['prev_page'], paging['next_page'] , paging['start_page'], paging['last_page'])
|
||||
return paging
|
||||
except Exception as exception:
|
||||
logger.debug('Exception:%s', exception)
|
||||
logger.debug(traceback.format_exc())
|
||||
F.logger.debug('Exception:%s', exception)
|
||||
F.logger.debug(traceback.format_exc())
|
||||
|
||||
|
||||
|
||||
@@ -95,8 +86,8 @@ class Util(object):
|
||||
ret['max_size'] = max_size
|
||||
return ret
|
||||
except Exception as exception:
|
||||
logger.error('Exception:%s', exception)
|
||||
logger.error(traceback.format_exc())
|
||||
F.logger.error('Exception:%s', exception)
|
||||
F.logger.error(traceback.format_exc())
|
||||
|
||||
|
||||
# 압축할 폴더 경로를 인자로 받음. 폴더명.zip 생성
|
||||
@@ -116,8 +107,8 @@ class Util(object):
|
||||
shutil.rmtree(zip_path)
|
||||
return True
|
||||
except Exception as exception:
|
||||
logger.error('Exception:%s', exception)
|
||||
logger.error(traceback.format_exc())
|
||||
F.logger.error('Exception:%s', exception)
|
||||
F.logger.error(traceback.format_exc())
|
||||
return False
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
from .setup import *
|
||||
import platform
|
||||
|
||||
from support.base.util import SupportUtil
|
||||
|
||||
from .setup import *
|
||||
|
||||
name = 'home'
|
||||
|
||||
class ModuleHome(PluginModuleBase):
|
||||
info_thread = None
|
||||
info_thread = None
|
||||
|
||||
def __init__(self, P):
|
||||
super(ModuleHome, self).__init__(P, name=name)
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import random, string
|
||||
from flask_login import current_user, login_user, logout_user
|
||||
|
||||
from .setup import *
|
||||
from flask_login import login_user, current_user, logout_user
|
||||
|
||||
name = 'route'
|
||||
|
||||
|
||||
class ModuleRoute(PluginModuleBase):
|
||||
def __init__(self, P):
|
||||
super(ModuleRoute, self).__init__(P, name=name)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import random, string
|
||||
import random
|
||||
import string
|
||||
|
||||
from .setup import *
|
||||
|
||||
@@ -23,7 +24,7 @@ class ModuleSetting(PluginModuleBase):
|
||||
'plugin_dev_path': os.path.join(F.config['path_data'], 'dev'),
|
||||
|
||||
'system_start_time': '',
|
||||
}
|
||||
}
|
||||
|
||||
def __init__(self, P):
|
||||
super(ModuleSetting, self).__init__(P, name=name, first_menu='basic')
|
||||
|
||||
@@ -34,7 +34,7 @@ __menu = {
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
setting = {
|
||||
'filepath' : __file__,
|
||||
'use_db': True,
|
||||
@@ -50,12 +50,12 @@ try:
|
||||
P = create_plugin_instance(setting)
|
||||
|
||||
SystemModelSetting = P.ModelSetting
|
||||
from .mod_setting import ModuleSetting
|
||||
from .mod_home import ModuleHome
|
||||
from .mod_route import ModuleRoute
|
||||
from .mod_setting import ModuleSetting
|
||||
|
||||
P.set_module_list([ModuleSetting, ModuleHome, ModuleRoute])
|
||||
|
||||
except Exception as e:
|
||||
P.logger.error(f'Exception:{str(e)}')
|
||||
P.logger.error(traceback.format_exc())
|
||||
P.logger.error(traceback.format_exc())
|
||||
|
||||
@@ -178,7 +178,7 @@ function make_scheduler_list(data) {
|
||||
</table>`;
|
||||
|
||||
$("#scheduler_list_div").html(str);
|
||||
return;
|
||||
return;
|
||||
|
||||
|
||||
str = m_row_start(p='0');
|
||||
|
||||
Reference in New Issue
Block a user