Bläddra i källkod

更新 'app/api/classes.py'

miacheng913 1 år sedan
förälder
incheckning
d39c1ac71f
1 ändrade filer med 204 tillägg och 203 borttagningar
  1. 204 203
      app/api/classes.py

+ 204 - 203
app/api/classes.py

@@ -5,7 +5,7 @@ from random import randint
 import uuid
 from fastapi.security import OAuth2PasswordRequestForm
 from app.models.models import User
-from app.models.models import Class_list,Schools,Class_detail,Class_name,Registration
+from app.models.models import Class_list,Schools,Class_detail,Class_name,Registration,School_group
 from app.api import deps
 from sqlalchemy.orm import Session
 from typing import Any, Dict
@@ -28,44 +28,33 @@ IMAGEDIR_short = "assets/"
 
 @classes.post("/insert_school")
 async def insert_school(
-    id: int = Form(default=0),
-    name: str = Form(default=''),
-    longitude: str = Form(default=''),
-    latitude: str = Form(default='')
+    location_name: str = Form(default=''),
+    Lng: str = Form(default=''),
+    Lat: str = Form(default=''),
+    group_id : int = Form(default=1),
+    address : str = Form(default='')
 ):
     try:
         new_school = await Schools.create(
-            id=id,
-            name=name,
-            longitude=longitude,
-            latitude=latitude
+            name=location_name,
+            longitude=Lng,
+            latitude=Lat,
+            group_id = group_id,
+            address = address
         )
         
-        return {"msg": "success", "code": 200, "class_id": new_school.id}
+        return {"msg": "success", "code": 200, "location_id": new_school.id}
     except Exception as e:
         return {"msg": str(e), "code": 500}
 
