|
@@ -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}
|