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"
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()

View File

@@ -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

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 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

View File

@@ -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 = {}

View File

@@ -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'])

View File

@@ -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():

View File

@@ -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)

View File

@@ -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

View File

@@ -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