docker
|
@ -11,6 +11,8 @@
|
|||
# production
|
||||
/build
|
||||
|
||||
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
|
|
|
@ -14,7 +14,7 @@ function SendTest(){
|
|||
|
||||
const subject = async ()=>{
|
||||
try{
|
||||
const subject_src=await axios.post('http://127.0.0.1:5000/teacher/return_question',{
|
||||
const subject_src=await axios.post('/api/teacher/return_question',{
|
||||
teacher_ID})
|
||||
SetChoiceQuestion(subject_src.data['选择'])
|
||||
SetCompletion(subject_src.data['填空'])
|
||||
|
@ -41,7 +41,7 @@ function SendTest(){
|
|||
|
||||
const click_1= async()=>{
|
||||
try {
|
||||
const select_class_src = await axios.post('http://127.0.0.1:5000/teacher/select_class', {
|
||||
const select_class_src = await axios.post('/api/teacher/select_class', {
|
||||
teacher_ID
|
||||
});
|
||||
background.style.display='block'
|
||||
|
@ -119,7 +119,7 @@ function SendTest(){
|
|||
// 发布按钮
|
||||
const release= async()=>{
|
||||
try{
|
||||
const release_src=await axios.post('http://127.0.0.1:5000/teacher/accept_test',{
|
||||
const release_src=await axios.post('/api/teacher/accept_test',{
|
||||
teacher_ID,
|
||||
ChoiceQuestionSet,//选择题
|
||||
CompletionQuestionSet,//填空题
|
||||
|
|
|
@ -20,7 +20,7 @@ function SendTrain(){
|
|||
|
||||
const Train_question_func=async()=>{
|
||||
try{
|
||||
const Train_question_src=await axios.post('http://127.0.0.1:5000/teacher/fetch_train_question')
|
||||
const Train_question_src=await axios.post('/api/teacher/fetch_train_question')
|
||||
SetTrainquestion(Train_question_src.data)
|
||||
}catch{
|
||||
alert('Train_question_func出错')
|
||||
|
@ -29,7 +29,7 @@ function SendTrain(){
|
|||
|
||||
const SeleactClass= async()=>{
|
||||
try {
|
||||
const select_class_src = await axios.post('http://127.0.0.1:5000/teacher/select_class', {
|
||||
const select_class_src = await axios.post('/api/teacher/select_class', {
|
||||
teacher_ID
|
||||
});
|
||||
SetClassData(select_class_src.data['Class']);
|
||||
|
@ -66,7 +66,7 @@ function SendTrain(){
|
|||
//发送题目
|
||||
const SendTrainTest=async ()=>{
|
||||
try{
|
||||
const SendTrainSrc=await axios.post('http://127.0.0.1:5000/teacher/SendTrainTest',{
|
||||
const SendTrainSrc=await axios.post('/api/teacher/SendTrainTest',{
|
||||
TrainChoice,
|
||||
TrainCompletion,
|
||||
TrainJudge,
|
||||
|
|
|
@ -35,7 +35,7 @@ function TeacherPage() {
|
|||
//查找班级
|
||||
const select_class = async () => {
|
||||
try {
|
||||
const select_class_src = await axios.post('http://127.0.0.1:5000/teacher/select_class', {
|
||||
const select_class_src = await axios.post('/api/teacher/select_class', {
|
||||
teacher_ID
|
||||
});
|
||||
setClassData(select_class_src.data['Class']);
|
||||
|
|
|
@ -14,7 +14,7 @@ function TeacherPage() {
|
|||
const [classdata,setClassData]=useState([])
|
||||
const class_succeed = async () => {
|
||||
try{
|
||||
const class_scr=await axios.post('http://127.0.0.1:5000/teacher/find_student',{key})
|
||||
const class_scr=await axios.post('/api/teacher/find_student',{key})
|
||||
const class_data=class_scr.data
|
||||
setClassData(class_data[1])
|
||||
setisclick(true)
|
||||
|
|
|
@ -18,7 +18,7 @@ function TeacherPage() {
|
|||
|
||||
const select_class = async () => {
|
||||
try {
|
||||
const select_class_src = await axios.post('http://127.0.0.1:5000/teacher/select_class',{
|
||||
const select_class_src = await axios.post('/api/teacher/select_class',{
|
||||
teacher_ID
|
||||
});
|
||||
setClassData(select_class_src.data['Class']);
|
||||
|
@ -45,7 +45,7 @@ function TeacherPage() {
|
|||
useEffect(()=>{
|
||||
const change_class = async () => {
|
||||
try {
|
||||
const change_class_src = await axios.post('http://127.0.0.1:5000/teacher/change_class',{
|
||||
const change_class_src = await axios.post('/api/teacher/change_class',{
|
||||
teacher_ID,
|
||||
selectedValue,
|
||||
testID
|
||||
|
@ -74,7 +74,7 @@ function TeacherPage() {
|
|||
const click_detailed= async()=>{
|
||||
//获取详细信息
|
||||
try{
|
||||
const detaileddata_src=await axios.post('http://127.0.0.1:5000/teacher/detaileddata',{
|
||||
const detaileddata_src=await axios.post('/api/teacher/detaileddata',{
|
||||
testID,
|
||||
selectedValue,
|
||||
teacher_ID
|
||||
|
|
|
@ -39,7 +39,7 @@ function Home(){
|
|||
const student_succeed_func = async () => {
|
||||
const student_ID=localStorage.getItem('islogin')
|
||||
try{
|
||||
const student_succeed_src=await axios.post('http://127.0.0.1:5000/student',{
|
||||
const student_succeed_src=await axios.post('/api/student',{
|
||||
student_ID
|
||||
});
|
||||
//提取课程
|
||||
|
|
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 9.5 KiB |
|
@ -19,7 +19,7 @@ function Exam(){
|
|||
const [testdata,settestdata]=useState('')
|
||||
const test_func= async()=>{
|
||||
try{
|
||||
const test_src= await axios.post('http://127.0.0.1:5000/student/get_test',{student_ID})
|
||||
const test_src= await axios.post('/api/student/get_test',{student_ID})
|
||||
const test_data=test_src.data['data']
|
||||
settestdata(test_data)
|
||||
}catch(error){
|
||||
|
@ -132,7 +132,7 @@ function Exam(){
|
|||
if(isMounted){
|
||||
const score_func=async()=>{
|
||||
try{
|
||||
const score_entry_src=await axios.post('http://127.0.0.1:5000/student/score_entry',{
|
||||
const score_entry_src=await axios.post('/api/student/score_entry',{
|
||||
student_ID,
|
||||
score,
|
||||
examId
|
||||
|
|
|
@ -17,7 +17,7 @@ function SubjectPage(){
|
|||
//根据学生ID获取他的考试卷子
|
||||
const test=async()=>{
|
||||
try{
|
||||
const test_src= await axios.post('http://127.0.0.1:5000/student/get_test',{student_ID})
|
||||
const test_src= await axios.post('/api/student/get_test',{student_ID})
|
||||
settestdata(test_src.data['data'])
|
||||
}catch(error){
|
||||
alert(error)
|
||||
|
@ -32,7 +32,7 @@ function SubjectPage(){
|
|||
//获取他已经做过的试卷
|
||||
const end_test=async()=>{
|
||||
try{
|
||||
const end_test_src=await axios.post('http://127.0.0.1:5000/student/get_end_student',{student_ID})
|
||||
const end_test_src=await axios.post('/api/student/get_end_student',{student_ID})
|
||||
const obj=end_test_src.data['result']
|
||||
setEndTestList(obj)
|
||||
}catch(error){
|
||||
|
@ -67,7 +67,7 @@ function SubjectPage(){
|
|||
|
||||
const find_result_func=async()=>{
|
||||
try{
|
||||
const find_result=await axios.post('http://127.0.0.1:5000/student/fetch_result',{
|
||||
const find_result=await axios.post('/api/student/fetch_result',{
|
||||
student_ID
|
||||
})
|
||||
setresult(find_result.data['result'])
|
||||
|
|
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 11 KiB |
|
@ -62,7 +62,7 @@ import axios from 'axios';
|
|||
alert('学号错误')
|
||||
return
|
||||
}
|
||||
const register_func=await axios.post('http://127.0.0.1:5000/register',{
|
||||
const register_func=await axios.post('/api/register',{
|
||||
name,
|
||||
ID,
|
||||
password,
|
||||
|
|
|
@ -12,7 +12,7 @@ function SignInPage(){
|
|||
|
||||
const login = async () => {
|
||||
try {
|
||||
const login_data = await axios.post('http://127.0.0.1:5000/login', {
|
||||
const login_data = await axios.post('/api/login', {
|
||||
ID,
|
||||
password
|
||||
});
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
const proxy=require("http-proxy-middleware")
|
||||
module.exports=function(app){
|
||||
app.use(proxy(['/api'],{target:"http://localhost:5000"}))
|
||||
}
|
54
build.sh
|
@ -1,3 +1,51 @@
|
|||
docker compose build
|
||||
docker compose build build-dmpython
|
||||
docker compose build build-frontend
|
||||
#!/bin/bash
|
||||
|
||||
# 获取当前文件夹名字
|
||||
current_dir=$(basename "$PWD")
|
||||
|
||||
# 确保有稳定的网络环境
|
||||
ensure_network() {
|
||||
read -p "请确保有稳定的网络环境[Y/N] " confirm
|
||||
if [[ ! $confirm =~ ^[yY]([eE][sS])?$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 打包镜像
|
||||
build_image() {
|
||||
local service_name=$1
|
||||
echo "打包${service_name}镜像"
|
||||
docker compose build "$service_name"
|
||||
}
|
||||
|
||||
# 推送镜像
|
||||
push_image() {
|
||||
read -p "是否要推送到《达梦启元云原生大数据平台》? [Y/N] " confirm
|
||||
if [[ $confirm =~ ^[yY]([eE][sS])?$ ]]; then
|
||||
echo "tag"
|
||||
docker tag "${current_dir}-flask-app" 36.138.114.105:31000/cnsof50011836/flask-app
|
||||
echo "pushing"
|
||||
docker push 36.138.114.105:31000/cnsof50011836/flask-app
|
||||
echo "pushed"
|
||||
else
|
||||
echo "用户选择不推送镜像"
|
||||
fi
|
||||
}
|
||||
|
||||
# 主流程
|
||||
main() {
|
||||
echo "打包中"
|
||||
ensure_network
|
||||
|
||||
build_image base
|
||||
build_image base-dm
|
||||
build_image build-dmpython
|
||||
build_image build-frontend
|
||||
build_image flask-app
|
||||
|
||||
push_image
|
||||
|
||||
echo "脚本结束"
|
||||
}
|
||||
|
||||
main
|
|
@ -1,8 +1,14 @@
|
|||
|
||||
services:
|
||||
base:
|
||||
build: ./docker/base
|
||||
image: base
|
||||
|
||||
base-dm:
|
||||
build: ./docker/base-dm
|
||||
image: base-dm
|
||||
depends_on:
|
||||
- base
|
||||
|
||||
build-dmpython:
|
||||
build: ./docker/build-dmpython
|
||||
|
@ -28,20 +34,3 @@ services:
|
|||
retries: 3
|
||||
command: gunicorn -w 3 -t 60 -b 0.0.0.0:8000 app:app
|
||||
|
||||
nginx-proxy:
|
||||
build: ./docker/nginx
|
||||
restart: always
|
||||
volumes:
|
||||
- ./docker/nginx/default.conf:/tmp/default.conf
|
||||
environment:
|
||||
- FLASK_SERVER_ADDR=flask-app:8000
|
||||
ports:
|
||||
- "80:80"
|
||||
depends_on:
|
||||
- flask-app
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl --silent --fail localhost:80/health-check || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
command: /app/start.sh
|
||||
|
|
|
@ -1,35 +1,16 @@
|
|||
FROM ubuntu
|
||||
# apt安装时,防止卡死在交互界面
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
# 基础软件安装
|
||||
RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list \
|
||||
&& apt-get -y update && apt-get -y upgrade \
|
||||
&& apt-get install -y python3.10-venv libssl-dev sudo vim python3-pip ssh wget unzip p7zip* language-pack-zh-hans language-selector-common locales locales-all \
|
||||
# 设置中文环境
|
||||
&& apt install -y $(check-language-support) \
|
||||
&& echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen \
|
||||
&& sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 \
|
||||
&& locale-gen \
|
||||
FROM base
|
||||
# 添加用户
|
||||
&& useradd -m -s /bin/bash dmdba \
|
||||
RUN useradd -m -s /bin/bash dmdba \
|
||||
# 修改用户密码
|
||||
&& echo "dmdba:123456" | chpasswd \
|
||||
&& pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple \
|
||||
&& echo "**** clean up ****" && \
|
||||
apt-get clean && \
|
||||
rm -rf \
|
||||
/config/* \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
||||
# 传入安装包并解压
|
||||
&& echo "dmdba:123456" | chpasswd
|
||||
WORKDIR /home/dmdba
|
||||
|
||||
# 传入安装包并解压
|
||||
RUN wget https://download.dameng.com/eco/adapter/DM8/202405/dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip
|
||||
RUN unzip dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \
|
||||
&& chown -R dmdba:dmdba /home/dmdba \
|
||||
&& rm -f dm8_20240408_x86_rh7_64_ent_8.1.3.140.zip \
|
||||
&& 7z x dm8_20240408_x86_rh7_64.iso \
|
||||
&& rm -f dm8_20240408_x86_rh7_64.iso \
|
||||
&& chmod +x DMInstall.bin
|
||||
&& chmod +x DMInstall.bin
|
||||
USER dmdba
|
|
@ -0,0 +1,22 @@
|
|||
FROM ubuntu
|
||||
# apt安装时,防止卡死在交互界面
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LANG=zh_CN.UTF-8
|
||||
ENV LC_ALL=zh_CN.UTF-8
|
||||
# 基础软件安装
|
||||
RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list \
|
||||
&& apt-get -y update && apt-get -y upgrade \
|
||||
&& apt-get install -y python3.10-venv libssl-dev sudo vim python3-pip ssh wget unzip p7zip* language-pack-zh-hans language-selector-common locales locales-all \
|
||||
# 设置中文环境
|
||||
&& apt install -y $(check-language-support) \
|
||||
&& echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen \
|
||||
&& sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 \
|
||||
&& locale-gen \
|
||||
&& pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple \
|
||||
&& echo "**** clean up ****" && \
|
||||
apt-get clean && \
|
||||
rm -rf \
|
||||
/config/* \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
|
@ -115,7 +115,7 @@
|
|||
</DB_PARAMS>
|
||||
|
||||
<!--是否创建数据库实例的服务,取值范围: Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非root用户不能创建数据库服务。 -->
|
||||
<CREATE_DB_SERVICE>Y</CREATE_DB_SERVICE>
|
||||
<CREATE_DB_SERVICE>N</CREATE_DB_SERVICE>
|
||||
|
||||
<!--是否启动数据库,取值范围: Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
|
||||
<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
FROM base-dm
|
||||
FROM base
|
||||
|
||||
# 升级pip
|
||||
RUN pip install --upgrade pip
|
||||
|
||||
# 创建一个用户运行flask
|
||||
RUN adduser flask
|
||||
RUN chown -R flask:flask /home/flask
|
||||
RUN mkdir -p /var/log/flask-app && touch /var/log/flask-app/flask-app.err.log && touch /var/log/flask-app/flask-app.out.log
|
||||
RUN chown -R flask:flask /var/log/flask-app
|
||||
RUN adduser flask && \
|
||||
chown -R flask:flask /home/flask && \
|
||||
mkdir -p /var/log/flask-app && touch /var/log/flask-app/flask-app.err.log && touch /var/log/flask-app/flask-app.out.log && \
|
||||
chown -R flask:flask /var/log/flask-app
|
||||
WORKDIR /home/flask
|
||||
USER flask
|
||||
|
||||
|
@ -16,18 +16,18 @@ COPY --chown=flask:flask . .
|
|||
|
||||
# venv
|
||||
ENV VIRTUAL_ENV=/home/flask/venv
|
||||
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||
|
||||
# 安装包
|
||||
RUN python3 -m venv "$VIRTUAL_ENV"
|
||||
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||
RUN export FLASK_APP=main.py
|
||||
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" && \
|
||||
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
|
||||
COPY --from=build-dmpython /home/dmdba/build_artifacts/libdmdpi.so /usr/lib/
|
||||
COPY --from=build-frontend /usr/src/app/build/ /home/flask/public/
|
||||
RUN pip3 install dmPython-2.5.5-cp310-cp310-linux_x86_64.whl && rm dmPython-2.5.5-cp310-cp310-linux_x86_64.whl
|
||||
RUN MAKEFLAGS="-j$(nproc)" pip install -r requirements.txt
|
||||
USER root
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 5000
|
||||
|
||||
CMD ["python", "main.py"]
|
||||
CMD ["gunicorn", "-w", "3", "-t", "60", "-b", "0.0.0.0:8000", "app:app"]
|
|
@ -8,7 +8,7 @@ CORS(app, resources={r"/*": {"origins": "*"}})
|
|||
app.config['SECRET_KEY'] = '350625'
|
||||
|
||||
|
||||
@app.route('/student', methods=['POST']) # 检测历史是否登录过,登录则直接进入index,反之则进去login界面
|
||||
@app.route('/api/student', methods=['POST']) # 检测历史是否登录过,登录则直接进入index,反之则进去login界面
|
||||
def student(): # 判断是否已经登录
|
||||
ID_data = request.json
|
||||
ID = ID_data['student_ID']
|
||||
|
@ -17,7 +17,7 @@ def student(): # 判断是否已经登录
|
|||
return jsonify({'student_succeed': student_succeed, 'student_lesson': student_lesson})
|
||||
|
||||
|
||||
@app.route('/login', methods=['POST']) # 登录功能
|
||||
@app.route('/api/login', methods=['POST']) # 登录功能
|
||||
def login():
|
||||
login_data = request.json # 获取前端发送过来的数据
|
||||
ID = login_data['ID'] # 解析数据
|
||||
|
@ -65,7 +65,7 @@ def login():
|
|||
|
||||
# postman
|
||||
|
||||
@app.route('/logout', methods=['POST']) # 退出登录功能
|
||||
@app.route('/api/logout', methods=['POST']) # 退出登录功能
|
||||
def logout(): # 退出登录
|
||||
ID = session['id']
|
||||
print(ID)
|
||||
|
@ -73,7 +73,7 @@ def logout(): # 退出登录
|
|||
return jsonify({'result': '注销成功'})
|
||||
|
||||
|
||||
@app.route('/register', methods=['POST']) # 注册功能实现
|
||||
@app.route('/api/register', methods=['POST']) # 注册功能实现
|
||||
def register():
|
||||
register_data = request.json # 获取前端发送过来的数据
|
||||
name = register_data['name']
|
||||
|
@ -88,7 +88,7 @@ def register():
|
|||
return jsonify({'result': '注册成功'})
|
||||
|
||||
|
||||
@app.route('/student/get_lesson', methods=['GET'])
|
||||
@app.route('/api/student/get_lesson', methods=['GET'])
|
||||
def get_lesson(): # 获取课程
|
||||
student_id = session.get('id')
|
||||
student_lesson = get_lesson_func(student_id)
|
||||
|
@ -97,27 +97,27 @@ def get_lesson(): # 获取课程
|
|||
|
||||
|
||||
# 学生获取试卷
|
||||
@app.route('/student/get_test', methods=['POST'])
|
||||
@app.route('/api/student/get_test', methods=['POST'])
|
||||
def get_test(): # 获取试卷以及历史试卷
|
||||
data = request.json
|
||||
ID = data['student_ID']
|
||||
return jsonify({"data": fetch_test_func(ID)})
|
||||
|
||||
|
||||
@app.route('/student/fetch_result', methods=['POST']) # 查找成绩
|
||||
@app.route('/api/student/fetch_result', methods=['POST']) # 查找成绩
|
||||
def fetch_result():
|
||||
data = request.json
|
||||
ID = data['student_ID']
|
||||
return jsonify({'result': fetch_result_func(ID)})
|
||||
|
||||
@app.route('/student/get_end_student', methods=['POST'])
|
||||
@app.route('/api/student/get_end_student', methods=['POST'])
|
||||
def get_end_student():
|
||||
data = request.json
|
||||
ID = data['student_ID']
|
||||
return jsonify({'result': find_end_test(ID)})
|
||||
|
||||
|
||||
@app.route('/student/score_entry', methods=['POST'])
|
||||
@app.route('/api/student/score_entry', methods=['POST'])
|
||||
def score_entry():
|
||||
data = request.json
|
||||
ID = data['student_ID']
|
||||
|
@ -138,7 +138,7 @@ def FetchTrainTitle():
|
|||
|
||||
|
||||
# 以下为教师功能—————————————————————————————————————————————————————————————————————
|
||||
@app.route('/teacher/return_question', methods=['POST'])
|
||||
@app.route('/api/teacher/return_question', methods=['POST'])
|
||||
def return_question():
|
||||
data = request.json
|
||||
ID = data['teacher_ID']
|
||||
|
@ -148,7 +148,7 @@ def return_question():
|
|||
return jsonify({'选择': choice_question, '填空': completion_question, '判断': t_or_f_question})
|
||||
|
||||
|
||||
@app.route('/teacher/select_class', methods=['POST'])
|
||||
@app.route('/api/teacher/select_class', methods=['POST'])
|
||||
def select_class(): # 查找每个老师管理的班级 以及在考试管理查找默认班级
|
||||
teacher_id = request.json['teacher_ID']
|
||||
# testID =request.json['testID']
|
||||
|
@ -157,23 +157,23 @@ def select_class(): # 查找每个老师管理的班级 以及在考试管理
|
|||
# print(testID)
|
||||
return jsonify({'Class': class_dic,'default': find_default_class_func(default_class, teacher_id)})
|
||||
|
||||
@app.route('/teacher/change_class', methods=['POST'])
|
||||
@app.route('/api/teacher/change_class', methods=['POST'])
|
||||
def change_class(): # 查找每个老师管理的班级 以及在考试管理查找默认班级
|
||||
teacher_id = request.json['teacher_ID']
|
||||
ClassID=request.json['selectedValue']
|
||||
return jsonify({'default': find_default_class_func(ClassID,teacher_id)})
|
||||
|
||||
@app.route('/teacher/detaileddata', methods=['POST'])
|
||||
@app.route('/api/teacher/detaileddata', methods=['POST'])
|
||||
def detaileddata():
|
||||
data=request.json
|
||||
ClassID=data['selectedValue']
|
||||
testID=data['testID']
|
||||
return jsonify({'data':detailed_class(testID,ClassID)})
|
||||
|
||||
@app.route('/teacher/', methods=['POST'])
|
||||
@app.route('/api/teacher/', methods=['POST'])
|
||||
def find_test():
|
||||
return
|
||||
@app.route('/teacher/find_student', methods=['POST'])
|
||||
@app.route('/api/teacher/find_student', methods=['POST'])
|
||||
def find_student(): # 获取班级学生的具体信息
|
||||
student_list = []
|
||||
Data = request.json
|
||||
|
@ -184,7 +184,7 @@ def find_student(): # 获取班级学生的具体信息
|
|||
return [student_succeed, student_list]
|
||||
|
||||
|
||||
@app.route('/teacher/accept_test', methods=['POST']) # 在前端发布成功之后要存入数据库
|
||||
@app.route('/api/teacher/accept_test', methods=['POST']) # 在前端发布成功之后要存入数据库
|
||||
def accept_test():
|
||||
data = request.json
|
||||
choice_list = data['ChoiceQuestionSet']
|
||||
|
@ -199,11 +199,11 @@ def accept_test():
|
|||
print('添加成功')
|
||||
return jsonify({'result': '发布成功'})
|
||||
|
||||
@app.route('/teacher/fetch_train_question',methods=["POST"])
|
||||
@app.route('/api/teacher/fetch_train_question',methods=["POST"])
|
||||
def fetch_train_question():
|
||||
return train_question()
|
||||
|
||||
@app.route('/teacher/SendTrainTest',methods=["POST"])
|
||||
@app.route('/api/teacher/SendTrainTest',methods=["POST"])
|
||||
def SendTrainTest():
|
||||
data=request.json
|
||||
TrainChoice=data['TrainChoice']
|
||||
|
|