Browse Source

文章API修正、喜愛課程API改為存class_name_id

Mia Cheng 1 year ago
parent
commit
fd8f0a35ad
3 changed files with 34 additions and 19 deletions
  1. 2 2
      app/api/article.py
  2. 31 16
      app/api/classes.py
  3. 1 1
      app/models/models.py

+ 2 - 2
app/api/article.py

@@ -62,10 +62,10 @@ async def get_article(
             article_list = article_list.filter(Q(tags__icontains=category)).all()
         
         if article_id :
-            article_list = article_list.filter(group_id = group_id).all()
+            article_list = article_list.filter(id = article_id).all()
 
         if group_id :
-            article_list = article_list.filter(id = article_id).all()
+            article_list = article_list.filter(group_id = group_id).all()
 
         article_list = await article_list.all()
 

+ 31 - 16
app/api/classes.py

@@ -631,13 +631,15 @@ async def search_class_like(keyword: str):
 
 @classes.post("/add_favorite_class")
 async def add_favorite_class(
-        class_event_id: int, 
+        class_name_id: int, 
         user_id = Depends(check_token),
         time_stemp: datetime = datetime.now()
 ):
     try:
+        if not user_id:
+            return {"msg": "no access", "code": 500}
         new_favorite_class = await Favorite_course.get_or_create(
-            class_event_id=class_event_id,
+            class_name_id=class_name_id,
             user_id=user_id,
             defaults={'time_stemp': time_stemp}
         )
@@ -647,34 +649,47 @@ async def add_favorite_class(
 
 @classes.get("/get_favorite_class")
 async def get_favorite_class( 
-        user_id = Depends(check_token)
+        user_id = Depends(check_token),
+        no_details : Optional[int] = None
 ):
     try:
         class_list = await Favorite_course.filter(user_id = user_id).all()
         favorite_courses = []
         for class_obj in class_list:
-            class_event = await Class_list.get(id = class_obj.class_event_id)
-            class_name = await Class_name.get(id = class_event.name_id)
-            class_data = {
-                "id": class_obj.id,
-                "user_id": class_obj.user_id,
-                "class_event_id":class_obj.class_event_id,
-                "class_name_id" : class_name.id,
-                "time_stemp":class_obj.time_stemp
-            }
-            favorite_courses.append(class_data)
+            if no_details:
+                class_data = {
+                    "id": class_obj.id,
+                    "user_id": class_obj.user_id,
+                    "class_name_id" : class_obj.class_name_id,
+                    "time_stemp":class_obj.time_stemp
+                }
+                favorite_courses.append(class_data)
+            else:
+                class_data = {
+                    "id": class_obj.id,
+                    "user_id": class_obj.user_id,
+                    "class_name_id" : class_obj.class_name_id,
+                    "time_stemp":class_obj.time_stemp
+
+                }
+
+                result = await get_class_name(class_name_id = class_obj.class_name_id)
+                class_detail = result["classes"][0]
+                for class_tmp in class_detail.items():
+                    class_data[class_tmp[0]] = class_tmp[1]
+                favorite_courses.append(class_data)        
 
-        return {"msg": "success", "code": 200, "school_groups": favorite_courses}
+        return {"msg": "success", "code": 200, "favorite_courses": 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, 
+        class_name_id: int, 
         user_id = Depends(check_token)
 ):
     try:
-        await Favorite_course.filter(class_event_id=class_event_id,user_id=user_id).delete()
+        await Favorite_course.filter(class_name_id=class_name_id,user_id=user_id).delete()
         return {"msg": "success", "code": 200}
     except Exception as e:
         return {"msg": str(e), "code": 500}

+ 1 - 1
app/models/models.py

@@ -112,7 +112,7 @@ class News(Model):
 class Favorite_course(Model):
     id = fields.IntField(pk=True)
     user_id = fields.IntField(description="使用者ID")
-    class_event_id = fields.IntField(description="課程場次ID")
+    class_name_id = fields.IntField(description="課程ID")
     time_stemp = fields.DatetimeField(description="時間")
 
 class Article_list(Model):