diff --git a/lib/framework/__init__.py b/lib/framework/__init__.py index 06e3e95..131fa34 100644 --- a/lib/framework/__init__.py +++ b/lib/framework/__init__.py @@ -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() + \ No newline at end of file diff --git a/lib/framework/init_declare.py b/lib/framework/init_declare.py index b2e39f9..61a07fb 100644 --- a/lib/framework/init_declare.py +++ b/lib/framework/init_declare.py @@ -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 diff --git a/lib/framework/init_main.py b/lib/framework/init_main.py index 20b7cbd..027c987 100644 --- a/lib/framework/init_main.py +++ b/lib/framework/init_main.py @@ -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 \ No newline at end of file + return False diff --git a/lib/framework/init_plugin.py b/lib/framework/init_plugin.py index 5b31423..91dc80f 100644 --- a/lib/framework/init_plugin.py +++ b/lib/framework/init_plugin.py @@ -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 = {} diff --git a/lib/framework/init_route.py b/lib/framework/init_route.py index 8828851..4f7f236 100644 --- a/lib/framework/init_route.py +++ b/lib/framework/init_route.py @@ -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/', methods=['GET', 'POST']) diff --git a/lib/framework/init_web.py b/lib/framework/init_web.py index 15833de..ee43859 100644 --- a/lib/framework/init_web.py +++ b/lib/framework/init_web.py @@ -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.*?)\/manual\/(?P.*?)($|\?)').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(): diff --git a/lib/framework/log_viewer.py b/lib/framework/log_viewer.py index c466d4e..af1eb37 100644 --- a/lib/framework/log_viewer.py +++ b/lib/framework/log_viewer.py @@ -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) diff --git a/lib/framework/scheduler.py b/lib/framework/scheduler.py index 446990c..280d462 100644 --- a/lib/framework/scheduler.py +++ b/lib/framework/scheduler.py @@ -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 diff --git a/lib/framework/util.py b/lib/framework/util.py index 804041a..e694686 100644 --- a/lib/framework/util.py +++ b/lib/framework/util.py @@ -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 diff --git a/lib/system/mod_home.py b/lib/system/mod_home.py index 87c6305..c8d77fb 100644 --- a/lib/system/mod_home.py +++ b/lib/system/mod_home.py @@ -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) diff --git a/lib/system/mod_route.py b/lib/system/mod_route.py index 2256137..df11bca 100644 --- a/lib/system/mod_route.py +++ b/lib/system/mod_route.py @@ -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) diff --git a/lib/system/mod_setting.py b/lib/system/mod_setting.py index 47f7623..fab9792 100644 --- a/lib/system/mod_setting.py +++ b/lib/system/mod_setting.py @@ -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') diff --git a/lib/system/setup.py b/lib/system/setup.py index 69a54b6..ac322a7 100644 --- a/lib/system/setup.py +++ b/lib/system/setup.py @@ -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()) \ No newline at end of file + P.logger.error(traceback.format_exc()) diff --git a/lib/system/templates/system_home.html b/lib/system/templates/system_home.html index 94ff2c5..904cfc1 100644 --- a/lib/system/templates/system_home.html +++ b/lib/system/templates/system_home.html @@ -178,7 +178,7 @@ function make_scheduler_list(data) { `; $("#scheduler_list_div").html(str); - return; + return; str = m_row_start(p='0'); diff --git a/main.py b/main.py index c43c8e2..6c1da8f 100644 --- a/main.py +++ b/main.py @@ -3,8 +3,10 @@ print('[MAIN] gevent mokey patch!!') except: print('[MAIN] gevent not installed!!') +import os +import sys +import traceback -import os, sys, traceback sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib')) sys.path.insert(1, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib2'))