diff --git a/myapp/__init__.py b/myapp/__init__.py index 1f49ed8..5469c44 100644 --- a/myapp/__init__.py +++ b/myapp/__init__.py @@ -25,11 +25,14 @@ # 在这个文件里面只创建app,不要做view层面的事情。 APP_DIR = os.path.dirname(__file__) -CONFIG_MODULE = os.environ.get("MYAPP_CONFIG", "myapp.config") + # app = Flask(__name__,static_url_path='/static',static_folder='static',template_folder='templates') app = Flask(__name__) # ,static_folder='/mnt',static_url_path='/mnt' +app.json.sort_keys=False # 返回字典乱序问题 +app.json.ensure_ascii = False # 返回 中文乱码问题 +CONFIG_MODULE = os.environ.get("MYAPP_CONFIG", "myapp.config") app.config.from_object(CONFIG_MODULE) conf = app.config diff --git a/myapp/models/base.py b/myapp/models/base.py index 5a07cd0..f54262a 100644 --- a/myapp/models/base.py +++ b/myapp/models/base.py @@ -132,7 +132,6 @@ class MyappModelBase(): "deploy_time": _("部署时间"), "host": _("域名"), "host_url": _("域名"), - "inference_host_url": _("域名:测试(test.xx)/调试(debug.xx)"), "deploy": _("部署"), "test_deploy": _("测试部署"), "prod_deploy": _("生产部署"), diff --git a/myapp/models/model_chat.py b/myapp/models/model_chat.py index 3ca9081..07b590a 100644 --- a/myapp/models/model_chat.py +++ b/myapp/models/model_chat.py @@ -44,7 +44,9 @@ def clone(self): session_num=self.session_num, chat_type=self.chat_type, hello=self.hello, + tips=self.tips, knowledge=self.knowledge, + prompt=self.prompt, service_type=self.service_type, service_config=self.service_config, owner=self.owner, diff --git a/myapp/utils/core.py b/myapp/utils/core.py index b84fc43..ecc0a37 100644 --- a/myapp/utils/core.py +++ b/myapp/utils/core.py @@ -1806,7 +1806,6 @@ def hive_create_sql_demo(): return sql - import subprocess diff --git a/myapp/utils/py/py_k8s.py b/myapp/utils/py/py_k8s.py index c4498b1..6ac6a67 100755 --- a/myapp/utils/py/py_k8s.py +++ b/myapp/utils/py/py_k8s.py @@ -52,6 +52,22 @@ def get_running_pods(self, namespace=None): pod = self.v1.read_namespaced_pod(name=pod_name_temp, namespace=namespace) all_pods.append(pod) + def exist_hold_resource(self,pod): + try: + exist_hold_resource=False + if pod['status'] == 'Running' or pod['status_more'].get('phase', '') == 'Running': + exist_hold_resource = True + if pod['status'] == 'Pending': + for condition in pod['status_more']['conditions']: + if condition['type'] == 'PodScheduled' and str(condition['status']).lower() == 'true': + exist_hold_resource = True + break + except Exception as e: + print(e) + exist_hold_resource=True + + return exist_hold_resource + # @pysnooper.snoop() def get_pods(self, namespace=None, service_name=None, pod_name=None, labels={},status=None): # print(namespace) @@ -106,6 +122,8 @@ def get_pods(self, namespace=None, service_name=None, pod_name=None, labels={},s # print(pod) metadata = pod.metadata status = pod.status.phase if pod and hasattr(pod, 'status') and hasattr(pod.status, 'phase') else '' + # Pending Running Succeeded Failed Unknown + # 辅助状态 ContainerCreating CrashLoopBackOff ImagePullBackOff ErrImagePull Terminating # 如果是running 也分为重启运行中 if status.lower()=='running': status = 'Running' if [x.status for x in pod.status.conditions if x.type == 'Ready' and x.status == 'True'] else 'CrashLoopBackOff' diff --git a/myapp/views/baseApi.py b/myapp/views/baseApi.py index 74c0c2f..2061bec 100644 --- a/myapp/views/baseApi.py +++ b/myapp/views/baseApi.py @@ -1347,7 +1347,7 @@ def api_edit(self, pk): if isinstance(item, dict): return self.response_error(422, message=item.errors) self.pre_update(item) - + import traceback try: self.datamodel.edit(item, raise_exception=True) if self.post_update: @@ -1366,8 +1366,12 @@ def api_edit(self, pk): **back_data, ) except IntegrityError as e: + traceback.print_exc() return self.response_error(422, message=str(e.orig)) - + except Exception as e: + print("An error occurred:", e) + traceback.print_exc() # 打印完整的错误堆栈跟踪 + return self.response_error(500, message="An unexpected error occurred.") @event_logger.log_this @expose("/", methods=["DELETE"]) # @pysnooper.snoop() @@ -1381,10 +1385,9 @@ def api_delete(self, pk): if not has_permission: flash('no permission to delete',category='warning') return self.response_error(422, message='no permission to delete') - - if self.pre_delete: - self.pre_delete(item) try: + if self.pre_delete: + self.pre_delete(item) self.datamodel.delete(item, raise_exception=True) self.post_delete(item) back_data = { @@ -1395,7 +1398,13 @@ def api_delete(self, pk): return self.response(200, **back_data) except IntegrityError as e: return self.response_error(422, message=str(e.orig)) - + except Exception as e: + back = { + "status": -1, + "message": str(e), + "result": {} + } + return self.response(500, **back) @event_logger.log_this @expose("/action//", methods=["GET"]) def single_action(self, name, pk): @@ -1860,11 +1869,18 @@ def make_ui_info(self, ret_src): if choices: values = [] for choice in choices: - if choice and len(choice) == 2: + if choice and type(choice)==list and (len(choice) == 1 or len(choice) == 2): + choice = choice if len(choice)==2 else [choice,choice] values.append({ "id": choice[0], "value": choice[1] }) + # 多级选择 + if choice and type(choice)==dict: + values.append(choice) + ret['ui-type']='cascader' + ret['type'] = 'cascader' + ret['values'] = values if not ret.get('ui-type', ''): ret['ui-type'] = 'select2' if 'SelectMultiple' in ret['type'] else 'select' diff --git a/myapp/views/baseFormApi.py b/myapp/views/baseFormApi.py index dcc346a..f5c1743 100644 --- a/myapp/views/baseFormApi.py +++ b/myapp/views/baseFormApi.py @@ -314,8 +314,7 @@ def echart(self): return jsonify({}) - - + @event_logger.log_this @expose("/action//", methods=["GET"]) def single_action(self, name, pk): """ @@ -339,6 +338,7 @@ def single_action(self, name, pk): } return self.response(200, **back) + @event_logger.log_this @expose("/multi_action/", methods=["POST"]) def multi_action(self, name): """ diff --git a/myapp/views/home.py b/myapp/views/home.py index 2239384..c1303c6 100644 --- a/myapp/views/home.py +++ b/myapp/views/home.py @@ -121,7 +121,7 @@ def menu(self): "children": [ { "name": 'pod', - "title": __('计量计费'), + "title": __('计量明细'), "icon": '', "menu_type": "api", "url": "/pod_modelview/api/", diff --git a/myapp/views/view_chat.py b/myapp/views/view_chat.py index 0bd81fa..5a5cddf 100644 --- a/myapp/views/view_chat.py +++ b/myapp/views/view_chat.py @@ -287,7 +287,7 @@ class Chat_View_Base(): description= _('svg格式图标,图标宽高设置为50*50,iconfont'), widget=BS3TextFieldWidget(), # choices=[[str(x),Markup(icon_choices[x])] for x in range(len(icon_choices))], - validators=[DataRequired()] + validators=[DataRequired(),Regexp("^