mirror of
https://github.com/tencentmusic/cube-studio.git
synced 2024-12-21 06:19:31 +08:00
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
from flask import render_template,redirect
|
||
from flask_appbuilder.models.sqla.interface import SQLAInterface
|
||
|
||
# 将model添加成视图,并控制在前端的显示
|
||
from myapp.models.model_job import Repository,Images,Job_Template,Task,Pipeline,Workflow,Tfjob,Xgbjob,RunHistory,Pytorchjob
|
||
|
||
from myapp import app, appbuilder,db,event_logger
|
||
from wtforms import BooleanField, IntegerField,StringField, SelectField,FloatField,DateField,DateTimeField,SelectMultipleField,FormField,FieldList
|
||
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget,BS3PasswordFieldWidget,DatePickerWidget,DateTimePickerWidget,Select2ManyWidget,Select2Widget,BS3TextAreaFieldWidget
|
||
from flask_babel import gettext as __
|
||
from flask_babel import lazy_gettext as _
|
||
from sqlalchemy import and_, or_, select
|
||
|
||
from .baseApi import (
|
||
MyappModelRestApi
|
||
)
|
||
|
||
from myapp import security_manager
|
||
import kfp # 使用自定义的就要把pip安装的删除了
|
||
from werkzeug.datastructures import FileStorage
|
||
from kubernetes import client as k8s_client
|
||
from .base import (
|
||
api,
|
||
BaseMyappView,
|
||
check_ownership,
|
||
data_payload_response,
|
||
DeleteMixin,
|
||
generate_download_headers,
|
||
get_error_msg,
|
||
get_user_roles,
|
||
handle_api_exception,
|
||
json_error_response,
|
||
json_success,
|
||
MyappFilter,
|
||
MyappModelView,
|
||
)
|
||
from flask_appbuilder import CompactCRUDMixin, expose
|
||
import pysnooper,datetime,time,json
|
||
conf = app.config
|
||
logging = app.logger
|
||
|
||
|
||
class RunHistory_Filter(MyappFilter):
|
||
# @pysnooper.snoop()
|
||
def apply(self, query, func):
|
||
user_roles = [role.name.lower() for role in list(self.get_user_roles())]
|
||
if "admin" in user_roles:
|
||
return query
|
||
|
||
pipeline_ids = security_manager.get_create_pipeline_ids(db.session)
|
||
return query.filter(
|
||
or_(
|
||
self.model.pipeline_id.in_(pipeline_ids),
|
||
# self.model.project.name.in_(['public'])
|
||
)
|
||
)
|
||
|
||
|
||
|
||
class RunHistory_ModelView_Base():
|
||
label_title='定时调度历史'
|
||
datamodel = SQLAInterface(RunHistory)
|
||
base_order = ('id', 'desc')
|
||
order_columns = ['id']
|
||
|
||
list_columns = ['pipeline_url','creator','created_on','execution_date','status_url','log','history']
|
||
edit_columns = ['status']
|
||
base_filters = [["id", RunHistory_Filter, lambda: []]] # 设置权限过滤器
|
||
add_form_extra_fields = {
|
||
"status": SelectField(
|
||
_(datamodel.obj.lab('status')),
|
||
description="状态comed为已识别未提交,created为已提交",
|
||
widget=Select2Widget(),
|
||
choices=[['comed', 'comed'], ['created', 'created']]
|
||
),
|
||
}
|
||
edit_form_extra_fields = add_form_extra_fields
|
||
|
||
|
||
class RunHistory_ModelView(RunHistory_ModelView_Base,MyappModelView,DeleteMixin):
|
||
datamodel = SQLAInterface(RunHistory)
|
||
|
||
appbuilder.add_view(RunHistory_ModelView,"定时调度记录",icon = 'fa-sitemap',category = '训练')
|
||
|
||
|
||
|
||
|
||
# 添加api
|
||
class RunHistory_ModelView_Api(RunHistory_ModelView_Base,MyappModelRestApi):
|
||
datamodel = SQLAInterface(RunHistory)
|
||
route_base = '/runhistory_modelview/api'
|
||
|
||
appbuilder.add_api(RunHistory_ModelView_Api)
|
||
|
||
|
||
|