-@classes.post("/insert_class")
-async def insert_class(
-    id: int = Form(default=0),
+@classes.post("/insert_class_name")
+async def insert_class_name(
     name: str = Form(default=''),
     school_id: int = Form(default=1),
     category: str = Form(default=''),
     introduction: str = Form(default=''),
     organizer: str = Form(default=''),
-    cover_img_file:UploadFile = File(default=''),
-    event: str = Form(default=''),
-    start_time: datetime = Form(default=datetime.now()),
-    end_time: datetime = Form(default=datetime.now()),
-    contact: str = Form(default=''),
-    lecturer: str = Form(default=''),
-    location: str = Form(default=''),
-    content: str = Form(default=''),
-    URL: str = Form(default=''), 
-    people : str = Form(default=''),
-    fee_method: str = Form(default=''),
-    registration_way: str = Form(default=''),
-    remark : str = Form(default='')
+    cover_img_file:UploadFile = File(default='')
 ):    
     try:
         cover_img = ''
@@ -76,54 +65,23 @@ async def insert_class(
             with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
                 f.write(contents)
         
-            cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
-        else:
-            cover_img = ''
-            
-        
-#        class_obj = '' 
-#        class_obj = await Class_name.get(name=name)
-#        if class_obj != '':
-#            return {"msg": "此課程名稱已被使用", "code": 500}
-        
-            
+            cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"        
 
-        new_class_name = await Class_name.get_or_create(
+        new_class_name = await Class_name.create(
             name=name,
-            defaults={
-              'school_id': school_id,
-              'category': category,
-              'introduction': introduction,
-              'organizer': organizer,
-              'cover_img': cover_img
-            }
+            school_id=school_id,
+            category=category,
+            introduction=introduction,
+            organizer=organizer,
+            cover_img=cover_img
         )
 
-        class_obj = await Class_name.get(name=name)
-
-        new_class = await Class_list.create(
-            id=id,
-            name_id=class_obj.id,
-            event =event ,
-            start_time=start_time,
-            end_time=end_time,
-            contact=contact,
-            lecturer=lecturer,
-            location=location,
-            content=content,
-            URL=URL,
-            people=people,
-            fee_method=fee_method,
-            registration_way=registration_way,
-            remark=remark
-        )
-        return {"msg": "success", "code": 200, "class_id": new_class.id}
+        return {"msg": "success", "code": 200, "new_class_name_id": new_class_name.id}
     except Exception as e:
         return {"msg": str(e), "code": 500}
 
 @classes.post("/insert_event")
 async def insert_event(
-    id: int = Form(default=0),
     name_id: int = Form(default=''),
     event: str = Form(default=''),
     start_time: datetime = Form(default=datetime.now()),
@@ -140,7 +98,6 @@ async def insert_event(
 ):    
     try:
         new_class = await Class_list.create(
-            id=id,
             name_id=name_id,
             event =event,
             start_time=start_time,
@@ -158,10 +115,63 @@ async def insert_event(
         return {"msg": "success", "code": 200, "class_id": new_class.id}
     except Exception as e:
         return {"msg": str(e), "code": 500}
+    
+@classes.post("/insert_session")
+async def insert_session(
+    class_event_id : int = Form(default=0),
+    start_time: datetime = Form(default=datetime.now()),
+    end_time: datetime = Form(default=datetime.now()),
+    sessions: str = Form(default=0),
+    content : str = Form(default='')
+):
+    try:
+        new_session = await Class_detail.create(
+            class_list_id=class_event_id,
+            start_time=start_time,
+            end_time=end_time,
+            sessions=sessions,
+            content = content
+        )
+        
+        return {"msg": "success", "code": 200, "new_session_id": new_session.id}
+    except Exception as e:
+        return {"msg": str(e), "code": 500}
+
+@classes.post("/update_school")
+async def update_school(
+    location_id: int = Form(default=0),
+    location_name: str = Form(default=''),
+    Lng: str = Form(default=''),
+    Lat: str = Form(default=''),
+    group_id : int = Form(default=1),
+    address : str = Form(default='')
+):
+    try:
+        school = await Schools.get(id=location_id)
+
+        if location_name.strip() != '':
+            school.name = location_name
+
+        if Lng != '':
+            school.longitude = Lng
+        
+        if  Lat.strip() != '':
+            school.latitude =  Lat
+
+        if group_id != 1 :
+            school.group_id = group_id
+
+        if  address.strip() != '':
+            school.address =  address
+
+        await school.save()
+        return {"msg": "success", "code": 200}
+    except Exception as e:
+        return {"msg": str(e), "code": 500}
 
 @classes.post("/update_class_name")
 async def update_class_name(
-    id: int = Form(default=0),
+    class_name_id: int = Form(default=0),
     name: str = Form(default=''),
     school_id: int = Form(default=''),
     category: str = Form(default=''),
@@ -170,7 +180,7 @@ async def update_class_name(
     cover_img_file:UploadFile = File(default='')
 ):
     try:
-        class_name = await Class_name.get(id=id)
+        class_name = await Class_name.get(id=class_name_id)
 
         if name.strip() != '':
             class_name.name = name
@@ -201,21 +211,15 @@ async def update_class_name(
     except Exception as e:
         return {"msg": str(e), "code": 500}
     
-@classes.post("/update_class")
+@classes.post("/update_event")
 async def update_class(
     id: int = Form(default=0),
-    name: str = Form(default=''),
-    school_id: int = Form(default=''),
-    category: str = Form(default=''),
-    introduction: str = Form(default=''),
-    organizer: str = Form(default=''),
-    cover_img_file:UploadFile = File(default=''),
+    name_id: str = Form(default=0),
     event: str = Form(default=''),
     start_time: datetime = Form(default=datetime.now()),
     end_time: datetime = Form(default=datetime.now()),
     contact: str = Form(default=''),
     lecturer: str = Form(default=''),
-    location: str = Form(default=''),
     content: str = Form(default=''),
     URL: str = Form(default=''), 
     people : str = Form(default=''),
@@ -225,30 +229,9 @@ async def update_class(
 ):
     try:
         class_obj = await Class_list.get(id=id)
-        class_name = await Class_name.get(id=class_obj.name_id)
-
-        if name != '':
-            class_name.name = name
-
-        if school_id != '':
-            class_name.school_id = school_id
-
-        if category != '':
-            class_name.category = category
-        
-        if introduction != '':
-            class_name.introduction = introduction
-
-        if organizer != '':
-            class_name.organizer = organizer
-        
-        if cover_img_file != '':
-            contents = await cover_img_file.read()
 
-            with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
-                f.write(contents)
-
-            class_name.cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
+        if name_id != 0:
+            class_obj.name_id = name_id
 
         if event.strip() != '':
             class_obj.event = event
@@ -259,9 +242,6 @@ async def update_class(
         if end_time:
             class_obj.end_time = end_time
 
-        if location.strip() != '':
-            class_obj.location = location
-
         if lecturer.strip() != '':
             class_obj.lecturer = lecturer
 
@@ -287,7 +267,38 @@ async def update_class(
             class_obj.remark = remark
         
         await class_obj.save()
-        await class_name.save()
+        return {"msg": "success", "code": 200}
+    except Exception as e:
+        return {"msg": str(e), "code": 500}
+
+@classes.post("/update_session")
+async def update_session(
+    session_id : int = Form(default=0),
+    class_event_id : int = Form(default=0),
+    start_time: datetime = Form(default=datetime.now()),
+    end_time: datetime = Form(default=datetime.now()),
+    sessions: str = Form(default=0),
+    content : str = Form(default='')
+):
+    try:
+        class_session_obj = await Class_detail.get(id=session_id)
+        
+        if class_event_id != 0:
+            class_session_obj.class_list_id = class_event_id
+
+        if start_time != '':
+            class_session_obj.start_time = start_time
+
+        if end_time != '':
+            class_session_obj.end_time = end_time
+        
+        if sessions.strip() != '':
+            class_session_obj.sessions = sessions
+
+        if content.strip() != '':
+            class_session_obj.content = content
+        
+        await class_session_obj.save()
         return {"msg": "success", "code": 200}
     except Exception as e:
         return {"msg": str(e), "code": 500}
@@ -305,23 +316,18 @@ async def delete(id: int):
         await Class_name.filter(id=id).delete()
         return {"msg": "success", "code": 200}
 
-
-@classes.get("/search_class")
-async def search_class(id: int):
+@classes.get("/get_event")
+async def search_event(name_id: int = 0):
     try:
-        class_obj = await Class_list.get(id=id)
-        class_name = await Class_name.get(id=class_obj.name_id)
-        school_obj = await Schools.get(id=class_name.school_id)
-        return {
+        class_list = await Class_list.filter(name_id=name_id).all()
+
+        classes = []
+        for class_obj in class_list:
+            class_data = {
             "msg": "success",
             "code": 200,
-            "class_id": class_obj.id,
-            "name": class_name.name,
-            "school":school_obj.name,
-            "category": class_name.category,
-            "introduction": class_name.introduction,
-            "organizer": class_name.organizer,
-            "cover_img": class_name.cover_img,
+            "event_id": class_obj.id,
+            "name_id": class_obj.name_id,
             "event": class_obj.event,
             "start_time": class_obj.start_time,
             "end_time": class_obj.end_time,
@@ -335,9 +341,12 @@ async def search_class(id: int):
             "registration_way": class_obj.registration_way,
             "remark": class_obj.remark
         }
+            classes.append(class_data)
+
+        return {"msg": "success", "code": 200, "classes": classes}
     except Exception as e:
         return {"msg": str(e), "code": 500}
-
+    
 @classes.get("/get_school")
 async def get_school():
     try:
@@ -345,81 +354,100 @@ async def get_school():
         schools = []
         for school_obj in school_list:
             school_data = {
-                "school_id": school_obj.id,
-                "name": school_obj.name,
-                "longitude": school_obj.longitude,
-                "latitude": school_obj.latitude,
+                "location_id": school_obj.id,
+                "location_name": school_obj.name,
+                "Lng": school_obj.longitude,
+                "Lat": school_obj.latitude,
+                "group_id": school_obj.group_id,
+                "address": school_obj.address
             }
             schools.append(school_data)
 
         return {"msg": "success", "code": 200, "schools": schools}
     except Exception as e:
         return {"msg": str(e), "code": 500}
+    
+@classes.get("/get_school_group")
+async def get_school_group():
+    try:
+        school_group_list = await School_group.all()
+        school_groups = []
+        for school_obj in school_group_list:
+            school_data = {
+                "group_id": school_obj.id,
+                "group_name": school_obj.group_name
+            }
+            school_groups.append(school_data)
+
+        return {"msg": "success", "code": 200, "school_groups": school_groups}
+    except Exception as e:
+        return {"msg": str(e), "code": 500}
 
 @classes.get("/get_class_name")
-async def get_class_name():
+async def get_class_name(
+    school_id : int = 0
+):
     try:
-        class_name_list = await Class_name.all()
-        classes_name = []
-        for class_name_obj in class_name_list:
-            school_obj = await Schools.get(id=class_name_obj.school_id)
-            class_data = {
-            "msg": "success",
-            "code": 200,
-            "id": class_name_obj.id,
-            "name": class_name_obj.name,
-            "school":school_obj.name,
-            "category": class_name_obj.category,
-            "introduction": class_name_obj.introduction,
-            "organizer": class_name_obj.organizer,
-            "cover_img": class_name_obj.cover_img,
-        }
-            classes_name.append(class_data)
+        if school_id == 0:
+            class_name_list = await Class_name.all()
+            classes_name = []
+            for class_name_obj in class_name_list:
+                school_obj = await Schools.get(id=class_name_obj.school_id)
+                class_data = {
+                    "class_name_id": class_name_obj.id,
+                    "name": class_name_obj.name,
+                    "school":school_obj.name,
+                    "category": class_name_obj.category,
+                    "introduction": class_name_obj.introduction,
+                    "organizer": class_name_obj.organizer,
+                    "cover_img": class_name_obj.cover_img
+                }
+                classes_name.append(class_data)
+        else:
+            class_name_list = await Class_name.filter(school_id = school_id).all()
+            classes_name = []
+            for class_name_obj in class_name_list:
+                school_obj = await Schools.get(id=class_name_obj.school_id)
+                class_data = {
+                    "msg": "success",
+                    "code": 200,
+                    "class_name_id": class_name_obj.id,
+                    "name": class_name_obj.name,
+                    "school":school_obj.name,
+                    "category": class_name_obj.category,
+                    "introduction": class_name_obj.introduction,
+                    "organizer": class_name_obj.organizer,
+                    "cover_img": class_name_obj.cover_img
+                }
+                classes_name.append(class_data)
 
         return {"msg": "success", "code": 200, "classes": classes_name}
     except Exception as e:
         return {"msg": str(e), "code": 500}    
-
-
-@classes.get("/get_class")
-async def get_class():
+    
+@classes.get("/get_session")
+async def get_session(
+    event_id : int = 0
+):
     try:
-        class_list = await Class_list.all()
-        classes = []
-        for class_obj in class_list:
-            class_name = await Class_name.get(id=class_obj.name_id)
-            print(class_obj.name_id)
-            print(class_name.school_id)
-            school_obj = await Schools.get(id=class_name.school_id)
-            class_data = {
-            "msg": "success",
-            "code": 200,
-            "class_id": class_obj.id,
-            "name": class_name.name,
-            "school":school_obj.name,
-            "category": class_name.category,
-            "introduction": class_name.introduction,
-            "organizer": class_name.organizer,
-            "cover_img": class_name.cover_img,
-            "event": class_obj.event,
-            "start_time": class_obj.start_time,
-            "end_time": class_obj.end_time,
-            "location": class_obj.location,
-            "lecturer": class_obj.lecturer,
-            "contact": class_obj.contact,
-            "content": class_obj.content,
-            "URL": class_obj.URL,
-            "people": class_obj.people,
-            "fee_method": class_obj.fee_method,
-            "registration_way": class_obj.registration_way,
-            "remark": class_obj.remark
+        class_session_list = await Class_detail.filter(class_list_id=event_id).all()
+        
+        classe_sessions = []
+        for class_session_obj in class_session_list:
+            class_session_data = {
+            "session_id": class_session_obj.id,
+            "class_event_id": class_session_obj.class_list_id,
+            "start_time": class_session_obj.start_time,
+            "end_time": class_session_obj.end_time,
+            "sessions": class_session_obj.sessions,
+            "content": class_session_obj.content
         }
-            classes.append(class_data)
+            classe_sessions.append(class_session_data)
 
-        return {"msg": "success", "code": 200, "classes": classes}
+        return {"msg": "success", "code": 200, "classe_sessions": classe_sessions}
     except Exception as e:
         return {"msg": str(e), "code": 500}
-    
+
 @classes.get("/search_class_like")
 async def search_class_like(keyword: str):
     try:
@@ -489,31 +517,4 @@ async def search_class_like(keyword: str):
 
         return {"msg": "success", "code": 200, "classes": classes}
     except Exception as e:
-        return {"msg": str(e), "code": 500}
-
-
-
-
-@classes.post("/upload/")
-async def create_upload_file(file: UploadFile = File(...)):
- 
-    #file.filename = f"{uuid.uuid4()}.jpeg"
-    contents = await file.read()
- 
-    #save the file
-    with open(f"{IMAGEDIR}{file.filename}", "wb") as f:
-        f.write(contents)
- 
-    return {"filename": file.filename}
- #"/var/www/ntcri/app/api/images/test.jpeg"
- 
-
-async def read_image_file():
- 
-    # get random file from the image directory
-    files = os.listdir(IMAGEDIR)
-    random_index = randint(0, len(files) - 1)
- 
-    path = f"{IMAGEDIR}{files[random_index]}"
-     
-    return FileResponse(path)
+        return {"msg": str(e), "code": 500}