from datetime import datetime, timedelta from typing import TYPE_CHECKING from . import db if TYPE_CHECKING: from .VideoClip import VideoClip from .VideoPart import VideoPart class Workflow(db.Model): video_clips: list["VideoClip"] video_parts: list["VideoPart"] id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), nullable=False) state = db.Column(db.SmallInteger, nullable=False, default=0) """0未开始,1弹幕处理,2完成,3弹幕压制,4完成,5切割视频,6完成,9全部完成""" create_time = db.Column(db.DateTime, nullable=False, default=datetime.now) update_time = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) automatic = db.Column(db.Boolean, default=False, nullable=False) editing = db.Column(db.Boolean, default=True, nullable=False) start_after_time = db.Column(db.DateTime, default=None) def calculate_start_time(self): if self.editing: self.start_after_time = None if not self.automatic: self.start_after_time = self.start_after_time else: self.start_after_time = datetime.now() + timedelta(minutes=30) def to_dict(self): return { "id": self.id, "name": self.name, "state": self.state, "create_time": self.create_time.strftime("%Y/%m/%d %H:%M:%S") if self.create_time else None, "update_time": self.update_time.strftime("%Y/%m/%d %H:%M:%S") if self.update_time else None, "automatic": self.automatic, "editing": self.editing, "start_after_time": self.start_after_time.strftime("%Y/%m/%d %H:%M:%S") if self.start_after_time else None, "video_clips": [i.to_json() for i in self.video_clips], }