Ver Fonte

課程創建使用者

Mia Cheng há 1 ano atrás
pai
commit
0a56e7cb96
2 ficheiros alterados com 69 adições e 12 exclusões
  1. 60 9
      app/api/classes.py
  2. 9 3
      app/models/models.py

+ 60 - 9
app/api/classes.py

@@ -40,6 +40,18 @@ async def check_token(access_token: str):
 IMAGEDIR = "/var/www/ntcri/assets/"
 IMAGEDIR_short = "assets/"
 
+async def check_token(access_token: str):
+
+    result = await User.filter(token=access_token).first()
+    
+    if not result:
+        print("no access")
+        return None
+    
+    user_id = result.id
+
+    return user_id
+
 async def update_location_time(location_id: int):
     if location_id:
         school = await Schools.get(id=location_id)
@@ -55,9 +67,14 @@ async def insert_school(
     address : str = Form(default=''),
     introduction : str = Form(default=''),
     email : str = Form(default=''),
-    phone : str = Form(default='')
+    phone : str = Form(default=''),
+    access_token:str = Form(default=None)
 ):
     try:
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+
         new_school = await Schools.create(
             name=location_name,
             longitude=Lng,
@@ -66,7 +83,8 @@ async def insert_school(
             update_time = datetime.now(),
             introduction = introduction ,
             email=  email,
-            phone = phone
+            phone = phone,
+            create_user_id = user_id
         )
         
         return {"msg": "success", "code": 200, "location_id": new_school.id}
@@ -86,7 +104,8 @@ async def insert_class_name(
     recommend: int = Form(default=0),
     special_class_list_name : str = Form(default=None),
     is_inner : int = Form(default=1),
-    is_check : int = Form(default=1)
+    is_check : int = Form(default=1),
+    access_token:str = Form(default=None)
 ):    
     try:
         cover_img = ''
@@ -99,6 +118,10 @@ async def insert_class_name(
         
             cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"        
 
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+
         new_class_name = await Class_name.create(
             name=name,
             school_id=location_id,
@@ -111,7 +134,8 @@ async def insert_class_name(
             recommend = recommend,
             special_class_list_name = special_class_list_name,
             is_inner = is_inner,
-            is_check = is_check
+            is_check = is_check,
+            create_user_id = user_id
         )
         update_location_time(location_id= location_id)
         return {"msg": "success", "code": 200, "new_class_name_id": new_class_name.id}
@@ -136,10 +160,15 @@ async def insert_event(
     registration_end:  datetime = Form(default=datetime.now()),
     number_limit: int = Form(default=0),
     remark : str = Form(default='詳細 請至觀看課程資訊 查看'),
-    ATM_address: str = Form(default='')
+    ATM_address: str = Form(default=''),
+    access_token:str = Form(default=None)
 ):    
     try:
 
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+
         # 檢查是否有該課程
         class_name_list = await Class_name.filter(id=name_id).all()
         if class_name_list == []:
@@ -159,7 +188,8 @@ async def insert_event(
             fee_method=fee_method,
             registration_way=registration_way,
             remark=remark,
-            ATM_address=ATM_address
+            ATM_address=ATM_address,
+            create_user_id = user_id
         )
         try:
             await Class_date.create(
@@ -583,7 +613,8 @@ async def check_date_state(
 @classes.get("/get_event")
 async def search_event(
     class_name_id: Optional[int] = None,
-    event_id : Optional[int] = None
+    event_id : Optional[int] = None,
+    access_token:  Optional[str] = None
 ):
     try:
         try :
@@ -602,6 +633,12 @@ async def search_event(
         else :
             return {"msg": "please input class_name_id or event_id", "code": 200}
         
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+            if user_id:
+                Q_word = Q_word & Q(create_user_id = user_id)
+        
         model_fields =[]
         state = {}
 
@@ -676,7 +713,8 @@ async def get_school(
     location_keyword : Optional[str] = None, 
     page_num : Optional[int] = None,
     page_amount : Optional[int] = None,
-    category :  Optional[str] = None
+    category :  Optional[str] = None,
+    access_token:  Optional[str] = None
 ):
     try:
         school_list = Schools.all()
@@ -690,6 +728,12 @@ async def get_school(
         if location_keyword :
             school_list = school_list.filter(Q(address__icontains=location_keyword)).all()
 
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+            if user_id:
+                school_list = school_list.filter(Q(create_user_id = user_id)).all()
+
         Q_word = Q()
         if category:
             for tmp_word in category.split(",") :
@@ -755,7 +799,8 @@ async def get_class_name(
     page_amount : Optional[int] = None,
     recommend : Optional[int] = None,
     is_inner : Optional[int] = None,
-    is_check : Optional[int] = None
+    is_check : Optional[int] = None,
+    access_token:  Optional[str] = None
 ):
     try:
         class_name_list = Class_name.all()
@@ -786,6 +831,12 @@ async def get_class_name(
         if is_check!=None:
             Q_word = Q_word & Q(is_check = is_check)
 
+        user_id = None
+        if access_token:
+            user_id = await check_token(access_token)
+            if user_id:
+                Q_word = Q_word & Q(create_user_id = user_id)
+
         class_name_list = class_name_list.filter(Q_word).all()
 
         if exclude_word:        

+ 9 - 3
app/models/models.py

@@ -40,6 +40,7 @@ class Schools(Model):
     introduction = fields.TextField(description="簡介", null=True)
     email = fields.TextField(description="email", null=True)
     phone = fields.TextField(description="電話", null=True)
+    create_user_id = fields.IntField(description="創建使用者ID", null=True)
 
     def show_data(self):
         return {
@@ -51,7 +52,8 @@ class Schools(Model):
             "update_time":self.update_time,
             "school_introduction":self.introduction,
             "email":self.email,
-            "phone":self.phone
+            "phone":self.phone,
+            "create_user_id" :self.create_user_id
         }
 
 class Group_name(Model):
@@ -72,6 +74,7 @@ class Class_name(Model):
     recommend = fields.IntField(description="是否在首頁")
     is_inner = fields.IntField(description="是否是內課")
     is_check = fields.IntField(description="是否確認")
+    create_user_id = fields.IntField(description="創建使用者ID", null=True)
 
     def show_data(self):
         return {
@@ -86,7 +89,8 @@ class Class_name(Model):
             "recommend" : self.recommend,
             "is_inner" : self.is_inner,
             "is_check" :self.is_check,
-            "special_class_list_name":self.special_class_list_name
+            "special_class_list_name":self.special_class_list_name,
+            "create_user_id" :self.create_user_id
         }
 
 
@@ -106,6 +110,7 @@ class Class_list(Model):
     registration_way = fields.CharField(max_length=255, description="報名方式", null=True)
     remark = fields.TextField(description="備註", null=True)
     ATM_address = fields.TextField(description="匯款帳號", null=True)
+    create_user_id = fields.IntField(description="創建使用者ID", null=True)
 
     def show_data(self):
         return {
@@ -123,7 +128,8 @@ class Class_list(Model):
             "fee_method": self.fee_method,
             "registration_way": self.registration_way,
             "remark": self.remark,
-            "ATM_address":self.ATM_address
+            "ATM_address":self.ATM_address,
+            "create_user_id" :self.create_user_id
         }