Mia Cheng vor 2 Jahren
Ursprung
Commit
c35dba0d39
4 geänderte Dateien mit 204 neuen und 166 gelöschten Zeilen
  1. 61 56
      app/api/article.py
  2. 85 72
      app/api/classes.py
  3. 22 22
      app/api/news.py
  4. 36 16
      app/api/registration.py

+ 61 - 56
app/api/article.py

@@ -67,37 +67,39 @@ async def get_article(
         if group_id :
             article_list = article_list.filter(group_id = group_id).all()
 
-        article_list = await article_list.all()
+        count = await article_list.all().count()
+
+        if page_num and page_amount:
+            article_list = article_list.offset((page_num-1)*page_amount).limit(page_amount)
+
+        article_list = await article_list.all().order_by("-create_time")
 
         article_objs = []
-        count = 0
+        
         for article_obj in article_list:
-            article_tmp = {
-            "article_id": article_obj.id,
-            "title": article_obj.title,
-            "school_id" :article_obj.school_id,
-            "group_sort" :article_obj.group_sort,
-            "group_id" :article_obj.group_id,
-            "category": article_obj.category,
-            "create_time" : article_obj.create_time,
-            "click_time" : article_obj.click_time,
-            "depiction" : article_obj.depiction,
-            "content" : article_obj.content,
-            "files" : article_obj.files,
-            "video_url" : article_obj.vedio_url,
-            "tags" : article_obj.tags,
-            "cover_img": article_obj.cover_img,
-            "url" : article_obj.url
-            }
-            if page_num and page_amount:
-                if count < page_num*page_amount and count >= (page_num-1)*page_amount :
-                    article_objs.append(article_tmp)
-                    count += 1
-                elif  count >= page_num*page_amount: count += 1
-                else : count += 1
-            else :
-                article_objs.append(article_tmp)
-                count += 1
+            try:
+                article_tmp = {
+                    "article_id": article_obj.id,
+                    "title": article_obj.title,
+                    "school_id" :article_obj.school_id,
+                    "group_sort" :article_obj.group_sort,
+                    "group_id" :article_obj.group_id,
+                    "category": article_obj.category,
+                    "create_time" : article_obj.create_time,
+                    "click_time" : article_obj.click_time,
+                    "depiction" : article_obj.depiction,
+                    "content" : article_obj.content,
+                    "files" : article_obj.files,
+                    "video_url" : article_obj.vedio_url,
+                    "tags" : article_obj.tags,
+                    "cover_img": article_obj.cover_img,
+                    "url" : article_obj.url
+                }
+            except:
+                article_tmp = {"msg":"data wrong"}
+            
+            article_objs.append(article_tmp)
+                
 
         return {"msg": "success", "code": 200, "total_num":count,"articles": article_objs}
     except Exception as e:
@@ -248,7 +250,7 @@ async def delete_article(id: int = 0):
 async def search_article_like(keyword: str,page_num : Optional[int] = None,
     page_amount : Optional[int] = None):
     try:
-        article_list = await Article_list.filter(
+        article_list = Article_list.filter(
             Q(title__icontains=keyword)|
             Q(category__icontains=keyword)|
             Q(content__icontains=keyword)|
@@ -256,35 +258,38 @@ async def search_article_like(keyword: str,page_num : Optional[int] = None,
             Q(tags__icontains=keyword)
                 ).all()
         
+        count = await article_list.all().count()
+
+        if page_num and page_amount:
+            article_list = article_list.offset((page_num-1)*page_amount).limit(page_amount)
+
+        article_list = await article_list.all().order_by("-create_time")
+        
         article_objs = []
-        count = 0
+        
         for article_obj in article_list:
-            article_tmp = {
-            "article_id": article_obj.id,
-            "title": article_obj.title,
-            "school_id" :article_obj.school_id,
-            "group_sort" :article_obj.group_sort,
-            "group_id" :article_obj.group_id,
-            "category": article_obj.category,
-            "create_time" : article_obj.create_time,
-            "click_time" : article_obj.click_time,
-            "depiction" : article_obj.depiction,
-            "content" : article_obj.content,
-            "files" : article_obj.files,
-            "video_url" : article_obj.vedio_url,
-            "tags" : article_obj.tags,
-            "cover_img": article_obj.cover_img,
-            "url" : article_obj.url
-        }
-            if page_num and page_amount:
-                if count < page_num*page_amount and count >= (page_num-1)*page_amount :
-                    article_objs.append(article_tmp)
-                    count += 1
-                elif  count >= page_num*page_amount: count += 1
-                else : count += 1
-            else :
-                article_objs.append(article_tmp)
-                count += 1
+            try:
+                article_tmp = {
+                    "article_id": article_obj.id,
+                    "title": article_obj.title,
+                    "school_id" :article_obj.school_id,
+                    "group_sort" :article_obj.group_sort,
+                    "group_id" :article_obj.group_id,
+                    "category": article_obj.category,
+                    "create_time" : article_obj.create_time,
+                    "click_time" : article_obj.click_time,
+                    "depiction" : article_obj.depiction,
+                    "content" : article_obj.content,
+                    "files" : article_obj.files,
+                    "video_url" : article_obj.vedio_url,
+                    "tags" : article_obj.tags,
+                    "cover_img": article_obj.cover_img,
+                    "url" : article_obj.url
+                }
+            except:
+                article_tmp = {"msg":"data wrong"}
+            
+            article_objs.append(article_tmp)
 
         return {"msg": "success", "code": 200, "total_num":count,"article": article_objs}
     except Exception as e:

+ 85 - 72
app/api/classes.py

@@ -592,29 +592,30 @@ async def get_school(
         if location_keyword :
             school_list = school_list.filter(Q(address__icontains=location_keyword)).all()
         
+        count = await school_list.all().count()
+
+        if page_num and page_amount:
+            school_list = school_list.offset((page_num-1)*page_amount).limit(page_amount)
         
         school_list = await school_list.all().order_by("-update_time")
         
         schools = []
-        count = 0
 
         for school_obj in school_list:
-            school_data = {
-                "location_id": school_obj.id,
-                "location_name": school_obj.name,
-                "Lng": school_obj.longitude,
-                "Lat": school_obj.latitude,
-                "address": school_obj.address,
-                "update_time":school_obj.update_time
-            }
-            if page_num and page_amount:
-                if count < page_num*page_amount and count >= (page_num-1)*page_amount :
-                    schools.append(school_data)
-                    count += 1
-                else : count += 1
-            else :
+            try :
+                school_data = {
+                    "location_id": school_obj.id,
+                    "location_name": school_obj.name,
+                    "Lng": school_obj.longitude,
+                    "Lat": school_obj.latitude,
+                    "address": school_obj.address,
+                    "update_time":school_obj.update_time
+                }
+            
                 schools.append(school_data)
-                count += 1
+
+            except:
+                schools.append({"msg : data wrong"})
             
 
         return {"msg": "success", "code": 200, "total_num" : count,"schools": schools}
@@ -650,6 +651,9 @@ async def get_class_name(
     try:
         class_name_list = Class_name.all()
 
+        if group_id:
+            class_name_list = class_name_list.filter(group_id = group_id).all()
+
         if group_sort:
             class_name_list = class_name_list.filter(group_sort = group_sort).all()
         
@@ -662,10 +666,15 @@ async def get_class_name(
         if class_name_id :
             class_name_list = class_name_list.filter(id = class_name_id).all()
 
+        count = await class_name_list.all().count()
+
+        if page_num and page_amount:
+            class_name_list = class_name_list.offset((page_num-1)*page_amount).limit(page_amount)
+        
         class_name_list = await class_name_list.all().order_by("-id")
         classes_name = []
 
-        count = 0
+        
         for class_name_obj in class_name_list:
             school_obj = await Schools.filter(id=class_name_obj.school_id).all()
             school_name = ""
@@ -674,10 +683,10 @@ async def get_class_name(
             else :
                 school_obj = await Schools.get(id=class_name_obj.school_id)
                 school_name = school_obj.name
-            if not group_id or class_name_obj.group_id==group_id:
-                try:
-                    state = await check_date_state(class_name_id=class_name_obj.id)
-                    class_data = {
+            
+            try:
+                state = await check_date_state(class_name_id=class_name_obj.id)
+                class_data = {
                         "class_name_id": class_name_obj.id,
                         "name": class_name_obj.name,
                         "school":school_name,
@@ -689,18 +698,13 @@ async def get_class_name(
                         "group_sort":class_name_obj.group_sort,
                         "state": state["result"]
                         }
-                except:
-                    class_data = {
-                        "msg" : "fail to get data"
-                    } 
-                if page_num and page_amount:
-                    if count < page_num*page_amount and count >= (page_num-1)*page_amount :
-                        classes_name.append(class_data)
-                        count += 1
-                    else : count += 1
-                else :
-                    classes_name.append(class_data)
-                    count += 1
+            except:
+                class_data = {
+                    "msg" : "fail to get data"
+                } 
+                
+            classes_name.append(class_data)
+                    
 
         return {"msg": "success", "code": 200,"total_num" : count,"classes": classes_name}
     
@@ -969,41 +973,51 @@ async def get_group_classes_and_articles(
     page_amount : Optional[int] = None
 ):
     try:
-        class_name_list = await Class_name.filter(group_id = group_id).all()
-        article_list = await Article_list.filter(group_id = group_id).all()
+        class_name_list = Class_name.filter(group_id = group_id).all().order_by("-id")
+        article_list = Article_list.filter(group_id = group_id).all().order_by("-id")
+
+        class_count = await class_name_list.all().count()
+        article_count = await article_list.all().count()
+
+        if page_num and page_amount:
+            class_name_list = class_name_list.offset((page_num-1)*page_amount).limit(page_amount)
+            article_list = article_list.offset((page_num-1)*page_amount).limit(page_amount)
+        
+        
+        class_name_list = await class_name_list.all()
+        article_list = await article_list.all()
 
         article_objs = []
-        article_count = 0
+        
         for article_obj in article_list:
-            article_tmp = {
-                "article_id": article_obj.id,
-                "title": article_obj.title,
-                "school_id" :article_obj.school_id,
-                "group_sort" :article_obj.group_sort,
-                "group_id" :article_obj.group_id,
-                "category": article_obj.category,
-                "create_time" : article_obj.create_time,
-                "click_time" : article_obj.click_time,
-                "depiction" : article_obj.depiction,
-                "content" : article_obj.content,
-                "files" : article_obj.files,
-                "vedio_url" : article_obj.vedio_url,
-                "tags" : article_obj.tags,
-                "cover_img": article_obj.cover_img
-            }
-            if page_num and page_amount:
-                if article_count < page_num*page_amount and article_count >= (page_num-1)*page_amount :
-                    article_objs.append(article_tmp)
-                    article_count += 1
-                elif  article_count >= page_num*page_amount: article_count += 1
-                else : article_count += 1
-            else :
-                article_objs.append(article_tmp)
-                article_count += 1
+            try :
+                article_tmp = {
+                    "article_id": article_obj.id,
+                    "title": article_obj.title,
+                    "school_id" :article_obj.school_id,
+                    "group_sort" :article_obj.group_sort,
+                    "group_id" :article_obj.group_id,
+                    "category": article_obj.category,
+                    "create_time" : article_obj.create_time,
+                    "click_time" : article_obj.click_time,
+                    "depiction" : article_obj.depiction,
+                    "content" : article_obj.content,
+                    "files" : article_obj.files,
+                    "vedio_url" : article_obj.vedio_url,
+                    "tags" : article_obj.tags,
+                    "cover_img": article_obj.cover_img
+                }
+            except:
+                article_tmp = {
+                    "msg" : "fail to get data"
+                } 
+                
+            article_objs.append(article_tmp)
+            
 
         classes_name = []
 
-        class_count = 0
+        
         for class_name_obj in class_name_list:
             school_obj = await Schools.filter(id=class_name_obj.school_id).all()
             school_name = ""
@@ -1012,7 +1026,7 @@ async def get_group_classes_and_articles(
             else :
                 school_obj = await Schools.get(id=class_name_obj.school_id)
                 school_name = school_obj.name
-            if not group_id or class_name_obj.group_id==group_id:
+            try:
                 class_data = {
                     "class_name_id": class_name_obj.id,
                     "name": class_name_obj.name,
@@ -1024,15 +1038,14 @@ async def get_group_classes_and_articles(
                     "cover_img": class_name_obj.cover_img,
                     "group_sort":class_name_obj.group_sort
                     }
-                if page_num and page_amount:
-                    if class_count < page_num*page_amount and class_count >= (page_num-1)*page_amount :
-                        classes_name.append(class_data)
-                        class_count += 1
-                    elif  class_count >= page_num*page_amount: class_count += 1
-                    else : class_count += 1
-                else :
-                    classes_name.append(class_data)
-                    class_count += 1
+                
+            except:
+                class_data ={
+                    "msg" : "fail to get data"
+                } 
+            
+            classes_name.append(class_data)
+                    
 
         return {"msg": "success", "code": 200,"class_num" : class_count,"classes": classes_name,"article_num":article_count,"articles": article_objs}
     

+ 22 - 22
app/api/news.py

@@ -36,31 +36,31 @@ async def search_news(
         if category:
             news_list = news_list.filter(category=category).all()
 
-        news_list = await news_list.all()
-        count = 0
+        count = await news_list.all().count()
+
+        if page_num and page_amount:
+            news_list = news_list.offset((page_num-1)*page_amount).limit(page_amount)
+        
+        news_list = await news_list.all().order_by("-create_time")
 
         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
-        }
-            if page_num and page_amount:
-                if count < page_num*page_amount and count >= (page_num-1)*page_amount :
-                    news_objs.append(news_tmp)
-                    count += 1
-                else : count += 1
-            else :
-                news_objs.append(news_tmp)
-                count += 1
+            try:
+                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
+                }
+            except:
+                news_tmp = {"msg":"data wrong"}
+                
             news_objs.append(news_tmp)
 
         return {"msg": "success", "code": 200, "total_num" : count,"news": news_objs}

+ 36 - 16
app/api/registration.py

@@ -181,31 +181,47 @@ async def update_information(
     
 @registration.get("/get_user_information")
 async def get_user_information(
-    user_id = Depends(check_token)
+    user_id = Depends(check_token),
+    get_all : int = 0,
+    get_detail_information : int = 1
 ):
     try: 
         if not user_id :
             return  {"msg": "no access", "code": 200}
         
         try:
-            infor = await User_information.get(user_id=user_id)
+            if get_all:
+                user_list = await User.all()
+            else:
+                user_list = await User.filter(id = user_id)
         except:
-            return  {"msg": "no user information", "code": 200}
+            return  {"msg": "user table run fail", "code": 500}
+
+        user_inform_list = []
+        for user_obj in user_list:
+            user_inform = {
+                    "user_id" : user_obj.id,
+                    "user_name" : user_obj.username,
+                    "email" : user_obj.email
+                }
 
-        user_obj = await User.get(id = user_id)
+            if get_detail_information:
+                try :
+                    inform = await User_information.get(user_id=user_obj.id)
+                    user_inform["name"]  = inform.name
+                    user_inform["birthday"]  = inform.birthday
+                    user_inform["gender"]  = inform.gender
+                    user_inform["phone"]  = inform.phone
+                    user_inform["address"]  = inform.address
+                    
+                except:
+                    user_inform["msg"] = "no user information"
+                    user_inform["exist"] = False
 
-        user_inform = {
-            "user_id" : infor.user_id,
-            "display_name" : user_obj.username,
-            "name" : infor.name,
-            "birthday" : infor.birthday,
-            "gender" : infor.gender,
-            "phone" : infor.phone,
-            "address" : infor.address,
-            "email" : user_obj.email
-        }
+            user_inform_list.append(user_inform)
 
-        return {"msg":"success","code":200,"user_inform": user_inform}
+
+        return {"msg":"success","code":200,"user_inform": user_inform_list}
     except Exception as e:
         return {"msg": str(e), "code": 500}
     
@@ -280,6 +296,7 @@ async def delete_registration(
 @registration.post("/delete_registration")
 async def delete_registration(
     user_id = Depends(check_token),
+    super_ad_input_user_id : int = 0,
     event_id : int = 0
 ):
     try:
@@ -287,7 +304,10 @@ async def delete_registration(
         if not user_id :
             return  {"msg": "please log in", "code": 200}
         
-        registration_obj = await Registration.get(event_id=event_id,user_id=user_id)
+        if super_ad_input_user_id:
+            registration_obj = await Registration.get(event_id=event_id,user_id=super_ad_input_user_id)
+        else:
+            registration_obj = await Registration.get(event_id=event_id,user_id=user_id)
 
         registration_obj.is_del = 1