This commit is contained in:
flaskfarm
2022-10-15 03:42:52 +09:00
parent 8f470385b1
commit c10c8c4f8b
29 changed files with 302 additions and 299 deletions

View File

@@ -38,7 +38,7 @@ class PluginBase(object):
self.logger = F.get_logger(self.package_name)
self.blueprint = Blueprint(self.package_name, self.package_name, url_prefix=f'/{self.package_name}', template_folder=os.path.join(os.path.dirname(setting['filepath']), 'templates'), static_folder=os.path.join(os.path.dirname(setting['filepath']), 'static'))
self.menu = setting['menu']
self.setting_menu = setting['setting_menu']
self.setting_menu = setting.get('setting_menu', None)
self.ModelSetting = None
if setting.get('use_db', True):

View File

@@ -17,10 +17,14 @@ class Logic(object):
def plugin_load(self):
try:
#self.P.logger.debug('%s plugin_load', self.P.package_name)
self.P.logger.debug('%s plugin_load', self.P.package_name)
self.db_init()
for module in self.P.module_list:
module.migration()
if module.page_list is not None:
for page_instance in module.page_list:
page_instance.migration()
for module in self.P.module_list:
module.plugin_load()
if module.page_list is not None:
@@ -154,7 +158,7 @@ class Logic(object):
except Exception as e:
self.P.logger.error(f'Exception:{str(e)}')
self.P.logger.error(traceback.format_exc())
ret = {'ret' : 'danger', 'msg':str(exception)}
ret = {'ret' : 'danger', 'msg':str(e)}
return ret
def get_module(self, sub):
@@ -239,5 +243,5 @@ class Logic(object):
except Exception as e:
self.P.logger.error(f'Exception:{str(e)}')
self.P.logger.error(traceback.format_exc())
ret = {'ret' : 'danger', 'msg':str(exception)}
ret = {'ret' : 'danger', 'msg':str(e)}
return ret

View File

@@ -1,5 +1,8 @@
import traceback
from flask import render_template
class PluginModuleBase(object):
db_default = None
@@ -33,8 +36,12 @@ class PluginModuleBase(object):
self.P.logger.error(traceback.format_exc())
def process_menu(self, sub):
pass
def process_menu(self, page, req):
if self.page_list is not None:
page_ins = self.get_page(page)
if page_ins != None:
return page_ins.process_menu(req)
return render_template('sample.html', title=f"PluginModuleBase-process_menu{self.P.package_name}/{self.name}/{page}")
def process_ajax(self, sub, req):
pass
@@ -96,6 +103,26 @@ class PluginModuleBase(object):
def socketio_disconnect(self):
pass
class PluginPageBase(object):
db_default = None
@@ -107,19 +134,42 @@ class PluginPageBase(object):
self.scheduler_desc = scheduler_desc
self.socketio_list = None
def process_menu(self, req):
try:
arg = {}
if self.P.ModelSetting != None:
arg = self.P.ModelSetting.to_dict()
return render_template(f'{__package__}_{self.parent.name}_{self.name}.html', arg=arg)
except Exception as e:
pass
return render_template('sample.html', title=f"PluginPageBase-process_menu {self.P.package_name}/{self.parent.name}/{self.name}")
def process_ajax(self, sub, req):
pass
def process_api(self, sub, req):
pass
def process_normal(self, sub, req):
pass
def process_command(self, command, arg1, arg2, arg3, req):
pass
# logic
def plugin_load(self):
pass
# logic
def plugin_unload(self):
pass
def scheduler_function(self):
pass
def plugin_load(self):
pass
def plugin_unload(self):
pass
def get_scheduler_desc(self):
return self.scheduler_desc
@@ -132,40 +182,16 @@ class PluginPageBase(object):
return f'{self.P.package_name}_{self.parent.name}_{self.name}'
def process_api(self, sub, req):
pass
def process_normal(self, sub, req):
# logic
def migration(self):
pass
def reset_db(self):
pass
# route
def setting_save_after(self, change_list):
pass
def process_telegram_data(self, data, target=None):
pass
def migration(self):
pass
#################################################################
def process_menu(self, sub):
pass

View File

@@ -158,6 +158,8 @@ def default_route(P):
elif command == 'immediately_execute':
ret = P.logic.immediately_execute_sub(module_name, page_name)
return jsonify(ret)
elif command == 'command':
return ins_page.process_command(request.form['command'], request.form.get('arg1'), request.form.get('arg2'), request.form.get('arg3'), request)
else:
return ins_page.process_ajax(command, request)
P.logger.error(f"not process ajax : {P.package_name} {module_name} {page_name} {command}")
@@ -251,6 +253,9 @@ def default_route_single_module(P):
ret, change_list = P.ModelSetting.setting_save(request)
if ret:
P.module_list[0].setting_save_after(change_list)
if P.module_list[0].page_list is not None:
for page_ins in P.module_list[0].page_list:
page_ins.setting_save_after(change_list)
return jsonify(ret)
elif sub == 'scheduler':
sub = request.form['sub']
@@ -384,32 +389,32 @@ def default_route_socketio_page(page):
if page.socketio_list is None:
page.socketio_list = []
@socketio.on('connect', namespace=f'/{P.package_name}/{module.name}/{page.name}')
def connect():
@F.socketio.on('connect', namespace=f'/{P.package_name}/{module.name}/{page.name}')
def page_socketio_connect():
try:
P.logger.debug(f'socket_connect : {P.package_name}/{module.name}/{page.name}')
page.socketio_list.append(request.sid)
socketio_callback('start', '')
except Exception as exception:
P.logger.error(f'Exception:{str(exception)}', exception)
page_socketio_socketio_callback('start', '')
except Exception as e:
P.logger.error(f'Exception:{str(e)}')
P.logger.error(traceback.format_exc())
@socketio.on('disconnect', namespace=f'/{P.package_name}/{module.name}/{page.name}')
def disconnect():
@F.socketio.on('disconnect', namespace=f'/{P.package_name}/{module.name}/{page.name}')
def page_socketio_disconnect():
try:
P.logger.debug(f'socket_disconnect : {P.package_name}/{module.name}/{page.name}')
page.socketio_list.remove(request.sid)
except Exception as exception:
P.logger.error(f'Exception:{str(exception)}', exception)
except Exception as e:
P.logger.error(f'Exception:{str(e)}')
P.logger.error(traceback.format_exc())
def socketio_callback(cmd, data, encoding=True):
def page_socketio_socketio_callback(cmd, data, encoding=True):
if page.socketio_list:
if encoding:
data = json.dumps(data, cls=AlchemyEncoder)
data = json.loads(data)
socketio.emit(cmd, data, namespace=f'/{P.package_name}/{module.name}/{page.name}', broadcast=True)
F.socketio.emit(cmd, data, namespace=f'/{P.package_name}/{module.name}/{page.name}', broadcast=True)
page.socketio_callback = socketio_callback
page.socketio_callback = page_socketio_socketio_callback