classes.py 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
  1. from fastapi import APIRouter, Form, Depends, HTTPException, File, UploadFile
  2. from typing import List,Optional
  3. from fastapi.responses import FileResponse
  4. from random import randint
  5. from fastapi.security import OAuth2PasswordRequestForm
  6. from app.models.models import User,Favorite_course
  7. from app.models.models import Class_list,Schools,Class_detail,Class_name,Registration,Group_name,Online_course
  8. from app.api import deps
  9. from sqlalchemy.orm import Session
  10. from typing import Any, Dict
  11. import secrets
  12. from fastapi_login.exceptions import InvalidCredentialsException
  13. from fastapi_login import LoginManager
  14. from datetime import timedelta,datetime
  15. from app.config import settings
  16. from pathlib import Path
  17. from jose import jwt
  18. from emails.template import JinjaTemplate
  19. from tortoise.queryset import Q
  20. from fastapi.responses import HTMLResponse
  21. import requests
  22. import json
  23. classes = APIRouter()
  24. IMAGEDIR = "/var/www/html/ntcri/assets/"
  25. IMAGEDIR_short = "assets/"
  26. async def update_location_time(location_id: int):
  27. if location_id:
  28. school = await Schools.get(id=location_id)
  29. school.update_time = datetime.now()
  30. await school.save()
  31. return {"msg": "success", "code": 200}
  32. @classes.post("/insert_school")
  33. async def insert_school(
  34. location_name: str = Form(default=''),
  35. Lng: str = Form(default=''),
  36. Lat: str = Form(default=''),
  37. address : str = Form(default=''),
  38. update_time : datetime = Form(default=datetime.now())
  39. ):
  40. try:
  41. new_school = await Schools.create(
  42. name=location_name,
  43. longitude=Lng,
  44. latitude=Lat,
  45. address = address,
  46. update_time = update_time
  47. )
  48. return {"msg": "success", "code": 200, "location_id": new_school.id}
  49. except Exception as e:
  50. return {"msg": str(e), "code": 500}
  51. @classes.post("/insert_class_name")
  52. async def insert_class_name(
  53. name: str = Form(default=''),
  54. location_id: int = Form(default=1),
  55. category: str = Form(default=''),
  56. introduction: str = Form(default=''),
  57. organizer: str = Form(default=''),
  58. cover_img_file:UploadFile = File(default=''),
  59. group_id : int = Form(default=1),
  60. group_sort :str = Form(default='')
  61. ):
  62. try:
  63. cover_img = ''
  64. if cover_img_file != '':
  65. contents = await cover_img_file.read()
  66. #save the file
  67. with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
  68. f.write(contents)
  69. cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
  70. new_class_name = await Class_name.create(
  71. name=name,
  72. school_id=location_id,
  73. category=category,
  74. introduction=introduction,
  75. organizer=organizer,
  76. cover_img=cover_img,
  77. group_id=group_id,
  78. group_sort=group_sort
  79. )
  80. update_location_time(location_id= location_id)
  81. return {"msg": "success", "code": 200, "new_class_name_id": new_class_name.id}
  82. except Exception as e:
  83. return {"msg": str(e), "code": 500}
  84. @classes.post("/insert_event")
  85. async def insert_event(
  86. name_id: int = Form(default=0),
  87. event: str = Form(default=''),
  88. start_time: datetime = Form(default=datetime.now()),
  89. end_time: datetime = Form(default=datetime.now()),
  90. contact: str = Form(default=''),
  91. lecturer: str = Form(default=''),
  92. location: str = Form(default=''),
  93. content: str = Form(default=''),
  94. URL: str = Form(default=''),
  95. people : str = Form(default=''),
  96. fee_method: str = Form(default=''),
  97. registration_way: str = Form(default=''),
  98. registration_day: str = Form(default=''),
  99. remark : str = Form(default='')
  100. ):
  101. try:
  102. # 檢查是否有該課程
  103. class_name_list = await Class_name.filter(id=name_id).all()
  104. if class_name_list == []:
  105. return {"msg": "沒有此課程", "code": 200}
  106. new_class = await Class_list.create(
  107. name_id=name_id,
  108. event =event,
  109. start_time=start_time,
  110. end_time=end_time,
  111. contact=contact,
  112. lecturer=lecturer,
  113. location=location,
  114. content=content,
  115. URL=URL,
  116. people=people,
  117. fee_method=fee_method,
  118. registration_way=registration_way,
  119. registration_day=registration_day,
  120. remark=remark
  121. )
  122. return {"msg": "success", "code": 200, "class_id": new_class.id}
  123. except Exception as e:
  124. return {"msg": str(e), "code": 500}
  125. @classes.post("/insert_session")
  126. async def insert_session(
  127. class_event_id : int = Form(default=0),
  128. start_time: datetime = Form(default=datetime.now()),
  129. end_time: datetime = Form(default=datetime.now()),
  130. content : str = Form(default='')
  131. ):
  132. try:
  133. session_list = await Class_detail.filter(class_list_id=class_event_id).all()
  134. session = 0
  135. if session_list != []:
  136. for session_obj in session_list:
  137. if session < session_obj.sessions:
  138. session = session_obj.sessions
  139. new_session = await Class_detail.create(
  140. class_list_id=class_event_id,
  141. start_time=start_time,
  142. end_time=end_time,
  143. sessions=session +1,
  144. content = content
  145. )
  146. return {"msg": "success", "code": 200, "new_session_id": new_session.id}
  147. except Exception as e:
  148. return {"msg": str(e), "code": 500}
  149. @classes.post("/update_school")
  150. async def update_school(
  151. location_id: int = Form(default=0),
  152. location_name: str = Form(default=''),
  153. Lng: str = Form(default=''),
  154. Lat: str = Form(default=''),
  155. address : str = Form(default='')
  156. ):
  157. try:
  158. school = await Schools.get(id=location_id)
  159. if location_name.strip() != '':
  160. school.name = location_name
  161. if Lng != '':
  162. school.longitude = Lng
  163. if Lat.strip() != '':
  164. school.latitude = Lat
  165. if address.strip() != '':
  166. school.address = address
  167. await school.save()
  168. update_location_time(location_id= location_id)
  169. return {"msg": "success", "code": 200}
  170. except Exception as e:
  171. return {"msg": str(e), "code": 500}
  172. @classes.post("/update_class_name")
  173. async def update_class_name(
  174. class_name_id: int = Form(default=0),
  175. name: str = Form(default=''),
  176. location_id: int = Form(default=0),
  177. category: str = Form(default=''),
  178. introduction: str = Form(default=''),
  179. organizer: str = Form(default=''),
  180. cover_img_file:UploadFile = File(default=''),
  181. group_id : int = Form(default=0),
  182. group_sort : str = Form(default='')
  183. ):
  184. try:
  185. class_name = await Class_name.get(id=class_name_id)
  186. if name.strip() != '':
  187. class_name.name = name
  188. if location_id != 0:
  189. class_name.school_id = location_id
  190. update_location_time(location_id= location_id)
  191. if category.strip() != '':
  192. class_name.category = category
  193. if introduction.strip() != '':
  194. class_name.introduction = introduction
  195. if organizer.strip() != '':
  196. class_name.organizer = organizer
  197. if group_id != 0 :
  198. class_name.group_id = group_id
  199. if cover_img_file != '':
  200. contents = await cover_img_file.read()
  201. with open(f"{IMAGEDIR}{cover_img_file.filename}", "wb") as f:
  202. f.write(contents)
  203. class_name.cover_img = f"{IMAGEDIR_short}{cover_img_file.filename}"
  204. if group_sort != '':
  205. class_name.group_sort = group_sort
  206. await class_name.save()
  207. return {"msg": "success", "code": 200}
  208. except Exception as e:
  209. return {"msg": str(e), "code": 500}
  210. @classes.post("/update_event")
  211. async def update_event(
  212. id: int = Form(default=0),
  213. name_id: int = Form(default=0),
  214. event: str = Form(default=''),
  215. start_time: datetime = Form(default=datetime.now()),
  216. end_time: datetime = Form(default=datetime.now()),
  217. contact: str = Form(default=''),
  218. lecturer: str = Form(default=''),
  219. location: str = Form(default=''),
  220. content: str = Form(default=''),
  221. URL: str = Form(default=''),
  222. people : str = Form(default=''),
  223. fee_method: str = Form(default=''),
  224. registration_way: str = Form(default=''),
  225. registration_day: str = Form(default=''),
  226. remark : str = Form(default='')
  227. ):
  228. try:
  229. class_obj = await Class_list.get(id=id)
  230. if name_id != 0:
  231. class_obj.name_id = name_id
  232. if event.strip() != '':
  233. class_obj.event = event
  234. if start_time:
  235. class_obj.start_time = start_time
  236. if end_time:
  237. class_obj.end_time = end_time
  238. if lecturer.strip() != '':
  239. class_obj.lecturer = lecturer
  240. if location.strip() != '':
  241. class_obj.location = location
  242. if contact.strip() != '':
  243. class_obj.contact = contact
  244. if content.strip() != '':
  245. class_obj.content = content
  246. if URL.strip() != '':
  247. class_obj.URL = URL
  248. if people.strip() != '':
  249. class_obj.people = people
  250. if fee_method.strip() != '':
  251. class_obj.fee_method = fee_method
  252. if registration_way.strip() != '':
  253. class_obj.registration_way = registration_way
  254. if registration_day.strip() != '':
  255. class_obj.registration_day = registration_day
  256. if remark.strip() != '':
  257. class_obj.remark = remark
  258. await class_obj.save()
  259. return {"msg": "success", "code": 200}
  260. except Exception as e:
  261. return {"msg": str(e), "code": 500}
  262. @classes.post("/update_session")
  263. async def update_session(
  264. session_id : int = Form(default=0),
  265. class_event_id : int = Form(default=0),
  266. start_time: datetime = Form(default=datetime.now()),
  267. end_time: datetime = Form(default=datetime.now()),
  268. sessions: str = Form(default=0),
  269. content : str = Form(default='')
  270. ):
  271. try:
  272. class_session_obj = await Class_detail.get(id=session_id)
  273. if class_event_id != 0:
  274. class_session_obj.class_list_id = class_event_id
  275. if start_time != '':
  276. class_session_obj.start_time = start_time
  277. if end_time != '':
  278. class_session_obj.end_time = end_time
  279. if sessions.strip() != '':
  280. class_session_obj.sessions = sessions
  281. if content.strip() != '':
  282. class_session_obj.content = content
  283. await class_session_obj.save()
  284. return {"msg": "success", "code": 200}
  285. except Exception as e:
  286. return {"msg": str(e), "code": 500}
  287. @classes.post("/delete_school")
  288. async def delete_school(location_id: int):
  289. if location_id:
  290. await Schools.filter(id=location_id).delete()
  291. return {"msg": "success", "code": 200}
  292. @classes.post("/delete_session")
  293. async def delete_session(id: int):
  294. if id:
  295. await Class_detail.filter(id=id).delete()
  296. return {"msg": "success", "code": 200}
  297. @classes.post("/delete_event")
  298. async def delete(id: int):
  299. if id:
  300. await Class_detail.filter(class_list_id=id).delete()
  301. await Class_list.filter(id=id).delete()
  302. return {"msg": "success", "code": 200}
  303. @classes.post("/delete_class_name")
  304. async def delete(id: int):
  305. if id:
  306. class_event_list = await Class_list.filter(name_id=id).all()
  307. for class_event_obj in class_event_list:
  308. await Class_detail.filter(class_list_id=class_event_obj.id).delete()
  309. await Class_list.filter(name_id=id).delete()
  310. await Class_name.filter(id=id).delete()
  311. return {"msg": "success", "code": 200}
  312. @classes.get("/get_event")
  313. async def search_event(
  314. class_name_id: Optional[int] = None,
  315. event_id : Optional[int] = None
  316. ):
  317. try:
  318. if event_id :
  319. class_list = await Class_list.filter(id=event_id).all()
  320. elif class_name_id:
  321. class_list = await Class_list.filter(name_id=class_name_id).all()
  322. else :
  323. return {"msg": "please input class_name_id or event_id", "code": 200}
  324. classes = []
  325. for class_obj in class_list:
  326. class_name_obj = await Class_name.get(id=class_obj.name_id)
  327. class_name = class_name_obj.name
  328. class_data = {
  329. "class_name" : class_name,
  330. "event_id": class_obj.id,
  331. "name_id": class_obj.name_id,
  332. "event": class_obj.event,
  333. "start_time": class_obj.start_time,
  334. "end_time": class_obj.end_time,
  335. "location": class_obj.location,
  336. "lecturer": class_obj.lecturer,
  337. "contact": class_obj.contact,
  338. "content": class_obj.content,
  339. "URL": class_obj.URL,
  340. "people": class_obj.people,
  341. "fee_method": class_obj.fee_method,
  342. "registration_way": class_obj.registration_way,
  343. "registration_day": class_obj.registration_day,
  344. "remark": class_obj.remark
  345. }
  346. classes.append(class_data)
  347. return {"msg": "success", "code": 200, "classes": classes}
  348. except Exception as e:
  349. return {"msg": str(e), "code": 500}
  350. @classes.get("/get_school")
  351. async def get_school(
  352. location_id : Optional[int] = None
  353. ):
  354. try:
  355. if location_id :
  356. school_list = await Schools.filter(id = location_id).all()
  357. else :
  358. school_list = await Schools.all()
  359. schools = []
  360. for school_obj in school_list:
  361. school_data = {
  362. "location_id": school_obj.id,
  363. "location_name": school_obj.name,
  364. "Lng": school_obj.longitude,
  365. "Lat": school_obj.latitude,
  366. "address": school_obj.address,
  367. "update_time":school_obj.update_time
  368. }
  369. schools.append(school_data)
  370. return {"msg": "success", "code": 200, "schools": schools}
  371. except Exception as e:
  372. return {"msg": str(e), "code": 500}
  373. @classes.get("/get_group_name")
  374. async def get_school_group():
  375. try:
  376. school_group_list = await Group_name.all()
  377. school_groups = []
  378. for school_obj in school_group_list:
  379. school_data = {
  380. "group_id": school_obj.id,
  381. "group_name": school_obj.group_name
  382. }
  383. school_groups.append(school_data)
  384. return {"msg": "success", "code": 200, "school_groups": school_groups}
  385. except Exception as e:
  386. return {"msg": str(e), "code": 500}
  387. @classes.get("/get_class_name")
  388. async def get_class_name(
  389. location_id : int = 0 ,
  390. class_name_id : int = 0,
  391. group_id : int = 0,
  392. group_sort :str = None,
  393. category :str = None
  394. ):
  395. try:
  396. if group_sort:
  397. class_name_list = await Class_name.filter(group_sort = group_sort).all()
  398. elif category:
  399. class_name_list = await Class_name.filter(Q(category__icontains=category)).all()
  400. elif location_id == 0:
  401. if class_name_id == 0 :
  402. class_name_list = await Class_name.all()
  403. else :
  404. class_name_list = await Class_name.filter(id = class_name_id).all()
  405. else:
  406. if class_name_id != 0 :
  407. class_name_list = await Class_name.filter(school_id = location_id,id = class_name_id).all()
  408. else:
  409. class_name_list = await Class_name.filter(school_id = location_id).all()
  410. classes_name = []
  411. for class_name_obj in class_name_list:
  412. school_obj = await Schools.filter(id=class_name_obj.school_id).all()
  413. school_name = ""
  414. if school_obj == []:
  415. school_name = "未設定該據點"
  416. else :
  417. school_obj = await Schools.get(id=class_name_obj.school_id)
  418. school_name = school_obj.name
  419. if not group_id or class_name_obj.group_id==group_id:
  420. class_data = {
  421. "class_name_id": class_name_obj.id,
  422. "name": class_name_obj.name,
  423. "school":school_name,
  424. "category": class_name_obj.category,
  425. "introduction": class_name_obj.introduction,
  426. "organizer": class_name_obj.organizer,
  427. "group_id": class_name_obj.group_id,
  428. "cover_img": class_name_obj.cover_img,
  429. "group_sort":group_sort
  430. }
  431. classes_name.append(class_data)
  432. return {"msg": "success", "code": 200, "classes": classes_name}
  433. except Exception as e:
  434. return {"msg": str(e), "code": 500}
  435. @classes.get("/get_session")
  436. async def get_session(
  437. event_id : Optional[int] = None
  438. ):
  439. try:
  440. class_session_list = await Class_detail.filter(class_list_id=event_id).all()
  441. classe_sessions = []
  442. for class_session_obj in class_session_list:
  443. class_session_data = {
  444. "session_id": class_session_obj.id,
  445. "class_event_id": class_session_obj.class_list_id,
  446. "start_time": class_session_obj.start_time,
  447. "end_time": class_session_obj.end_time,
  448. "sessions": class_session_obj.sessions,
  449. "content": class_session_obj.content
  450. }
  451. classe_sessions.append(class_session_data)
  452. return {"msg": "success", "code": 200, "classe_sessions": classe_sessions}
  453. except Exception as e:
  454. return {"msg": str(e), "code": 500}
  455. @classes.get("/search_class_like")
  456. async def search_class_like(keyword: str):
  457. try:
  458. class_list = await Class_list.filter(Q(lecturer__icontains=keyword)).all()
  459. classes = []
  460. for class_obj in class_list:
  461. class_name = await Class_name.get(id=class_obj.name_id)
  462. school_obj = await Schools.get(id=class_name.school_id)
  463. class_data = {
  464. "msg": "success",
  465. "code": 200,
  466. "class_id": class_obj.id,
  467. "name": class_name.name,
  468. "school":school_obj.name,
  469. "category": class_name.category,
  470. "introduction": class_name.introduction,
  471. "organizer": class_name.organizer,
  472. "cover_img": class_name.cover_img,
  473. "event": class_obj.event,
  474. "start_time": class_obj.start_time,
  475. "end_time": class_obj.end_time,
  476. "location": class_obj.location,
  477. "lecturer": class_obj.lecturer,
  478. "contact": class_obj.contact,
  479. "content": class_obj.content,
  480. "URL": class_obj.URL,
  481. "people": class_obj.people,
  482. "fee_method": class_obj.fee_method,
  483. "registration_way": class_obj.registration_way,
  484. "remark": class_obj.remark
  485. }
  486. classes.append(class_data)
  487. class_name_list = await Class_name.filter(Q(name__icontains=keyword)|Q(group_sort__icontains=keyword)).all()
  488. for class_name in class_name_list:
  489. class_list = await Class_list.filter(name_id=class_name.id).all()
  490. for class_obj in class_list:
  491. school_obj = await Schools.get(id=class_name.school_id)
  492. class_data = {
  493. "msg": "success",
  494. "code": 200,
  495. "class_id": class_obj.id,
  496. "name": class_name.name,
  497. "school":school_obj.name,
  498. "category": class_name.category,
  499. "introduction": class_name.introduction,
  500. "organizer": class_name.organizer,
  501. "cover_img": class_name.cover_img,
  502. "event": class_obj.event,
  503. "start_time": class_obj.start_time,
  504. "end_time": class_obj.end_time,
  505. "location": class_obj.location,
  506. "lecturer": class_obj.lecturer,
  507. "contact": class_obj.contact,
  508. "content": class_obj.content,
  509. "URL": class_obj.URL,
  510. "people": class_obj.people,
  511. "fee_method": class_obj.fee_method,
  512. "registration_way": class_obj.registration_way,
  513. "remark": class_obj.remark
  514. }
  515. classes.append(class_data)
  516. return {"msg": "success", "code": 200, "classes": classes}
  517. except Exception as e:
  518. return {"msg": str(e), "code": 500}
  519. @classes.post("/add_favorite_class")
  520. async def add_favorite_class(
  521. class_event_id: int,
  522. user_id : int,
  523. time_stemp: datetime = datetime.now()
  524. ):
  525. try:
  526. new_favorite_class = await Favorite_course.get_or_create(
  527. class_event_id=class_event_id,
  528. user_id=user_id,
  529. defaults={'time_stemp': time_stemp}
  530. )
  531. return {"msg": "success", "code": 200,"is exist": not new_favorite_class[1],"id":new_favorite_class[0].id}
  532. except Exception as e:
  533. return {"msg": str(e), "code": 500}
  534. @classes.get("get_favorite_class")
  535. async def get_favorite_class(
  536. user_id : int
  537. ):
  538. try:
  539. class_list = await Favorite_course.filter(user_id = user_id).all()
  540. favorite_courses = []
  541. for class_obj in class_list:
  542. class_event = await Class_list.get(id = class_obj.class_event_id)
  543. class_name = await Class_name.get(id = class_event.name_id)
  544. class_data = {
  545. "id": class_obj.id,
  546. "user_id": class_obj.user_id,
  547. "class_event_id":class_obj.class_event_id,
  548. "class_name_id" : class_name.id,
  549. "time_stemp":class_obj.time_stemp
  550. }
  551. favorite_courses.append(class_data)
  552. return {"msg": "success", "code": 200, "school_groups": favorite_courses}
  553. except Exception as e:
  554. return {"msg": str(e), "code": 500}
  555. @classes.post("/delete_favorite_class")
  556. async def delete_favorite_class(
  557. class_event_id: int,
  558. user_id : int
  559. ):
  560. try:
  561. await Favorite_course.filter(class_event_id=class_event_id,user_id=user_id).delete()
  562. return {"msg": "success", "code": 200}
  563. except Exception as e:
  564. return {"msg": str(e), "code": 500}
  565. @classes.post("/insert_online_course")
  566. async def insert_online_course(
  567. title : str = Form(default=''),
  568. category : str = Form(default=''),
  569. create_time :str = Form(default=datetime.now()),
  570. content : str = Form(default=''),
  571. vedio_url :str = Form(default='')
  572. ):
  573. try:
  574. new_online_course = await Online_course.create(
  575. title=title,
  576. create_time=create_time,
  577. category=category,
  578. content=content,
  579. vedio_url=vedio_url,
  580. group_id = 8
  581. )
  582. return {"msg": "success", "code": 200, "online_course_obj": new_online_course.id}
  583. except Exception as e:
  584. return {"msg": str(e), "code": 500}
  585. @classes.post("/update_online_course")
  586. async def update_online_course(
  587. id : int = Form(default=0),
  588. title : str = Form(default=''),
  589. category : str = Form(default=''),
  590. create_time :str = Form(default=datetime.now()),
  591. content : str = Form(default=''),
  592. vedio_url :str = Form(default='')
  593. ):
  594. try:
  595. online_course_obj = await Online_course.get(id=id)
  596. if title.strip() != '':
  597. online_course_obj.title = title
  598. if category.strip() != '':
  599. online_course_obj.category = category
  600. if create_time.strip() != '':
  601. online_course_obj.create_time = create_time
  602. if content.strip() != '':
  603. online_course_obj.content = content
  604. if vedio_url.strip() != '':
  605. online_course_obj.vedio_url = vedio_url
  606. await online_course_obj.save()
  607. return {"msg": "success", "code": 200}
  608. except Exception as e:
  609. return {"msg": str(e), "code": 500}
  610. @classes.get("/get_online_courese")
  611. async def get_online_courese(
  612. online_courese_id : Optional[int] = None
  613. ):
  614. try:
  615. if online_courese_id :
  616. online_courese_list = await Online_course.filter(id = online_courese_id).all()
  617. else :
  618. online_courese_list = await Online_course.all()
  619. online_coureses = []
  620. for online_coures_obj in online_courese_list:
  621. online_coures_data = {
  622. "id": online_coures_obj.id,
  623. "title": online_coures_obj.title,
  624. "category":online_coures_obj.category,
  625. "create_time": online_coures_obj.create_time,
  626. "click_time": online_coures_obj.click_time,
  627. "content": online_coures_obj.content,
  628. "vedio_url":online_coures_obj.vedio_url
  629. }
  630. online_coureses.append(online_coures_data)
  631. return {"msg": "success", "code": 200, "online_coures": online_coureses}
  632. except Exception as e:
  633. return {"msg": str(e), "code": 500}
  634. @classes.post("/delete_online_course")
  635. async def delete_online_course(
  636. online_course_id : int
  637. ):
  638. try:
  639. await Online_course.filter(id=online_course_id).delete()
  640. return {"msg": "success", "code": 200}
  641. except Exception as e:
  642. return {"msg": str(e), "code": 500}