from sqlalchemy import text from sqlalchemy.ext.hybrid import hybrid_property from core_notifications.settings import Settings from .base import db from .queries.image import ImageQuery class Image(db.Model): __tablename__ = "image" query_class = ImageQuery id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(), nullable=False) created_at = db.Column( db.DateTime, nullable=False, server_default=text("TIMEZONE('utc', CURRENT_TIMESTAMP)"), ) created_by_id = db.Column( db.Integer, db.ForeignKey("dna_account.id"), nullable=True ) # Relations created_by = db.relationship( "DNAAccount", backref="created_images", foreign_keys=[created_by_id] ) def __repr__(self): return f"" def __str__(self): return self.name @property def url(self): return f"{Settings.MEDIA_URL}{Settings.MEDIA_BUCKET_PATH}{self.name}" @hybrid_property def created_by_name(self): return self.created_by.name @created_by_name.expression def created_by_name(cls): return cls.query_class.CREATED_ALIAS.name