tomoya преди 1 година
родител
ревизия
0256f9b58a
променени са 2 файла, в които са добавени 26 реда и са изтрити 6 реда
  1. 24 4
      backend/app/app/api/api_v1/endpoints/videos.py
  2. 2 2
      backend/app/app/models/video.py

+ 24 - 4
backend/app/app/api/api_v1/endpoints/videos.py

@@ -12,6 +12,7 @@ from app.api import deps
 
 from app.core.celery_app import celery_app
 from app.core.config import settings
+from app.aianchor.utils2 import check_zip, VideoMakerError
 from pathlib import Path
 from app.db.session import SessionLocal
 
@@ -45,6 +46,7 @@ def get_video_list(
 @router.post("/test")
 def test(
     *,
+    db: Session = Depends(deps.get_db),
     title: str,
     anchor_id: int,
     lang_id: int,
@@ -52,7 +54,15 @@ def test(
 ) -> Any:
     video_data = {"title":title, "anchor_id":anchor_id, "lang_id":lang_id}
     print(video_data)
-    task = celery_app.send_task("app.worker.make_video_test",  kwargs=video_data, )
+    filename = crud.video.generate_file_name(db=db, n=20)
+    video_create = schemas.VideoCreate(title=title, progress_state="PENDING", stored_filename=filename)
+    video = crud.video.create_with_owner(db=db, obj_in=video_create, owner_id=current_user.id, )
+    return_msg = {"video_message":"accepted"}
+    video_data = jsonable_encoder(video)
+    video_data['membership_status'] = current_user.membership_status
+    video_data['available_time'] = current_user.available_time
+    video_data['video_id'] = video_data['id']
+    task = celery_app.send_task("app.worker.make_video_test",  kwargs=video_data)
     print(task)
     return "ok"
 
@@ -73,17 +83,26 @@ def upload_plot(
     print(title)
     print(upload_file.filename)
     filename = crud.video.generate_file_name(db=db, n=20)
-    
+    filepath = str(Path(BACKEND_ZIP_STORAGE).joinpath(filename+".zip"))
     try:
-        with open(str(Path(BACKEND_ZIP_STORAGE).joinpath(filename+".zip")), 'wb') as f:
+        with open(filepath, 'wb') as f:
             while contents := upload_file.file.read(1024 * 1024):
                 f.write(contents)
     except Exception as e:
         print(e, type(e))
-        return {"error": str(e)}
+        error_msg = {"error_message": str(e)}
+        return JSONResponse(error_msg)
     finally:
         upload_file.file.close()
+    try:
+      if check_zip(filepath):
+        print("passed check_zip")
+    except VideoMakerError as e:
+      print(e)
+      error_msg = {"accepted": False, "error_message":f'{e}'}
+      return JSONResponse(error_msg)
     
+    return_msg = {"accepted_message":"accepted"}
 
     '''
     zip_filename = video.stored_file_name+".zip"
@@ -93,6 +112,7 @@ def upload_plot(
     print(r.returncode)
     celery_app.send_task("app.worker.make_video", args=[video.id, video.stored_file_name, current_user.id, anchor_id, current_user.membership_status, current_user.available_time])
     '''
+  
     video_create = schemas.VideoCreate(title=title, progress_state="PENDING", stored_filename=filename)
     video = crud.video.create_with_owner(db=db, obj_in=video_create, owner_id=current_user.id)
     return_msg = {"video_message":"accepted"}

+ 2 - 2
backend/app/app/models/video.py

@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
 
 from sqlalchemy import Column, ForeignKey, Integer, String, Enum, DateTime
 from sqlalchemy.orm import relationship
-
+from sqlalchemy.sql import func
 from app.db.base_class import Base
 
 
@@ -17,7 +17,7 @@ class Video(Base):
   progress_state = Column(String(10), 
                     ForeignKey("progress.state", ondelete="RESTRICT", onupdate="CASCADE"),
                     default="waiting")
-  created_datetime = Column(DateTime)
+  created_datetime = Column(DateTime(timezone=True), default=func.now())
   length = Column(Integer)
   owner_id = Column(Integer, ForeignKey("user.id"))
   owner = relationship("User", back_populates="videos")