MIA %!s(int64=2) %!d(string=hai) anos
pai
achega
7bec714727
Modificáronse 2 ficheiros con 95 adicións e 6 borrados
  1. 76 4
      app/api/classes.py
  2. 19 2
      app/models/models.py

+ 76 - 4
app/api/classes.py

@@ -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]}

+ 19 - 2
app/models/models.py

@@ -52,7 +52,7 @@ class Class_list(Model):
 
 class Class_detail(Model):
     id = fields.IntField(pk=True)
-    class_list_id = fields.IntField(description="課程ID")
+    class_list_id = fields.IntField(description="課程場次ID")
     start_time = fields.DatetimeField(description="開始時間")
     end_time = fields.DatetimeField(description="結束時間")
     sessions = fields.IntField(description="堂數")
@@ -64,4 +64,21 @@ class Registration(Model):
     user_id = fields.IntField(description="使用者ID")
     reg_confirm = fields.CharField(max_length=255, description="報名確認(1:報名成功 0:單純報名)")
     is_del = fields.CharField(max_length=255, description="是否取消(1:yes ,0:no)")
-    create_time = fields.DatetimeField(description="創建時間")
+    create_time = fields.DatetimeField(description="創建時間")
+
+class News(Model):
+    id = fields.IntField(pk=True)
+    title = fields.CharField(max_length=200, description="標題")
+    category = fields.CharField(max_length=45, description="類別")
+    create_time = fields.DatetimeField(description="發布時間")
+    click_time = fields.IntField(description="點擊次數")
+    content = fields.TextField(description="內容")
+    files = fields.TextField(description="附加檔案")
+    URL = fields.TextField(description="外部連結")
+    tags = fields.TextField(description="標籤")
+
+class Favorite_course(Model):
+    id = fields.IntField(pk=True)
+    user_id = fields.IntField(description="使用者ID")
+    class_event_id = fields.IntField(description="課程場次ID")
+    time_stemp = fields.DatetimeField(description="時間")