diff --git a/app-dm/src/TeacherPages/MarkingPages/StudentLink.jsx b/app-dm/src/TeacherPages/MarkingPages/StudentLink.jsx index 892cf5c..bbe8a2e 100644 --- a/app-dm/src/TeacherPages/MarkingPages/StudentLink.jsx +++ b/app-dm/src/TeacherPages/MarkingPages/StudentLink.jsx @@ -7,6 +7,7 @@ import axios from 'axios'; function StudentLink(){ const testID=useParams()['key'] + const [list,setlist]=useState([]) const sumbitScore=async()=>{ try{ @@ -15,6 +16,10 @@ function StudentLink(){ testID, suggestion }) + const delPods=await axios.post('/api/teacher/MarkDelPods',{ + testID, + list + }) }catch{ alert('提交出错') } @@ -33,6 +38,7 @@ function StudentLink(){ testID }) setTestLink(NotMarkTestSrc.data['result']) + setlist(Object.keys(NotMarkTestSrc.data['result']).map(key => NotMarkTestSrc.data['result'][key][0])) }catch{ alert('出错') } @@ -58,6 +64,7 @@ function StudentLink(){ [name]: value }); } + return(
题目:{TrainData['operateID'][3][0]}
- {Src[6]} +题目:{TrainData['operateID'][3][0]}
+ 点击此链接进入到ide编辑代码:点击以上链接前往实训
+ 5000端口映射到: +{TrainData['operateID'][3][0]}
- {/* {Src&&上一页
@@ -205,6 +214,7 @@ function Operation2() {完成
+ diff --git a/app-dm/src/pages/ListPages/Training/TrainingPage.jsx b/app-dm/src/pages/ListPages/Training/TrainingPage.jsx index 9283abc..4b8d3ad 100644 --- a/app-dm/src/pages/ListPages/Training/TrainingPage.jsx +++ b/app-dm/src/pages/ListPages/Training/TrainingPage.jsx @@ -7,7 +7,7 @@ import axios from 'axios'; const WarningModal = ({ isOpen, onClose }) => { // 添加一个状态来控制是否应用动画 const [isClosing, setIsClosing] = useState(false); - + localStorage.removeItem('TrainData') // 定义关闭警告框的函数 const handleClose = () => { setIsClosing(true); // 设置状态以触发动画 diff --git a/docker-compose.yml b/docker-compose.yml index 2401c83..3397c48 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,4 +41,5 @@ services: - '8443:8443' - '5000:5000' - '3000:3000' + command: service DmServiceDMTEST start && sleep 9999999999 diff --git a/docker/code-server/Dockerfile b/docker/code-server/Dockerfile index 9ffa20a..6e9521a 100644 --- a/docker/code-server/Dockerfile +++ b/docker/code-server/Dockerfile @@ -6,6 +6,7 @@ ENV DEBIAN_FRONTEND="noninteractive" WORKDIR /home/dmdba USER root + RUN apt-get update && apt-get install -y --no-install-recommends \ git jq libatomic1 net-tools netcat python3-pip curl sudo catatonit libssl-dev \ cron \ @@ -69,6 +70,12 @@ ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-s ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/package-install.${PKG_INST_VERSION}" "/etc/s6-overlay/s6-rc.d/init-mods-package-install/run" ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/lsiown.${LSIOWN_VERSION}" "/usr/bin/lsiown" +USER dmdba +WORKDIR /home/dmdba/dmdbms/bin +RUN /home/dmdba/dmdbms/bin/dminit path=/home/dmdba/data +USER root +RUN /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/data/DAMENG/dm.ini -p DMTEST + # 添加本地目录 COPY /root / diff --git a/python/Dockerfile b/python/Dockerfile index 789da3f..8561f66 100644 --- a/python/Dockerfile +++ b/python/Dockerfile @@ -27,6 +27,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" COPY --from=build-dmpython --chown=flask:flask /home/dmdba/build_artifacts/dmPython-2.5.5-cp310-cp310-linux_x86_64.whl . RUN python3 -m venv "$VIRTUAL_ENV" && \ +pip3 config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple && \ export FLASK_APP=app.py && \ pip3 install dmPython-2.5.5-cp310-cp310-linux_x86_64.whl && rm dmPython-2.5.5-cp310-cp310-linux_x86_64.whl && \ MAKEFLAGS="-j$(nproc)" pip install -r requirements.txt diff --git a/python/app.py b/python/app.py index 8696c0e..7cd7686 100644 --- a/python/app.py +++ b/python/app.py @@ -4,9 +4,9 @@ import time import paramiko +from k8s_func import * from teacher_func import * from student_func import * -# from k8s_func import * from flask import Flask, render_template, request, jsonify, send_from_directory, session from flask_cors import CORS @@ -178,10 +178,19 @@ def FindTrain1Src(): @app.route('/api/student/EntryTrainScore',methods=['POST']) def EntryTrainScore(): score=request.json['score'] - TrainScore=request.json['trainScore'] + TrainScore=request.json['TrainScore'] operateID=request.json['operateID'] student_ID=request.json['student_ID'] - AddTrainScoreFunc(score,TrainScore,student_ID,operateID) + succeed=request.json['succeed'] + subject=request.json['subject'] + print(subject[0]) + print(type(subject)) + if subject[0]=="达梦数据库连接": + Name='n'+student_ID+'-'+operateID + delete_pod(Name) + else: + print(False) + AddTrainScoreFunc(student_ID,operateID,score,TrainScore,succeed) return jsonify({'result': '成功'}) @@ -346,38 +355,48 @@ def getTrainData(): return jsonify({'data': data}) -# @app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod -# def teacher_list_pods(): -# return list_pods() -# @app.route("/api/teacher/list_services") # 列出服务 -# def teacher_list_services(): -# return list_services() +@app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod +def teacher_list_pods(): + return list_pods() +@app.route("/api/teacher/list_services") # 列出服务 +def teacher_list_services(): + return list_services() # @app.route("/api/teacher/create_pod") # 创建服务 1为项目实训, 0为安装实训 # def teacher_create_pod(): # create_pod(1, "test2") -# @app.route("/api/teacher/DelPods",methods=['POST']) # 删除服务 -# def teacher_delete_pod(): -# name=request.json['name'] -# studentID=name[1:9] -# testID=name[10:] -# delDMFunc(studentID,testID) -# return delete_pod(name=name) +@app.route("/api/teacher/DelPods",methods=['POST']) # 删除服务 +def teacher_delete_pod(): + name=request.json['name'] + studentID=name[1:9] + testID=name[10:] + delDMFunc(studentID,testID) + return delete_pod(name=name) -# @app.route("/api/student/check_pod",methods=['POST']) # 检测数据库是否安装成功 若成功,返回OK 否则返回NO -# def teacher_check_pod(): -# name=request.json["student_ID"] -# testID=request.json["operateID"] -# name= 'n' + str(name) + '-' + str(testID) -# result = check_dm(name) -# return jsonify(result) +@app.route('/api/teacher/MarkDelPods',methods=['POST']) +def teacher_mark_del_pods(): + studentList=request.json['list'] + testID=request.json['testID'] + for i in studentList: + Name='s'+i+'-'+testID + delete_pod(Name) + return '删除成功' +@app.route("/api/student/check_pod",methods=['POST']) # 检测数据库是否安装成功 若成功,返回OK 否则返回NO +def teacher_check_pod(): + name=request.json["student_ID"] + testID=request.json["operateID"] + name= 'n' + str(name) + '-' + str(testID) + result = check_dm(name) + return jsonify(result) @app.route('/') @app.route('/