from typing import List from db import db from models import Campaign DEFAULT_PHASE_NAME = "Phase" class MediaPlanPhase(db.Model): """MediaPlan phase model.""" __tablename__ = "MediaPlanPhase" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) order = db.Column(db.Integer) media_plan_id = db.Column( db.BigInteger, db.ForeignKey("MediaPlan.id", ondelete="CASCADE"), nullable=False, index=True ) campaigns: List[Campaign] = db.relationship( "Campaign", back_populates="phase", primaryjoin="and_(MediaPlanPhase.id == Campaign.media_plan_phase_id, Campaign.is_deleted == False)", ) media_plan = db.relationship("MediaPlan") __table_args__ = ( db.UniqueConstraint( "media_plan_id", "order", name="uq_MediaPlanPhase_media_plan_id_order", deferrable=True, initially="deferred", ), )