Mia Cheng 1 year ago
parent
commit
081cde04ed
4 changed files with 63 additions and 27 deletions
  1. 2 10
      app/api/classes.py
  2. 36 9
      app/api/registration.py
  3. 10 7
      app/api/users.py
  4. 15 1
      app/models/models.py

+ 2 - 10
app/api/classes.py

@@ -1124,19 +1124,11 @@ async def get_online_courese(
         if page_num and page_amount:
             online_courese_list = online_courese_list.offset((page_num-1)*page_amount).limit(page_amount)
 
-        online_courese_list = await online_courese_list.all().order_by("-id")
+        online_courese_list = await online_courese_list.all().order_by("id")
         
         online_coureses = []
         for online_coures_obj in online_courese_list:
-            online_coures_data = {
-                "id": online_coures_obj.id,
-                "title": online_coures_obj.title,
-                "category":online_coures_obj.category,
-                "create_time": online_coures_obj.create_time,
-                "click_time": online_coures_obj.click_time,
-                "content": online_coures_obj.content,
-                "video_url":online_coures_obj.video_url
-            }
+            online_coures_data = online_coures_obj.show_data()
             online_coureses.append(online_coures_data)
 
         return {"msg": "success", "code": 200, "total_num" : count,"online_coures": online_coureses}

+ 36 - 9
app/api/registration.py

@@ -153,7 +153,7 @@ async def input_information(
     phone : str = Form(default=''),
     address : str = Form(default=''),
     user_id = Depends(check_token),
-    position: str = Form(...),
+    position: str = Form(default='[1]'),
 ):
     try :
         if not user_id :
@@ -169,7 +169,7 @@ async def input_information(
             d["其他"] = 1
         print(d)
 
-        inform = await User_information.get_or_create(
+        infor,created = await User_information.get_or_create(
         user_id=user_id,
             defaults={
                 'name': name,
@@ -177,18 +177,45 @@ async def input_information(
                 'gender': gender,
                 'phone': phone,
                 'address': address,
-                'position': d,
+                'position': d
             }
         )
 
-        if user_name != '':
-            user = await User.get(id = user_id)
-            user.username = user_name 
+        if not created:
+
+            if name != '':
+                infor.name = name
+
+            if birthday != datetime.now().date():
+                infor.birthday = birthday
+
+            if gender != '':
+                infor.gender = gender
+
+            if phone != '':
+                infor.phone = phone
+
+            if address != '':
+                infor.address = address
+
+            if user_name != '':
+                global user 
+                user = await User.get(id = user_id)
+                user.username = user_name
+
+            if position != '':
+                infor.position = d
+            
+            await infor.save()
             await user.save()
+
+            msg = "Update success"
+
+        else :
+            msg = "input success"
             
-        
 
-        return {"msg": "success", "code": 200, "user_inform_id": inform[0].id,"is_exist":not inform[1]}
+        return {"msg": "success", "code": 200, "user_inform_id": infor.id,"is_exist":not created}
     except Exception as e:
         return {"msg": str(e), "code": 500}
     
@@ -201,7 +228,7 @@ async def update_information(
     phone : str = Form(default=''),
     address : str = Form(default=''),
     user_id = Depends(check_token),
-    position : str = Form(default=''),
+    position : str = Form(default='[1]'),
 ):
     try :
         if not user_id :

+ 10 - 7
app/api/users.py

@@ -39,7 +39,8 @@ async def query_user(user_id: str):
     :param user_id: E-Mail of the user
     :return: None or the user object
     """
-    result = await User.filter(email=user_id,is_active=1).first()
+    # result = await User.filter(email=user_id,is_active=1).first()
+    result = await User.filter(email=user_id).first()
 
     if not result:
         print('無此筆資料')
@@ -105,7 +106,7 @@ async def login(username: str = Form(default=''), password: str = Form(default='
     )
     user = await User.filter(email=email).first() # 確認信箱是否已存在
     if not user:
-        u = await User.create(username=username, password=password, email=email,token=access_token, is_superuser=0,points=0)
+        u = await User.create(username=username, password=password, email=email,token=access_token, is_superuser=0, points=0,is_active =1)
         create_user = u
     # if user:
     #     print('已用相同信箱註冊過,再開一個GMAIL帳號')
@@ -144,12 +145,12 @@ async def logout():
     return {"msg":"logout success","code":200}
 
 @users.post("/add") # 寄認證信
-async def add(username: str = Form(default=''), password: str = Form(default=''), email: str = Form(default=''), re_password: str = Form(default=''), position: str = Form(default='')):
+async def add(username: str = Form(default=''), password: str = Form(default=''), email: str = Form(default=''), re_password: str = Form(default='')):
     if username and password and email:
         user_email = await query_user(email)
         user_username = await query_user_username(username)
 
-        if user_email and user_username:
+        if user_email or user_username:
             return {"msg":"該信箱或使用者名稱已存在","code":403}
         # elif user_username:
         #     return {"msg":"該使用者名稱已存在","code":403}
@@ -159,12 +160,13 @@ async def add(username: str = Form(default=''), password: str = Form(default='')
                 #     data={'sub': email}
                 # )
                 print('前',settings.SECRET_KEY)
-                access_token = jwt.encode({'email':email}, settings.SECRET_KEY, algorithm="HS256")
+                expiration_time = datetime.utcnow() + timedelta(hours=0.5)
+                access_token = jwt.encode({'email':email,'exp':expiration_time}, settings.SECRET_KEY, algorithm="HS256")
                 hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
-                u = await User.create(username=username, password=hashed_password, email=email,is_superuser=0,token='',points=0,is_active=0)
+                u = await User.create(username=username, password=hashed_password, email=email,is_superuser=0,token=access_token,points=0,is_active=1)
                 if u:
                     # message = '註冊認證'
-                    message = f"請點擊以下連結完成註冊流程:\n\nhttp://127.0.0.1:8000/api/verify?token={access_token}"
+                    message = f"請點擊以下連結完成註冊流程:\n\nhttps://cmm.ai:8088/api/verify?token={access_token}"
                     subject = '註冊信'
                     print(message)
                     send_email(email,access_token,subject,message)
@@ -252,6 +254,7 @@ def send_email(
     if settings.SMTP_PASSWORD:
         smtp_options["password"] = settings.SMTP_PASSWORD
     response = message.send(to=email_to, render=environment, smtp=smtp_options)
+    print('RResponse',response)
     return {"message":f"send email result: {response}"}
     # logging.info(f"send email result: {response}")
     # email_content = MIMEText(message)

+ 15 - 1
app/models/models.py

@@ -49,7 +49,7 @@ class Schools(Model):
             "Lat": self.latitude,
             "address": self.address,
             "update_time":self.update_time,
-            "introduction":self.introduction,
+            "school_introduction":self.introduction,
             "email":self.email,
             "phone":self.phone
         }
@@ -193,6 +193,20 @@ class Online_course(Model):
     content = fields.TextField(description="發布時間", null=True)
     video_url = fields.TextField(description="影片連結")
     group_id = fields.IntField(description="學群", null=True)
+    cover_img = fields.TextField(description="封面圖片", null=True)
+
+    def show_data(self):
+        return {
+            "id" : self.id,
+            "title": self.title,
+            "category": self.category,
+            "create_time": self.create_time,
+            "click_time": self.click_time,
+            "content": self.content,
+            "video_url": self.video_url,
+            "group_id": self.group_id,
+            "cover_img": self.cover_img
+        }
 
 class Guidance_group(Model):
     id = fields.IntField(pk=True)