class MusicFile(db.Model): __tablename__ = "music_file" id = db.Column(db.Integer, primary_key=True) path = db.Column(db.String(120), nullable=False) musicitem_id = db.Column(db.Integer, db.ForeignKey('music_item.id')) music_item = db.relationship("MusicItem") user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship(User) def to_json(self): return dict(id=self.id, path=self.path)
class MusicItem(db.Model): __tablename__ = "music_item" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False) number = db.Column(db.String(120)) key = db.Column(db.String(50)) dateAdded = db.Column(db.Date, default=datetime.date.today()) dateOfComposition = db.Column(db.Date) composer_id = db.Column(db.Integer, db.ForeignKey('composer.id')) composer = db.relationship(Composer) instruments = db.relationship(Instrument, secondary=musicitem_instruments) files = db.relationship(MusicFile) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship(User) def to_json(self): if self.dateAdded is None: dateAdded = ""; else: dateAdded = self.dateAdded.isoformat() if self.dateOfComposition is None: dateOfComposition = ""; else: dateOfComposition = self.dateAdded.isoformat() return dict(id=self.id, name=self.name, number=self.number, key=self.key, dateAdded=dateAdded, dateOfComposition=dateOfComposition, files=[f.to_json() for f in self.files])
class Composer(db.Model): __tablename__ = "composer" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False) dateOfBirth = db.Column(db.Date, nullable=False) dateOfDeath = db.Column(db.Date) musicItems = db.relationship("MusicItem") user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship(User) def to_json(self): if self.dateOfDeath is None: deathDate = ""; else: deathDate = self.dateOfDeath.isoformat() return dict(id=self.id, name=self.name, dateOfBirth=self.dateOfBirth.isoformat(), dateOfDeath=deathDate)
class User(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(120), unique=True) password = db.Column(db.String(120)) display_name = db.Column(db.String(120)) facebook = db.Column(db.String(120)) google = db.Column(db.String(120)) twitter = db.Column(db.String(120)) def __init__(self, email=None, password=None, display_name=None, facebook=None, github=None, google=None, linkedin=None, twitter=None, bitbucket=None): if email: self.email = email.lower() if password: self.set_password(password) if display_name: self.display_name = display_name if facebook: self.facebook = facebook if google: self.google = google if twitter: self.twitter = twitter def set_password(self, password): self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password) def to_json(self): return dict(id=self.id, email=self.email, displayName=self.display_name, facebook=self.facebook, google=self.google, twitter=self.twitter)
class Instrument(db.Model): __tablename__ = "instrument" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False)
name = db.Column(db.String(120), nullable=False) class MusicFile(db.Model): __tablename__ = "music_file" id = db.Column(db.Integer, primary_key=True) path = db.Column(db.String(120), nullable=False) musicitem_id = db.Column(db.Integer, db.ForeignKey('music_item.id')) music_item = db.relationship("MusicItem") user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship(User) def to_json(self): return dict(id=self.id, path=self.path) musicitem_instruments = db.Table('musicitem_instruments', db.Column('musicitem_id', db.Integer, db.ForeignKey('music_item.id')), db.Column('instrument_id', db.Integer, db.ForeignKey('instrument.id'))) class MusicItem(db.Model): __tablename__ = "music_item" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False) number = db.Column(db.String(120)) key = db.Column(db.String(50)) dateAdded = db.Column(db.Date, default=datetime.date.today()) dateOfComposition = db.Column(db.Date) composer_id = db.Column(db.Integer, db.ForeignKey('composer.id')) composer = db.relationship(Composer) instruments = db.relationship(Instrument, secondary=musicitem_instruments) files = db.relationship(MusicFile) user_id = db.Column(db.Integer, db.ForeignKey('user.id'))