|
@@ -6,6 +6,12 @@ from fastapi import FastAPI, Query, UploadFile, File
|
|
|
import dataset,json
|
|
|
from fastapi import FastAPI
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
+from fastapi.staticfiles import StaticFiles
|
|
|
+import time
|
|
|
+from datetime import datetime
|
|
|
+from PIL import Image
|
|
|
+import io
|
|
|
+
|
|
|
app = FastAPI()
|
|
|
origins = [
|
|
|
"http://172.105.205.52",
|
|
@@ -19,7 +25,10 @@ app.add_middleware(
|
|
|
allow_methods=["*"],
|
|
|
allow_headers=["*"],
|
|
|
)
|
|
|
-app.mount("/static/img", StaticFiles(directory="static/img"), name="static/img")
|
|
|
+
|
|
|
+serverADDR = '127.0.0.1:8000/'
|
|
|
+cover_img_dir = 'static/cover_img/'
|
|
|
+app.mount("/static/cover_img", StaticFiles(directory="static/cover_img"), name="static/cover_img")
|
|
|
|
|
|
|
|
|
|
|
@@ -31,8 +40,6 @@ class Tag(BaseModel):
|
|
|
@app.get("/tags")
|
|
|
async def get_tags():
|
|
|
db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
- course_table = db['course_table']
|
|
|
- print(course_table.columns)
|
|
|
statement = 'SELECT id,name FROM tag'
|
|
|
tags = []
|
|
|
for row in db.query(statement):
|
|
@@ -41,6 +48,7 @@ async def get_tags():
|
|
|
|
|
|
@app.post("/tags")
|
|
|
async def create_tags(tag:Tag):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
tag_table = db['tag_table']
|
|
|
pk = tag_table.insert({'name':tag.name})
|
|
|
tag.id = pk
|
|
@@ -48,6 +56,7 @@ async def create_tags(tag:Tag):
|
|
|
|
|
|
@app.delete("/tags/{tag_id}")
|
|
|
async def delete_tags(tag_id:int):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
sqls = 'DELETE FROM tag_table WHERE id = '+str(tag_id)
|
|
|
db.query(sqls)
|
|
|
sqls = 'DELETE FROM course_tag WHERE tag_id = '+str(tag_id)
|
|
@@ -56,6 +65,7 @@ async def delete_tags(tag_id:int):
|
|
|
|
|
|
@app.put("/tags/{tag_id}")
|
|
|
async def update_tags(tag_id,tag:Tag):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
sqls = 'UPDATE tag_table\
|
|
|
SET name="'+tag.name+'"\
|
|
|
WHERE id='+tag_id+';'
|
|
@@ -65,6 +75,7 @@ async def update_tags(tag_id,tag:Tag):
|
|
|
|
|
|
@app.get("/tags/{tag_id}")
|
|
|
async def get_tags(tag_id):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
statement = 'SELECT id,name FROM tag_table where id = '+tag_id
|
|
|
for row in db.query(statement):
|
|
|
result = {'id':row['id'],'name':row['name']}
|
|
@@ -76,6 +87,7 @@ async def get_tags(tag_id):
|
|
|
class Course(BaseModel):
|
|
|
id: int
|
|
|
title: str
|
|
|
+ profile: str
|
|
|
url: str #course website location url
|
|
|
cover_img: str #img url form
|
|
|
teacher_name: str
|
|
@@ -84,7 +96,7 @@ class Course(BaseModel):
|
|
|
price_discount: int
|
|
|
hours: int
|
|
|
units: int
|
|
|
- '''
|
|
|
+'''
|
|
|
@app.get("/courses")
|
|
|
async def get_courses(tags:List[int]):
|
|
|
|
|
@@ -100,14 +112,21 @@ async def get_courses(tags:List[int]):
|
|
|
'''
|
|
|
@app.post("/courses")
|
|
|
async def create_courses(tags: list,course:Course):
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
+ #add to course table
|
|
|
+ course_table = db['course']
|
|
|
+ pk = course_table.insert({'title':course.title,'profile':course.profile,'url':course.url,'cover_img':course.cover_img,'teacher_name':course.teacher_name,
|
|
|
+ 'price':course.price,'price_discount':course.price_discount,'hours':course.hours,'units':course.units})
|
|
|
+ course.id = pk
|
|
|
+ course_tag_table = db['course_tag']
|
|
|
+ for tag in tags:
|
|
|
+ course_tag_table.insert({'course_id':course.id,'tag_id':tag})
|
|
|
return {'msg':'新增成功'}
|
|
|
|
|
|
|
|
|
@app.delete("/courses/{course_id}")
|
|
|
async def delete_course(course_id:int):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
sqls = 'DELETE FROM course_table WHERE id = '+str(course_id)
|
|
|
db.query(sqls)
|
|
|
sqls = 'DELETE FROM course_tag WHERE course_id = '+str(course_id)
|
|
@@ -116,6 +135,7 @@ async def delete_course(course_id:int):
|
|
|
|
|
|
@app.put("/courses/{course_id}")
|
|
|
async def update_course(course_id,course:Course):
|
|
|
+ db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/openTalk?charset=utf8mb4')
|
|
|
sqls = 'UPDATE course_table\
|
|
|
SET title="'+course.title+'", url="'+course.url+'", hours='+str(course.hours)+',\
|
|
|
teacher_name="'+course.teacher_name+'", price='+str(course.price)+', units='+str(course.units)+'\
|
|
@@ -124,16 +144,17 @@ async def update_course(course_id,course:Course):
|
|
|
course.id=course_id
|
|
|
return course
|
|
|
|
|
|
-@app.post("/uploadfile/")
|
|
|
+
|
|
|
+
|
|
|
+@app.post("/upload_cover_img/")
|
|
|
async def create_upload_file(file: UploadFile = File(...)):
|
|
|
img_name = str(time.time()).replace('.','')
|
|
|
- try:
|
|
|
- contents = await file.read()
|
|
|
- image = Image.open(io.BytesIO(contents))
|
|
|
- image= image.convert("RGB")
|
|
|
- image.save(img_upload_folder+img_name+'.jpg')
|
|
|
- except:
|
|
|
- return {'msg':'檔案無法使用'}
|
|
|
- return {"msg": 'www.choozmo.com:8168/'+tmp_img_sub_folder+img_name+'.jpg'}
|
|
|
+
|
|
|
+ contents = await file.read()
|
|
|
+ image = Image.open(io.BytesIO(contents))
|
|
|
+ image= image.convert("RGB")
|
|
|
+ image.save(cover_img_dir+img_name+'.jpg')
|
|
|
+
|
|
|
+ return {"msg": serverADDR+cover_img_dir+img_name+'.jpg'}
|
|
|
|
|
|
|