This commit is contained in:
soju6jan
2022-10-03 03:15:05 +09:00
parent 8a7a0338de
commit 5799484cf6
15 changed files with 84 additions and 66 deletions

View File

@@ -1,6 +1,8 @@
VERSION="4.0.0" VERSION="4.0.0"
from support import d from support import d
from .init_main import Framework from .init_main import Framework
frame = Framework.get_instance() frame = Framework.get_instance()
F = frame F = frame
logger = frame.logger logger = frame.logger
@@ -13,11 +15,13 @@ path_app_root = frame.path_app_root
path_data = frame.path_data path_data = frame.path_data
get_logger = frame.get_logger get_logger = frame.get_logger
from .init_declare import check_api, User
from flask_login import login_required from flask_login import login_required
from .init_declare import User, check_api
from .scheduler import Job from .scheduler import Job
frame.initialize_system() frame.initialize_system()
from system.setup import SystemModelSetting from system.setup import SystemModelSetting
frame.initialize_plugin() frame.initialize_plugin()

View File

@@ -1,12 +1,13 @@
from flask import request, abort
from functools import wraps from functools import wraps
from flask import request
from flask import abort, request
def check_api(original_function): def check_api(original_function):
@wraps(original_function) @wraps(original_function)
def wrapper_function(*args, **kwargs): #1 def wrapper_function(*args, **kwargs): #1
from framework import F from framework import F
#logger.debug('CHECK API... {} '.format(original_function.__module__)) #logger.debug('CHECK API... {} '.format(original_function.__module__))
#logger.warning(request.url) #logger.warning(request.url)
#logger.warning(request.form) #logger.warning(request.form)
@@ -31,6 +32,8 @@ def check_api(original_function):
# Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언 # Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언
import logging import logging
class CustomFormatter(logging.Formatter): class CustomFormatter(logging.Formatter):
"""Logging Formatter to add colors and count warning / errors""" """Logging Formatter to add colors and count warning / errors"""
@@ -61,8 +64,8 @@ class CustomFormatter(logging.Formatter):
# Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언 # Suuport를 logger 생성전에 쓰지 않기 위해 중복 선언
def read_yaml(filepath): def read_yaml(filepath):
import yaml import yaml
#with open(filepath, encoding='utf8') as file: with open(filepath, encoding='utf8') as file:
with open(filepath, 'rb') as file: #with open(filepath, 'rb') as file:
data = yaml.load(file, Loader=yaml.FullLoader) data = yaml.load(file, Loader=yaml.FullLoader)
return data return data

View File

