import shutil from support import SupportFile from .setup import * name = 'plugin' class ModulePlugin(PluginModuleBase): def __init__(self, P): super(ModulePlugin, self).__init__(P, name=name, first_menu='list') def process_menu(self, page, req): arg = P.ModelSetting.to_dict() try: return render_template(f'{__package__}_{name}_{page}.html', arg=arg) except Exception as e: P.logger.error(f'Exception:{str(e)}') P.logger.error(traceback.format_exc()) return render_template('sample.html', title=f"{__package__}/{name}/{page}") def process_command(self, command, arg1, arg2, arg3, req): ret = {'ret':'success'} if command == 'plugin_install': ret = F.PluginManager.plugin_install(arg1) elif command == 'get_plugin_list': data = [] """ for name, entity in F.PluginManager.plugin_list.items(): if entity['version'] == '3': data.append({'package_name':name}) else: data.append(entity['P'].plugin_info) """ for name, entity in F.PluginManager.all_package_list.items(): try: if entity.get('version') == '3': #data.append(entity) data.append({'package_name':name}) else: data.append(entity['P'].plugin_info) data[-1]['loading'] = entity.get('loading') data[-1]['status'] = entity.get('status') data[-1]['log'] = entity.get('log') except Exception as e: data.append({'package_name':name}) P.logger.error(f'Exception:{str(e)}') P.logger.error(traceback.format_exc()) ret['data'] = data #P.logger.debug(data) elif command == 'uninstall': info = F.PluginManager.all_package_list[arg1] if os.path.exists(info['path']): try: shutil.rmtree(info['path']) ret['msg'] = '삭제하였습니다.
재시작시 적용됩니다.' except Exception as e: P.logger.error(f'Exception:{str(e)}') P.logger.error(traceback.format_exc()) ret['msg'] = info['path'] + "
삭제에 실패하였습니다.
" + str(e) ret['ret'] = 'danger' else: ret['msg'] = info['path'] + "
폴더가 없습니다." ret['ret'] = 'danger' return jsonify(ret) def plugin_load(self): try: pass except Exception as e: P.logger.error(f'Exception:{str(e)}') P.logger.error(traceback.format_exc())