chore: refactor block files

This commit is contained in:
swve 2023-02-19 23:37:47 +01:00
parent 642e55ce2e
commit 0b2e407bf3
9 changed files with 30 additions and 87 deletions

View file

@ -7,14 +7,14 @@ export async function uploadNewPDFFile(file: any, lecture_id: string) {
formData.append("file_object", file);
formData.append("lecture_id", lecture_id);
return fetch(`${getAPIUrl()}files/document`, RequestBodyForm("POST", formData))
return fetch(`${getAPIUrl()}blocks/document`, RequestBodyForm("POST", formData))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}
export async function getPDFFile(file_id: string) {
// todo : add course id to url
return fetch(`${getAPIUrl()}files/document?file_id=${file_id}`, RequestBody("GET", null))
return fetch(`${getAPIUrl()}blocks/document?file_id=${file_id}`, RequestBody("GET", null))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}

View file

@ -7,14 +7,14 @@ export async function uploadNewImageFile(file: any, lecture_id: string) {
formData.append("file_object", file);
formData.append("lecture_id", lecture_id);
return fetch(`${getAPIUrl()}files/picture`, RequestBodyForm("POST", formData))
return fetch(`${getAPIUrl()}blocks/image`, RequestBodyForm("POST", formData))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}
export async function getImageFile(file_id: string) {
// todo : add course id to url
return fetch(`${getAPIUrl()}files/picture?file_id=${file_id}`, RequestBody("GET", null))
return fetch(`${getAPIUrl()}blocks/image?file_id=${file_id}`, RequestBody("GET", null))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}

View file

@ -7,13 +7,13 @@ export async function uploadNewVideoFile(file: any, lecture_id: string) {
formData.append("file_object", file);
formData.append("lecture_id", lecture_id);
return fetch(`${getAPIUrl()}files/video`, RequestBodyForm("POST", formData))
return fetch(`${getAPIUrl()}blocks/video`, RequestBodyForm("POST", formData))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}
export async function getVideoFile(file_id: string) {
return fetch(`${getAPIUrl()}files/video?file_id=${file_id}`, RequestBody("GET", null))
return fetch(`${getAPIUrl()}blocks/video?file_id=${file_id}`, RequestBody("GET", null))
.then((result) => result.json())
.catch((error) => console.log("error", error));
}

View file

@ -1,5 +1,5 @@
from fastapi import APIRouter
from src.routers import activity, blocks, users, auth, houses, orgs, roles, files
from src.routers import activity, blocks, users, auth, houses, orgs, roles
from src.routers.courses import chapters, collections, courses,lectures
@ -12,7 +12,6 @@ global_router.include_router(auth.router, prefix="/auth", tags=["auth"])
global_router.include_router(houses.router, prefix="/houses", tags=["houses"])
global_router.include_router(orgs.router, prefix="/orgs", tags=["orgs"])
global_router.include_router(roles.router, prefix="/roles", tags=["roles"])
global_router.include_router(files.router, prefix="/files", tags=["files"])
global_router.include_router(blocks.router, prefix="/blocks", tags=["blocks"])
global_router.include_router(courses.router, prefix="/courses", tags=["courses"])
global_router.include_router(chapters.router, prefix="/chapters", tags=["chapters"])

View file