@@ -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 datetime import datetime
from pytz import timezone, utc
from flask import Flask from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_socketio import SocketIO
from flask_cors import CORS from flask_cors import CORS
from flaskext.markdown import Markdown
from flask_login import LoginManager, login_required 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: class Framework:
__instance = None __instance = None
@@ -63,7 +71,7 @@ class Framework:
self.db = SQLAlchemy(self.app, session_options={"autoflush": False}) self.db = SQLAlchemy(self.app, session_options={"autoflush": False})
if True or self.config['run_flask']: if True or self.config['run_flask']:
from .scheduler import Scheduler, Job from .scheduler import Job, Scheduler
self.scheduler = Scheduler(self) self.scheduler = Scheduler(self)
self.Job = Job self.Job = Job
@@ -85,6 +93,7 @@ class Framework:
def __init_celery(self): def __init_celery(self):
try: try:
from celery import Celery from celery import Celery
#if frame.config['use_celery'] == False or platform.system() == 'Windows': #if frame.config['use_celery'] == False or platform.system() == 'Windows':
if self.config['use_celery'] == False: if self.config['use_celery'] == False:
raise Exception('no celery') raise Exception('no celery')
@@ -106,6 +115,7 @@ class Framework:
from celery import bootsteps from celery import bootsteps
#from celery.bin.base import CeleryOption #from celery.bin.base import CeleryOption
from click import Option from click import Option
#from celery.bin import Option # 4.3.0 #from celery.bin import Option # 4.3.0
celery.user_options['worker'].add( celery.user_options['worker'].add(
Option(('--config_filepath',), help='') Option(('--config_filepath',), help='')
@@ -154,6 +164,7 @@ class Framework:
def initialize_plugin(self): def initialize_plugin(self):
from system.setup import P as SP from system.setup import P as SP
from .init_web import jinja_initialize from .init_web import jinja_initialize
jinja_initialize(self.app) jinja_initialize(self.app)
@@ -173,8 +184,7 @@ class Framework:
if self.config.get('port') == None: if self.config.get('port') == None:
self.config['port'] = SP.SystemModelSetting.get_int('port') self.config['port'] = SP.SystemModelSetting.get_int('port')
from . import log_viewer from . import init_route, log_viewer
from . import init_route
self.__make_default_logger() self.__make_default_logger()
self.logger.info('### LAST') self.logger.info('### LAST')
@@ -187,6 +197,7 @@ class Framework:
if self.config['run_flask'] and self.config.get('use_celery') == True: if self.config['run_flask'] and self.config.get('use_celery') == True:
try: try:
from gevent import monkey from gevent import monkey
#from gevent import monkey;monkey.patch_all() #from gevent import monkey;monkey.patch_all()
#print('[MAIN] gevent mokey patch!!') #print('[MAIN] gevent mokey patch!!')
#sys.getfilesystemencoding = lambda: 'UTF-8' #sys.getfilesystemencoding = lambda: 'UTF-8'
@@ -263,6 +274,7 @@ class Framework:
def __load_config(self): def __load_config(self):
from .init_declare import read_yaml from .init_declare import read_yaml
#if self.config['run_flask']: #if self.config['run_flask']:
if self.config['arg_config'] == '.': if self.config['arg_config'] == '.':
#self.config['config_filepath'] = os.path.join(self.path_app_root, 'config.yaml') #self.config['config_filepath'] = os.path.join(self.path_app_root, 'config.yaml')

View File

@@ -1,5 +1,10 @@
import os, sys, traceback, threading, platform import os
from framework import F, d import sys
import threading
import traceback
from framework import F
class PluginManager: class PluginManager:
plugin_list = {} plugin_list = {}

View File

@@ -1,15 +1,9 @@
import json
import os import os
import sys
import traceback import traceback
from datetime import datetime, timedelta
import system from flask import jsonify, redirect, request, send_from_directory
from flask import (Response, jsonify, redirect, render_template, request, from flask_login import login_required
send_from_directory)
from flask_login import current_user, login_required, login_user, logout_user
# sjva 공용
from framework import VERSION, F from framework import VERSION, F

View File

@@ -1,7 +1,8 @@
import re import re
from flask_login import current_user
from framework import F from framework import F
def get_menu(full_query): def get_menu(full_query):
match = re.compile(r'\/(?P<menu>.*?)\/manual\/(?P<sub2>.*?)($|\?)').match(full_query) match = re.compile(r'\/(?P<menu>.*?)\/manual\/(?P<sub2>.*?)($|\?)').match(full_query)
if match: if match:

View File

@@ -1,8 +1,13 @@
import os, traceback, time, threading import os
import threading
import time
import traceback
from flask import request from flask import request
from framework import F
from support.base.util import SingletonClass from support.base.util import SingletonClass
from framework import F
namespace = 'log' namespace = 'log'
@F.socketio.on('connect', namespace='/%s' % namespace) @F.socketio.on('connect', namespace='/%s' % namespace)

View File

@@ -1,15 +1,14 @@
import threading
import traceback import traceback
from pytz import timezone
from datetime import datetime, timedelta from datetime import datetime, timedelta
from random import randint from random import randint
from apscheduler.jobstores.base import JobLookupError from apscheduler.jobstores.base import JobLookupError
from apscheduler.triggers.cron import CronTrigger from apscheduler.triggers.cron import CronTrigger
import traceback, threading
from datetime import datetime
from pytz import timezone from pytz import timezone
from random import randint
from support.base.util import pt from support.base.util import pt
class Scheduler(object): class Scheduler(object):
job_list = [] job_list = []
first_run_check_thread = None first_run_check_thread = None

View File

@@ -1,18 +1,9 @@
# -*- coding: utf-8 -*-
#########################################################
# python
import os import os
import json
import traceback 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): class Util(object):
@@ -52,11 +43,11 @@ class Util(object):
paging['next_page'] = False paging['next_page'] = False
paging['current_page'] = current_page paging['current_page'] = current_page
paging['count'] = count 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 return paging
except Exception as exception: except Exception as exception:
logger.debug('Exception:%s', exception) F.logger.debug('Exception:%s', exception)
logger.debug(traceback.format_exc()) F.logger.debug(traceback.format_exc())
@@ -95,8 +86,8 @@ class Util(object):
ret['max_size'] = max_size ret['max_size'] = max_size
return ret return ret
except Exception as exception: except Exception as exception:
logger.error('Exception:%s', exception) F.logger.error('Exception:%s', exception)
logger.error(traceback.format_exc()) F.logger.error(traceback.format_exc())
# 압축할 폴더 경로를 인자로 받음. 폴더명.zip 생성 # 압축할 폴더 경로를 인자로 받음. 폴더명.zip 생성
@@ -116,8 +107,8 @@ class Util(object):
shutil.rmtree(zip_path) shutil.rmtree(zip_path)
return True return True
except Exception as exception: except Exception as exception:
logger.error('Exception:%s', exception) F.logger.error('Exception:%s', exception)
logger.error(traceback.format_exc()) F.logger.error(traceback.format_exc())
return False return False

View File

@@ -1,6 +1,9 @@
from .setup import *
import platform import platform
from support.base.util import SupportUtil from support.base.util import SupportUtil
from .setup import *
name = 'home' name = 'home'
class ModuleHome(PluginModuleBase): class ModuleHome(PluginModuleBase):

View File

@@ -1,11 +1,9 @@
import random, string from flask_login import current_user, login_user, logout_user
from .setup import * from .setup import *
from flask_login import login_user, current_user, logout_user
name = 'route' name = 'route'
class ModuleRoute(PluginModuleBase): class ModuleRoute(PluginModuleBase):
def __init__(self, P): def __init__(self, P):
super(ModuleRoute, self).__init__(P, name=name) super(ModuleRoute, self).__init__(P, name=name)

View File

@@ -1,4 +1,5 @@
import random, string import random
import string
from .setup import * from .setup import *

View File

@@ -50,9 +50,9 @@ try:
P = create_plugin_instance(setting) P = create_plugin_instance(setting)
SystemModelSetting = P.ModelSetting SystemModelSetting = P.ModelSetting
from .mod_setting import ModuleSetting
from .mod_home import ModuleHome from .mod_home import ModuleHome
from .mod_route import ModuleRoute from .mod_route import ModuleRoute
from .mod_setting import ModuleSetting
P.set_module_list([ModuleSetting, ModuleHome, ModuleRoute]) P.set_module_list([ModuleSetting, ModuleHome, ModuleRoute])

View File

@@ -3,8 +3,10 @@
print('[MAIN] gevent mokey patch!!') print('[MAIN] gevent mokey patch!!')
except: except:
print('[MAIN] gevent not installed!!') 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(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')) sys.path.insert(1, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib2'))