Files
Ske_Signage/app/models/content.py
2025-07-16 08:03:57 +03:00

39 lines
1.5 KiB
Python

"""
Content model for media files
"""
from app.extensions import db
class Content(db.Model):
"""Content model representing media files for players"""
id = db.Column(db.Integer, primary_key=True)
file_name = db.Column(db.String(255), nullable=False, index=True)
original_name = db.Column(db.String(255), nullable=True)
duration = db.Column(db.Integer, nullable=False, default=10) # Duration in seconds
position = db.Column(db.Integer, default=0) # Position in playlist
player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False, index=True)
content_type = db.Column(db.String(50), nullable=False, default='image') # image, video, document
file_size = db.Column(db.Integer, nullable=True) # File size in bytes
uploaded_at = db.Column(db.DateTime, default=db.func.current_timestamp())
is_active = db.Column(db.Boolean, default=True)
# Metadata for different content types
width = db.Column(db.Integer, nullable=True)
height = db.Column(db.Integer, nullable=True)
format = db.Column(db.String(10), nullable=True)
@property
def file_path(self):
"""Get the full file path for this content"""
return f"uploads/{self.file_name}"
@property
def url(self):
"""Get the URL for this content"""
from flask import url_for
return url_for('static', filename=self.file_path)
def __repr__(self):
return f'<Content {self.file_name} (Player: {self.player_id})>'