@ -1,8 +1,8 @@
from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.dependencies.auth import get_current_user
from fastapi import HTTPException, status, UploadFile
from src.services.blocks.files.pictures import create_picture_file, get_picture_file
from src.services.blocks.files.videos import create_video_file, get_video_file
from src.services.blocks.imageBlock.images import create_image_file, get_image_file
from src.services.blocks.videoBlock.videos import create_video_file, get_video_file
from src.services.blocks.pdfBlock.documents import create_document_file, get_document_file
from src.services.blocks.quizBlock.quizBlock import create_quiz_block, get_quiz_block_answers, get_quiz_block_options, quizBlock
from src.services.users import PublicUser
@ -10,12 +10,12 @@ from src.services.users import PublicUser
router = APIRouter()
@router.post("/picture")
async def api_create_picture_file_block(request: Request, file_object: UploadFile, lecture_id: str = Form(), current_user: PublicUser = Depends(get_current_user)):
@router.post("/image")
async def api_create_image_file_block(request: Request, file_object: UploadFile, lecture_id: str = Form(), current_user: PublicUser = Depends(get_current_user)):
"""
Create new picture file
Create new image file
"""
return await create_picture_file(request, file_object, lecture_id)
return await create_image_file(request, file_object, lecture_id)
@router.post("/video")
@ -26,12 +26,12 @@ async def api_create_video_file_block(request: Request, file_object: UploadFile,
return await create_video_file(request, file_object, lecture_id)
@router.get("/picture")
async def api_get_picture_file_block(request: Request, file_id: str, current_user: PublicUser = Depends(get_current_user)):
@router.get("/image")
async def api_get_image_file_block(request: Request, file_id: str, current_user: PublicUser = Depends(get_current_user)):
"""
Get picture file
Get image file
"""
return await get_picture_file(request, file_id, current_user)
return await get_image_file(request, file_id, current_user)
@router.get("/video")

View file

@ -1,56 +0,0 @@
from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.dependencies.auth import get_current_user
from fastapi import HTTPException, status, UploadFile
from src.services.blocks.files.pictures import create_picture_file, get_picture_file
from src.services.blocks.files.videos import create_video_file, get_video_file
from src.services.blocks.pdfBlock.documents import create_document_file, get_document_file
from src.services.users import PublicUser
router = APIRouter()
@router.post("/picture")
async def api_create_picture_file(request: Request, file_object: UploadFile, lecture_id: str = Form(), current_user: PublicUser = Depends(get_current_user)):
"""
Create new picture file
"""
return await create_picture_file(request, file_object, lecture_id)
@router.post("/video")
async def api_create_video_file(request: Request, file_object: UploadFile, lecture_id: str = Form(), current_user: PublicUser = Depends(get_current_user)):
"""
Create new video file
"""
return await create_video_file(request, file_object, lecture_id)
@router.get("/picture")
async def api_get_picture_file(request: Request, file_id: str, current_user: PublicUser = Depends(get_current_user)):
"""
Get picture file
"""
return await get_picture_file(request, file_id, current_user)
@router.get("/video")
async def api_get_video_file(request: Request, file_id: str, current_user: PublicUser = Depends(get_current_user)):
"""
Get video file
"""
return await get_video_file(request, file_id, current_user)
@router.get("/document")
async def api_get_document_file(request: Request, file_id: str, current_user: PublicUser = Depends(get_current_user)):
"""
Get document file
"""
return await get_document_file(request, file_id, current_user)
@router.post("/document")
async def api_create_document_file(request: Request, file_object: UploadFile, lecture_id: str = Form(), current_user: PublicUser = Depends(get_current_user)):
"""
Create new document file
"""
return await create_document_file(request, file_object, lecture_id)

View file

@ -16,31 +16,31 @@ class PhotoFile(BaseModel):
lecture_id: str
async def create_picture_file(request: Request,picture_file: UploadFile, lecture_id: str):
async def create_image_file(request: Request,image_file: UploadFile, lecture_id: str):
photos = request.app.db["files"]
# generate file_id
file_id = str(f"file_{uuid4()}")
# get file format
file_format = picture_file.filename.split(".")[-1]
file_format = image_file.filename.split(".")[-1]
# validate file format
if file_format not in ["jpg", "jpeg", "png", "gif"]:
raise HTTPException(
status_code=status.HTTP_409_CONFLICT, detail="Picture file format not supported")
status_code=status.HTTP_409_CONFLICT, detail="Image file format not supported")
# create file
file = await picture_file.read()
file = await image_file.read()
# get file size
file_size = len(file)
# get file type
file_type = picture_file.content_type
file_type = image_file.content_type
# get file name
file_name = picture_file.filename
file_name = image_file.filename
# create file object
uploadable_file = PhotoFile(
@ -53,11 +53,11 @@ async def create_picture_file(request: Request,picture_file: UploadFile, lecture
)
# create folder for lecture
if not os.path.exists(f"content/uploads/files/pictures/{lecture_id}"):
os.mkdir(f"content/uploads/files/pictures/{lecture_id}")
if not os.path.exists(f"content/uploads/files/images/{lecture_id}"):
os.mkdir(f"content/uploads/files/images/{lecture_id}")
# upload file to server
with open(f"content/uploads/files/pictures/{lecture_id}/{file_id}.{file_format}", 'wb') as f:
with open(f"content/uploads/files/images/{lecture_id}/{file_id}.{file_format}", 'wb') as f:
f.write(file)
f.close()
@ -71,7 +71,7 @@ async def create_picture_file(request: Request,picture_file: UploadFile, lecture
return uploadable_file
async def get_picture_object(request: Request,file_id: str):
async def get_image_object(request: Request,file_id: str):
photos = request.app.db["files"]
photo_file = photos.find_one({"file_id": file_id})
@ -85,7 +85,7 @@ async def get_picture_object(request: Request,file_id: str):
status_code=status.HTTP_409_CONFLICT, detail="Photo file does not exist")
async def get_picture_file(request: Request,file_id: str, current_user: PublicUser):
async def get_image_file(request: Request,file_id: str, current_user: PublicUser):
photos = request.app.db["files"]
photo_file = photos.find_one({"file_id": file_id})
@ -104,7 +104,7 @@ async def get_picture_file(request: Request,file_id: str, current_user: PublicUs
file_format = photo_file.file_format
lecture_id = photo_file.lecture_id
file = open(
f"content/uploads/files/pictures/{lecture_id}/{file_id}.{file_format}", 'rb')
f"content/uploads/files/images/{lecture_id}/{file_id}.{file_format}", 'rb')
return StreamingResponse(file, media_type=photo_file.file_type)
else:

View file

@ -95,7 +95,7 @@ async def get_document_file(request: Request, file_id: str, current_user: Public
if document_file:
# check media type
if document_file.format not in ["jpg", "jpeg", "png", "gif"]:
if document_file.format not in ["pdf"]:
raise HTTPException(
status_code=status.HTTP_409_CONFLICT, detail="Document file format not supported")