|
@@ -49,7 +49,7 @@ async def insert_school(
|
|
|
async def insert_class(
|
|
|
id: int = Form(default=0),
|
|
|
name: str = Form(default=''),
|
|
|
- school_id: int = Form(default=''),
|
|
|
+ school_id: int = Form(default=1),
|
|
|
category: str = Form(default=''),
|
|
|
introduction: str = Form(default=''),
|
|
|
organizer: str = Form(default=''),
|
|
@@ -68,27 +68,42 @@ async def insert_class(
|
|
|
remark : str = Form(default='')
|
|
|
):
|
|
|
try:
|
|
|
- contents = await cover_img_file.read()
|
|
|
+ cover_img = ''
|
|
|
+ if cover_img_file != '':
|
|
|
+ contents = await cover_img_file.read()
|
|
|
|
|
|
#save the file
|
|
|
- with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
|
|
|
- f.write(contents)
|
|
|
+ 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 = ''
|
|
|
+
|
|
|
|
|
|
- cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
|
|
|
+# class_obj = ''
|
|
|
+# class_obj = await Class_name.get(name=name)
|
|
|
+# if class_obj != '':
|
|
|
+# return {"msg": "此課程名稱已被使用", "code": 500}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- new_class_name = await Class_name.create(
|
|
|
- id=id,
|
|
|
+ new_class_name = await Class_name.get_or_create(
|
|
|
name=name,
|
|
|
- school_id =school_id ,
|
|
|
- category=category,
|
|
|
- introduction=introduction,
|
|
|
- organizer=organizer,
|
|
|
- cover_img=cover_img
|
|
|
+ defaults={
|
|
|
+ '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=new_class_name.id,
|
|
|
+ name_id=class_obj.id,
|
|
|
event =event ,
|
|
|
start_time=start_time,
|
|
|
end_time=end_time,
|
|
@@ -189,7 +204,12 @@ async def update_class_name(
|
|
|
@classes.post("/update_class")
|
|
|
async def update_class(
|
|
|
id: int = Form(default=0),
|
|
|
- name_id: int = Form(default=''),
|
|
|
+ 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=''),
|
|
|
event: str = Form(default=''),
|
|
|
start_time: datetime = Form(default=datetime.now()),
|
|
|
end_time: datetime = Form(default=datetime.now()),
|
|
@@ -205,9 +225,30 @@ 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 name_id != '':
|
|
|
- class_obj.name_id = name_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 event.strip() != '':
|
|
|
class_obj.event = event
|
|
@@ -246,6 +287,7 @@ 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}
|
|
@@ -381,28 +423,70 @@ async def get_class():
|
|
|
@classes.get("/search_class_like")
|
|
|
async def search_class_like(keyword: str):
|
|
|
try:
|
|
|
- class_list = await Class_list.filter(
|
|
|
- Q(lecturer__icontains=keyword)
|
|
|
- ).all()
|
|
|
+ class_list = await Class_list.filter(Q(lecturer__icontains=keyword)).all()
|
|
|
|
|
|
classes = []
|
|
|
for class_obj in class_list:
|
|
|
+ class_name = await Class_name.get(id=class_obj.name_id)
|
|
|
+ school_obj = await Schools.get(id=class_name.school_id)
|
|
|
class_data = {
|
|
|
- "class_id": class_obj.id,
|
|
|
- "name": class_obj.name,
|
|
|
- "start_time": class_obj.start_time,
|
|
|
- "end_time": class_obj.end_time,
|
|
|
- "location": class_obj.location,
|
|
|
- "lecturer": class_obj.lecturer,
|
|
|
- "organizer": class_obj.organizer,
|
|
|
- "contact": class_obj.contact,
|
|
|
- "introduction": class_obj.introduction,
|
|
|
- "content": class_obj.content,
|
|
|
- "cover_img": class_obj.cover_img
|
|
|
+ "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
|
|
|
|
|
|
}
|
|
|
classes.append(class_data)
|
|
|
|
|
|
+ class_name_list = await Class_name.filter(Q(name__icontains=keyword)).all()
|
|
|
+
|
|
|
+ for class_name in class_name_list:
|
|
|
+ class_list = await Class_list.filter(name_id=class_name.id).all()
|
|
|
+ for class_obj in class_list:
|
|
|
+ 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
|
|
|
+
|
|
|
+ }
|
|
|
+ classes.append(class_data)
|
|
|
+
|
|
|
return {"msg": "success", "code": 200, "classes": classes}
|
|
|
except Exception as e:
|
|
|
return {"msg": str(e), "code": 500}
|