Ver Fonte

search_news_like、news 新增cover_img

Mia Cheng há 1 ano atrás
pai
commit
5e15106dd6
3 ficheiros alterados com 63 adições e 9 exclusões
  1. 1 1
      app/api/guidance.py
  2. 61 8
      app/api/news.py
  3. 1 0
      app/models/models.py

+ 1 - 1
app/api/guidance.py

@@ -47,7 +47,7 @@ async def get_guidance_group(
         }
             news_objs.append(news_tmp)
 
-        return {"msg": "success", "code": 200, "Guidance groups": news_objs}
+        return {"msg": "success", "code": 200, "Guidance_groups": news_objs}
     except Exception as e:
         return {"msg": str(e), "code": 500}
 

+ 61 - 8
app/api/news.py

@@ -42,7 +42,8 @@ async def search_news(
             "content" : news_obj.content,
             "files" : news_obj.files,
             "URL" : news_obj.URL,
-            "tags" : news_obj.tags
+            "tags" : news_obj.tags,
+            "cover_img": news_obj.cover_img
         }
             news_objs.append(news_tmp)
 
@@ -76,10 +77,20 @@ async def insert_news(
     create_time :str = Form(default=datetime.now()),
     content : str = Form(default=''),
     URL :str = Form(default=''),
-    tags : List[str] = Form(default=[]),
-    files_url = Depends(create_upload_files)
+    tags : str = Form(default='[]'),
+    files_url = Depends(create_upload_files),
+    cover_img_file:UploadFile = File(default='')
 ):
     try:
+        cover_img = ''
+        if cover_img_file != '':
+            contents = await cover_img_file.read()
+
+        #save the file
+            with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
+                f.write(contents)
+        
+            cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
 
         new_news = await News.create(
             title=title,
@@ -88,7 +99,8 @@ async def insert_news(
             content=content,
             files = str(files_url),
             URL = URL,
-            tags = tags
+            tags = tags,
+            cover_img = cover_img
         )
         
         return {"msg": "success", "code": 200, "new_news": new_news.id}
@@ -103,8 +115,9 @@ async def update_news(
     create_time :str = Form(default=datetime.now()),
     content : str = Form(default=''),
     URL :str = Form(default=''),
-    tags : List[str] = Form(default=[]),
-    files_url = Depends(create_upload_files)
+    tags : str = Form(default='[]'),
+    files_url = Depends(create_upload_files),
+    cover_img_file:UploadFile = File(default=''),
 ):
     try:
         if news_id == 0 :
@@ -127,8 +140,17 @@ async def update_news(
         if URL.strip() != '':
             news_obj.URL = URL
 
-        if tags != []:
+        if tags != '[]':
             news_obj.tags = tags
+
+        
+        if cover_img_file != '':
+            contents = await cover_img_file.read()
+
+            with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
+                f.write(contents)
+        
+            news_obj.cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
         
         news_obj.files = str(files_url)
         
@@ -144,4 +166,35 @@ async def delete_news(id: int = 0):
         await News.filter(id=id).delete()
         return {"msg": "success", "code": 200}
     else :
-        return {"msg": "please input ID", "code": 200}
+        return {"msg": "please input ID", "code": 200}
+    
+@news.get("/search_news_like")
+async def search_class_like(keyword: str):
+    try:
+        news_list = await News.filter(
+            Q(title__icontains=keyword)|
+            Q(category__icontains=keyword)|
+            Q(content__icontains=keyword)|
+            Q(tags__icontains=keyword)
+                ).all()
+        
+        news_objs = []
+        for news_obj in news_list:
+            news_tmp = {
+            "news_id": news_obj.id,
+            "title": news_obj.title,
+            "category": news_obj.category,
+            "create_time" : news_obj.create_time,
+            "click_time" : news_obj.click_time,
+            "content" : news_obj.content,
+            "files" : news_obj.files,
+            "URL" : news_obj.URL,
+            "tags" : news_obj.tags,
+            "cover_img": news_obj.cover_img
+        }
+            news_objs.append(news_tmp)
+
+        return {"msg": "success", "code": 200, "news": news_objs}
+    except Exception as e:
+        return {"msg": str(e), "code": 500}
+    

+ 1 - 0
app/models/models.py

@@ -107,6 +107,7 @@ class News(Model):
     files = fields.TextField(description="附加檔案")
     URL = fields.TextField(description="外部連結")
     tags = fields.TextField(description="標籤")
+    cover_img = fields.CharField(max_length=255, description="封面圖片")
 
 class Favorite_course(Model):
     id = fields.IntField(pk=True)