|
@@ -328,19 +328,32 @@ async def update_event(
|
|
if remark.strip() != '':
|
|
if remark.strip() != '':
|
|
class_obj.remark = remark
|
|
class_obj.remark = remark
|
|
|
|
|
|
- class_date_obj = await Class_date.get(class_list_id=id)
|
|
|
|
|
|
+ try :
|
|
|
|
+ class_date_obj = await Class_date.get(class_list_id=id)
|
|
|
|
|
|
- if registration_start != datetime.now():
|
|
|
|
- class_date_obj.registration_start = registration_start
|
|
|
|
|
|
+ if registration_start != datetime.now():
|
|
|
|
+ class_date_obj.registration_start = registration_start
|
|
|
|
|
|
- if registration_end != datetime.now():
|
|
|
|
- class_date_obj.registration_end = registration_end
|
|
|
|
|
|
+ if registration_end != datetime.now():
|
|
|
|
+ class_date_obj.registration_end = registration_end
|
|
|
|
+
|
|
|
|
+ if number_limit != 0:
|
|
|
|
+ class_date_obj.number_limit = number_limit
|
|
|
|
+
|
|
|
|
+ await class_date_obj.save()
|
|
|
|
+
|
|
|
|
+ except:
|
|
|
|
+ await Class_date.create(
|
|
|
|
+ class_list_id = id,
|
|
|
|
+ registration_start = registration_start,
|
|
|
|
+ registration_end = registration_end,
|
|
|
|
+ number_limit = number_limit,
|
|
|
|
+ amount_left = number_limit
|
|
|
|
+ )
|
|
|
|
|
|
- if number_limit != 0:
|
|
|
|
- class_date_obj.number_limit = number_limit
|
|
|
|
|
|
|
|
await class_obj.save()
|
|
await class_obj.save()
|
|
- await class_date_obj.save()
|
|
|
|
|
|
+
|
|
|
|
|
|
return {"msg": "success", "code": 200}
|
|
return {"msg": "success", "code": 200}
|
|
except Exception as e:
|
|
except Exception as e:
|
|
@@ -411,6 +424,52 @@ async def delete(id: int):
|
|
|
|
|
|
return {"msg": "success", "code": 200}
|
|
return {"msg": "success", "code": 200}
|
|
|
|
|
|
|
|
+@classes.get("/get_class_state")
|
|
|
|
+async def check_date_state(
|
|
|
|
+ class_name_id : Optional[int] = None,
|
|
|
|
+ class_event_id : Optional[int] = None
|
|
|
|
+):
|
|
|
|
+ if class_name_id:
|
|
|
|
+ class_list = await Class_list.filter(name_id=class_name_id).all()
|
|
|
|
+ elif class_event_id:
|
|
|
|
+ class_list = await Class_list.filter(id=class_event_id).all()
|
|
|
|
+ else:
|
|
|
|
+ return {"msg": 'please input ID', "code": 500}
|
|
|
|
+
|
|
|
|
+ result = {"reg": "尚未開放報名", "start_class":"課程尚未開始"}
|
|
|
|
+ class_check = True
|
|
|
|
+ reg_check = True
|
|
|
|
+ try:
|
|
|
|
+ for class_obj in class_list:
|
|
|
|
+ if class_check:
|
|
|
|
+ try:
|
|
|
|
+ if class_obj.start_time.replace(tzinfo=None) <= datetime.now() and class_obj.end_time.replace(tzinfo=None) >= datetime.now():
|
|
|
|
+ result["start_class"] = "開課中"
|
|
|
|
+ class_check = False
|
|
|
|
+ elif class_obj.end_time.replace(tzinfo=None) < datetime.now():
|
|
|
|
+ result["start_class"] = "課程已結束"
|
|
|
|
+ except Exception as e:
|
|
|
|
+ result["start_class"] = "尚未確認開課時間"
|
|
|
|
+
|
|
|
|
+ if reg_check:
|
|
|
|
+ try:
|
|
|
|
+ class_date_obj = await Class_date.get(class_list_id=class_obj.id)
|
|
|
|
+ if class_date_obj.registration_start.replace(tzinfo=None) <= datetime.now() and class_date_obj.registration_end.replace(tzinfo=None) >= datetime.now() :
|
|
|
|
+ if class_date_obj.amount_left == 0:
|
|
|
|
+ result["reg"] = "報名已額滿"
|
|
|
|
+ else:
|
|
|
|
+ result["reg"] = "開放報名中"
|
|
|
|
+
|
|
|
|
+ reg_check = False
|
|
|
|
+ elif class_date_obj.registration_end.replace(tzinfo=None) < datetime.now():
|
|
|
|
+ result["reg"] = "報名已結束"
|
|
|
|
+ except Exception as e:
|
|
|
|
+ result["reg"] = "尚未確認報名時間"
|
|
|
|
+
|
|
|
|
+ return {"msg": "success", "code": 200, "result": result}
|
|
|
|
+ except Exception as e:
|
|
|
|
+ return {"msg": str(e), "code": 500}
|
|
|
|
+
|
|
@classes.get("/get_event")
|
|
@classes.get("/get_event")
|
|
async def search_event(
|
|
async def search_event(
|
|
class_name_id: Optional[int] = None,
|
|
class_name_id: Optional[int] = None,
|
|
@@ -431,6 +490,7 @@ async def search_event(
|
|
|
|
|
|
try:
|
|
try:
|
|
class_date_obj = await Class_date.get(class_list_id=class_obj.id)
|
|
class_date_obj = await Class_date.get(class_list_id=class_obj.id)
|
|
|
|
+ state = await check_date_state(class_event_id=class_obj.id)
|
|
class_data = {
|
|
class_data = {
|
|
"class_name" : class_name,
|
|
"class_name" : class_name,
|
|
"event_id": class_obj.id,
|
|
"event_id": class_obj.id,
|
|
@@ -450,11 +510,12 @@ async def search_event(
|
|
"registration_end": class_date_obj.registration_end,
|
|
"registration_end": class_date_obj.registration_end,
|
|
"number_limit": class_date_obj.number_limit,
|
|
"number_limit": class_date_obj.number_limit,
|
|
"amount_left": class_date_obj.amount_left,
|
|
"amount_left": class_date_obj.amount_left,
|
|
- "remark": class_obj.remark
|
|
|
|
|
|
+ "remark": class_obj.remark,
|
|
|
|
+ "state": state["result"]
|
|
}
|
|
}
|
|
classes.append(class_data)
|
|
classes.append(class_data)
|
|
except:
|
|
except:
|
|
-
|
|
|
|
|
|
+ state = await check_date_state(class_event_id=class_obj.id)
|
|
class_data = {
|
|
class_data = {
|
|
"class_name" : class_name,
|
|
"class_name" : class_name,
|
|
"event_id": class_obj.id,
|
|
"event_id": class_obj.id,
|
|
@@ -470,7 +531,8 @@ async def search_event(
|
|
"people": class_obj.people,
|
|
"people": class_obj.people,
|
|
"fee_method": class_obj.fee_method,
|
|
"fee_method": class_obj.fee_method,
|
|
"registration_way": class_obj.registration_way,
|
|
"registration_way": class_obj.registration_way,
|
|
- "remark": class_obj.remark
|
|
|
|
|
|
+ "remark": class_obj.remark,
|
|
|
|
+ "state": state["result"]
|
|
}
|
|
}
|
|
classes.append(class_data)
|
|
classes.append(class_data)
|
|
|
|
|
|
@@ -558,6 +620,7 @@ async def get_class_name(
|
|
school_obj = await Schools.get(id=class_name_obj.school_id)
|
|
school_obj = await Schools.get(id=class_name_obj.school_id)
|
|
school_name = school_obj.name
|
|
school_name = school_obj.name
|
|
if not group_id or class_name_obj.group_id==group_id:
|
|
if not group_id or class_name_obj.group_id==group_id:
|
|
|
|
+ state = await check_date_state(class_name_id=class_name_obj.id)
|
|
class_data = {
|
|
class_data = {
|
|
"class_name_id": class_name_obj.id,
|
|
"class_name_id": class_name_obj.id,
|
|
"name": class_name_obj.name,
|
|
"name": class_name_obj.name,
|
|
@@ -567,7 +630,8 @@ async def get_class_name(
|
|
"organizer": class_name_obj.organizer,
|
|
"organizer": class_name_obj.organizer,
|
|
"group_id": class_name_obj.group_id,
|
|
"group_id": class_name_obj.group_id,
|
|
"cover_img": class_name_obj.cover_img,
|
|
"cover_img": class_name_obj.cover_img,
|
|
- "group_sort":class_name_obj.group_sort
|
|
|
|
|
|
+ "group_sort":class_name_obj.group_sort,
|
|
|
|
+ "state": state["result"]
|
|
}
|
|
}
|
|
if page_num and page_amount:
|
|
if page_num and page_amount:
|
|
if count < page_num*page_amount and count >= (page_num-1)*page_amount :
|
|
if count < page_num*page_amount and count >= (page_num-1)*page_amount :
|
|
@@ -616,6 +680,7 @@ async def search_class_like(keyword: str):
|
|
for class_obj in class_list:
|
|
for class_obj in class_list:
|
|
class_name = await Class_name.get(id=class_obj.name_id)
|
|
class_name = await Class_name.get(id=class_obj.name_id)
|
|
school_obj = await Schools.get(id=class_name.school_id)
|
|
school_obj = await Schools.get(id=class_name.school_id)
|
|
|
|
+
|
|
class_data = {
|
|
class_data = {
|
|
"msg": "success",
|
|
"msg": "success",
|
|
"code": 200,
|
|
"code": 200,
|