"""Product family model.""" from db import db from dateutil import parser class ProjectProductFamily(db.Model): """ProjectProductFamily family model.""" __tablename__ = "ProjectProductFamily" __table_args__ = ( db.UniqueConstraint( "project_id", "product_family_id", name="uq_ProjectProductFamily_project_id_product_family_id" ), ) id = db.Column(db.BigInteger, primary_key=True) product_family_id = db.Column(db.BigInteger, db.ForeignKey("ProductFamily.id", ondelete="CASCADE"), nullable=False) project_id = db.Column(db.BigInteger, db.ForeignKey("Project.id", ondelete="CASCADE"), nullable=False) product_family = db.relationship("ProductFamily", foreign_keys=[product_family_id]) project = db.relationship("Project", foreign_keys=[project_id]) class ProductFamily(db.Model): """Product family model.""" __tablename__ = "ProductFamily" id = db.Column(db.BigInteger, primary_key=True, autoincrement=True) external_id = db.Column(db.String, nullable=False) title = db.Column(db.String, nullable=False) type = db.Column(db.String, nullable=False) gras_project_product_families = db.relationship("ProjectProductFamily") tracks = db.relationship("ProductTrack", cascade="all, delete-orphan") def release_date(self): dates = [] for track in self.tracks: if track.release_date: try: dates.append(parser.parse(str(track.release_date)).date()) except ValueError: pass # Skip if date in incorrect format return min(dates) if dates else None