From 0997ea4135d67d376eac3ff489125f8727d70da9 Mon Sep 17 00:00:00 2001 From: swve Date: Tue, 29 Nov 2022 23:55:46 +0100 Subject: [PATCH] feat: init impl video watch --- .../[courseid]/element/[elementid]/index.tsx | 49 ++++++++++++------- src/services/courses/elements/video.py | 5 +- src/services/uploads.py | 4 +- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/front/pages/org/[orgslug]/course/[courseid]/element/[elementid]/index.tsx b/front/pages/org/[orgslug]/course/[courseid]/element/[elementid]/index.tsx index 1a2a8300..94316459 100644 --- a/front/pages/org/[orgslug]/course/[courseid]/element/[elementid]/index.tsx +++ b/front/pages/org/[orgslug]/course/[courseid]/element/[elementid]/index.tsx @@ -8,6 +8,7 @@ import { useRouter } from "next/router"; import React, { useMemo } from "react"; import Layout from "../../../../../../../components/ui/Layout"; import { getElement } from "../../../../../../../services/courses/elements"; +import { getBackendUrl } from "../../../../../../../services/config"; function ElementPage() { const router = useRouter(); @@ -31,25 +32,30 @@ function ElementPage() { const output = useMemo(() => { if (router.isReady && !isLoading) { - console.log( "el",element.content); - - let content = Object.keys(element.content).length > 0 ? element.content : { - "type": "doc", - "content": [ - { - "type": "paragraph", - "content": [ - { - "type": "text", - "text": "Hello world, this is a example Canva ⚡️" - } - ] - } - ] - } - console.log("element", content); + console.log(element); - return generateHTML(content, [Document, StarterKit, Paragraph, Text, Bold]); + if (element.type == "dynamic") { + let content = + Object.keys(element.content).length > 0 + ? element.content + : { + type: "doc", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Hello world, this is a example Canva ⚡️", + }, + ], + }, + ], + }; + console.log("element", content); + + return generateHTML(content, [Document, StarterKit, Paragraph, Text, Bold]); + } } }, [element.content]); @@ -62,7 +68,12 @@ function ElementPage() {

element

{element.name}


-
+ + {element.type == "dynamic" &&
} + {/* todo : use apis & streams instead of this */} + {element.type == "video" && ( + + )} )} diff --git a/src/services/courses/elements/video.py b/src/services/courses/elements/video.py index 3c149408..d66d0851 100644 --- a/src/services/courses/elements/video.py +++ b/src/services/courses/elements/video.py @@ -17,6 +17,7 @@ async def create_video_element(name: str, coursechapter_id: str, current_user: # generate element_id element_id = str(f"element_{uuid4()}") + video_format = video_file.filename.split(".")[-1] element_object = ElementInDB( element_id=element_id, coursechapter_id=coursechapter_id, @@ -24,7 +25,7 @@ async def create_video_element(name: str, coursechapter_id: str, current_user: type="video", content={ "video": { - "filename": video_file.filename, + "filename": "video."+video_format, "element_id": element_id, } }, @@ -45,6 +46,8 @@ async def create_video_element(name: str, coursechapter_id: str, current_user: # upload video if video_file: print("uploading video") + # get videofile format + await upload_video(video_file, video_file.filename, element_id) # todo : choose whether to update the chapter or not diff --git a/src/services/uploads.py b/src/services/uploads.py index 243ad8d0..516f0b1c 100644 --- a/src/services/uploads.py +++ b/src/services/uploads.py @@ -17,12 +17,12 @@ async def upload_thumbnail(thumbnail_file, name_in_disk): async def upload_video(video_file, name_in_disk, element_id): contents = video_file.file.read() - + video_format = video_file.filename.split(".")[-1] # create folder os.mkdir(f"content/uploads/video/{element_id}") try: - with open(f"content/uploads/video/{element_id}/{name_in_disk}", 'wb') as f: + with open(f"content/uploads/video/{element_id}/video.{video_format}", 'wb') as f: f.write(contents) f.close()