"""Per-user playlist edit permission for viewer-role accounts.""" from datetime import datetime from app.extensions import db class PlaylistPermission(db.Model): """ Grants a viewer-role user edit access to a specific playlist. admin / editor users have implicit access to all playlists; this table is only consulted for the 'viewer' role. """ __tablename__ = 'playlist_permissions' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'), nullable=False) playlist_id = db.Column(db.Integer, db.ForeignKey('playlist.id', ondelete='CASCADE'), nullable=False) granted_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) user = db.relationship('User', backref=db.backref('playlist_permissions', lazy='dynamic', cascade='all, delete-orphan')) playlist = db.relationship('Playlist', backref=db.backref('permitted_users', lazy='dynamic', cascade='all, delete-orphan')) __table_args__ = ( db.UniqueConstraint('user_id', 'playlist_id', name='uq_user_playlist_perm'), ) def __repr__(self): return f''