|
@@ -1,10 +1,11 @@
|
|
|
from fastapi import APIRouter, Form, Depends, HTTPException, File, UploadFile
|
|
|
+from typing import List
|
|
|
from fastapi.responses import FileResponse
|
|
|
import os
|
|
|
from random import randint
|
|
|
import uuid
|
|
|
from fastapi.security import OAuth2PasswordRequestForm
|
|
|
-from app.models.models import User
|
|
|
+from app.models.models import User,Favorite_course
|
|
|
from app.models.models import Class_list,Schools,Class_detail,Class_name,Registration,School_group
|
|
|
from app.api import deps
|
|
|
from sqlalchemy.orm import Session
|
|
@@ -20,6 +21,7 @@ import emails
|
|
|
from emails.template import JinjaTemplate
|
|
|
import logging
|
|
|
from tortoise.queryset import Q
|
|
|
+from fastapi.responses import HTMLResponse
|
|
|
|
|
|
classes = APIRouter()
|
|
|
|
|
@@ -320,15 +322,26 @@ async def delete_school(location_id: int):
|
|
|
await Schools.filter(id=location_id).delete()
|
|
|
return {"msg": "success", "code": 200}
|
|
|
|
|
|
+@classes.post("/delete_session")
|
|
|
+async def delete_session(id: int):
|
|
|
+ if id:
|
|
|
+ await Class_detail.filter(id=id).delete()
|
|
|
+ return {"msg": "success", "code": 200}
|
|
|
+
|
|
|
@classes.post("/delete_class")
|
|
|
async def delete(id: int):
|
|
|
if id:
|
|
|
+ await Class_detail.filter(class_list_id=id).delete()
|
|
|
await Class_list.filter(id=id).delete()
|
|
|
return {"msg": "success", "code": 200}
|
|
|
|
|
|
@classes.post("/delete_class_name")
|
|
|
async def delete(id: int):
|
|
|
if id:
|
|
|
+ class_event_list = await Class_list.filter(name_id=id).all()
|
|
|
+ for class_event_obj in class_event_list:
|
|
|
+ await Class_detail.filter(class_list_id=class_event_obj.id).delete()
|
|
|
+
|
|
|
await Class_list.filter(name_id=id).delete()
|
|
|
await Class_name.filter(id=id).delete()
|
|
|
return {"msg": "success", "code": 200}
|
|
@@ -417,11 +430,17 @@ async def get_class_name(
|
|
|
|
|
|
classes_name = []
|
|
|
for class_name_obj in class_name_list:
|
|
|
- school_obj = await Schools.get(id=class_name_obj.school_id)
|
|
|
+ school_obj = await Schools.filter(id=class_name_obj.school_id).all()
|
|
|
+ school_name = ""
|
|
|
+ if school_obj == []:
|
|
|
+ school_name = "未設定據點"
|
|
|
+ else :
|
|
|
+ school_obj = await Schools.get(id=class_name_obj.school_id)
|
|
|
+ school_name = school_obj.name
|
|
|
class_data = {
|
|
|
"class_name_id": class_name_obj.id,
|
|
|
"name": class_name_obj.name,
|
|
|
- "school":school_obj.name,
|
|
|
+ "school":school_name,
|
|
|
"category": class_name_obj.category,
|
|
|
"introduction": class_name_obj.introduction,
|
|
|
"organizer": class_name_obj.organizer,
|
|
@@ -526,4 +545,57 @@ async def search_class_like(keyword: str):
|
|
|
|
|
|
return {"msg": "success", "code": 200, "classes": classes}
|
|
|
except Exception as e:
|
|
|
- return {"msg": str(e), "code": 500}
|
|
|
+ return {"msg": str(e), "code": 500}
|
|
|
+
|
|
|
+@classes.post("/add_favorite_class")
|
|
|
+async def add_favorite_class(
|
|
|
+ class_event_id: int,
|
|
|
+ user_id : int,
|
|
|
+ time_stemp: datetime = datetime.now()
|
|
|
+):
|
|
|
+ try:
|
|
|
+ new_favorite_class = await Favorite_course.get_or_create(
|
|
|
+ class_event_id=class_event_id,
|
|
|
+ user_id=user_id,
|
|
|
+ defaults={'time_stemp': time_stemp}
|
|
|
+ )
|
|
|
+ return {"msg": "success", "code": 200,"id":new_favorite_class}
|
|
|
+ except Exception as e:
|
|
|
+ return {"msg": str(e), "code": 500}
|
|
|
+
|
|
|
+@classes.get("get_favorite_class")
|
|
|
+async def get_favorite_class(
|
|
|
+ user_id : int
|
|
|
+):
|
|
|
+ try:
|
|
|
+ class_list = await Favorite_course.filter(user_id = user_id).all()
|
|
|
+ favorite_courses = []
|
|
|
+ for class_obj in class_list:
|
|
|
+ class_data = {
|
|
|
+ "id": class_obj.id,
|
|
|
+ "user_id": class_obj.user_id,
|
|
|
+ "class_event_id":class_obj.class_event_id,
|
|
|
+ "time_stemp":class_obj.time_stemp
|
|
|
+ }
|
|
|
+ favorite_courses.append(class_data)
|
|
|
+
|
|
|
+ return {"msg": "success", "code": 200, "school_groups": favorite_courses}
|
|
|
+ except Exception as e:
|
|
|
+ return {"msg": str(e), "code": 500}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@classes.post("/delete_favorite_class")
|
|
|
+async def delete_favorite_class(
|
|
|
+ class_event_id: int,
|
|
|
+ user_id : int
|
|
|
+):
|
|
|
+ try:
|
|
|
+ await Favorite_course.filter(class_event_id=class_event_id,user_id=user_id).delete()
|
|
|
+ return {"msg": "success", "code": 200}
|
|
|
+ except Exception as e:
|
|
|
+ return {"msg": str(e), "code": 500}
|
|
|
+
|
|
|
+@classes.post("/uploadfiles/")
|
|
|
+async def create_upload_files(files: List[UploadFile]):
|
|
|
+ return {"filenames": [file.filename for file in files]}
|