示例#1
0
class Artist(db.Model):
    __tablename__ = 'artists'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    city = db.Column(db.String(120))
    state = db.Column(db.String(120))
    phone = db.Column(db.String(120), nullable=True)
    seeking_venue = db.Column(db.Boolean, default=True)
    website = db.Column(db.String(120))
    facebook_link = db.Column(db.String(120))
    image_link = db.Column(
        db.String(500),
        default=
        'https://images.unsplash.com/photo-1549213783-8284d0336c4f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=300&q=80'
    )
    seeking_description = db.Column(db.Text, nullable=True)
    shows = db.relationship('Show', backref='Artist', lazy=True)
    genres = db.relationship('Genre',
                             secondary=ArtistGenre,
                             backref=db.backref('Artist', lazy=True))
    created_at = db.Column(
        db.DateTime,
        nullable=True,
    )
    updated_at = db.Column(
        db.DateTime,
        nullable=True,
    )
示例#2
0
class Venue(db.Model):
    __tablename__ = 'venues'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    address = db.Column(db.String(120))
    city = db.Column(db.String(120))
    state = db.Column(db.String(120))
    phone = db.Column(db.String(120), nullable=True)
    seeking_talent = db.Column(db.Boolean, default=True)
    website = db.Column(db.String(120))
    facebook_link = db.Column(
        db.String(120), default='https://www.facebook.com/theduelingpianos')
    image_link = db.Column(
        db.String(500),
        default=
        'https://images.unsplash.com/photo-1543900694-133f37abaaa5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=400&q=60'
    )
    seeking_description = db.Column(db.Text, nullable=True)
    genres = db.relationship('Genre',
                             secondary=GenreVenue,
                             backref=db.backref('Venue', lazy=True))
    shows = db.relationship('Show', backref='Venue', lazy=True)
    created_at = db.Column(
        db.DateTime,
        nullable=True,
    )
    updated_at = db.Column(
        db.DateTime,
        nullable=True,
    )
示例#3
0
class City(db.Model):
    __tablename__ = 'City'

    id = db.Column(db.Integer, primary_key=True)
    city = db.Column(db.String(120), nullable=False, unique=True)
    state_id = db.Column(db.Integer, db.ForeignKey('State.id'), nullable=False)
    venues = db.relationship('Venue', backref='city_', lazy=True)
    artists = db.relationship('Artist', backref='city_', lazy=True)
示例#4
0
class Show(db.Model):
    __tablename__ = 'Show'
    id = db.Column(db.Integer, primary_key=True)
    start_time = db.Column(db.DateTime())
    artist_id = db.Column(db.Integer, db.ForeignKey('Artist.id'))
    artist = db.relationship('Artist',
                             backref=db.backref('shows', cascade="all,delete"))
    venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'))
    venue = db.relationship('Venue',
                            backref=db.backref('shows', cascade="all,delete"))
示例#5
0
class Show(db.Model):
    __tablename__ = 'show'

    id = db.Column(db.Integer, primary_key=True)
    venue_id = db.Column(db.Integer, db.ForeignKey('venue.id'), nullable=False)
    artist_id = db.Column(db.Integer,
                          db.ForeignKey('artist.id'),
                          nullable=False)
    start_time = db.Column(db.TIMESTAMP(timezone=True))
    venue = db.relationship('Venue', backref='show_venue')
    artist = db.relationship('Artist', backref='show_artist')
示例#6
0
class Venue(db.Model):
    __tablename__ = 'venues'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    city = db.Column(db.String(120))
    state = db.Column(db.String(120))
    address = db.Column(db.String(120))
    phone = db.Column(db.String(120))
    image_link = db.Column(db.String(500))
    website = db.Column(db.String(120))
    facebook_link = db.Column(db.String(120))
    seeking_talent = db.Column(db.Boolean, nullable=False, default=False)
    seeking_description = db.Column(db.String(120))
    created_at = db.Column(db.DateTime,
                           nullable=False,
                           server_default=func.now())
    genres = db.relationship('Genre',
                             secondary=genres_venues,
                             backref=db.backref('venues', lazy=True))
    shows = db.relationship('Show', backref='venue', lazy='dynamic')

    def past_shows(self):
        return self.shows.filter(Show.start_time < datetime.today()).all()

    def past_shows_count(self):
        return self.shows.filter(Show.start_time < datetime.today()).count()

    def upcoming_shows(self):
        return self.shows.filter(Show.start_time > datetime.today()).all()

    def upcoming_shows_count(self):
        return self.shows.filter(Show.start_time > datetime.today()).count()

    def to_dict(self):
        return {
            'id': self.id,
            'name': self.name,
            'city': self.city,
            'state': self.state,
            'address': self.address,
            'phone': self.phone,
            'genres': [g.name for g in self.genres],
            'image_link': self.image_link,
            'facebook_link': self.facebook_link,
            'website': self.website,
            'seeking_talent': self.seeking_talent,
            'seeking_description': self.seeking_description
        }
示例#7
0
class Artist(db.Model):
    __tablename__ = 'artists'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    city = db.Column(db.String(120))
    state = db.Column(db.String(120), nullable=False)
    phone = db.Column(db.String(120))
    genres = db.Column(db.String(120))
    image_link = db.Column(db.String(500))
    facebook_link = db.Column(db.String(120))
    website_link = db.Column(db.String)
    seeking_venue = db.Column(db.Boolean, default=False)
    seeking_description = db.Column(db.String)
    shows = db.relationship('Show', backref='artist', lazy=True)
    availability = db.relationship('Availability', backref='artist', lazy=True)
示例#8
0
class Artist(db.Model):
    __tablename__ = 'Artist'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    phone = db.Column(db.String(120))
    website = db.Column(db.String(256))
    image_link = db.Column(db.String(500))
    facebook_link = db.Column(db.String(120))
    city_id = db.Column(db.Integer, db.ForeignKey('City.id'), nullable=False)
    shows = db.relationship('Show', backref='_artist', lazy=True)
    seeking_venue = db.Column(db.Boolean, unique=False, default=True)
    seeking_description = db.Column(db.Text(), nullable=True)
    shows = db.relationship('Show', backref='artist_', lazy=True)
    genres = db.relationship('Genre',
                             secondary=artist_genres,
                             lazy='subquery',
                             backref=db.backref('_artist', lazy=True))
示例#9
0
文件: venue.py 项目: bisonlou/FSND
class Venue(db.Model):
    __tablename__ = 'venues'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    city = db.Column(db.String(120))
    state = db.Column(db.String(120), nullable=False)
    address = db.Column(db.String(120))
    phone = db.Column(db.String(120))
    image_link = db.Column(db.String(500))
    genres = db.Column(db.String, nullable=False)
    facebook_link = db.Column(db.String(120))
    website = db.Column(db.String(120))
    seeking_talent = db.Column(db.Boolean, default=False)
    seeking_description = db.Column(db.String)
    shows = db.relationship('Show', backref='venue')

    def __repr__(self):
        return f'<Venue {self.id}, {self.name}, {self.city}, {self.state}>'
示例#10
0
class Venue(db.Model):
    __tablename__ = 'Venue'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False, unique=True)
    genres = db.Column(db.String(120))
    city = db.Column(db.String(120), nullable=False)
    state = db.Column(db.String(120), nullable=False)
    address = db.Column(db.String(120))
    phone = db.Column(db.String(120))
    website = db.Column(db.String(120))
    seeking_talent = db.Column(db.Boolean)
    seeking_description = db.Column(db.String(120))
    image_link = db.Column(db.String(500))
    facebook_link = db.Column(db.String(120))
    # past_shows_count = db.Column(db.Integer, nullable=False)
    # upcoming_shows_count = db.Column(db.Integer, nullable=False)
    # Done: implement any missing fields, as a database migration using Flask-Migrate
    shows_venue = db.relationship('Show', backref='venue', lazy=True)

    def __repr__(self):
        return f"Venue ID: {self.id} Venue name: {self.name}"
示例#11
0
class Artist(db.Model):
    __tablename__ = 'artist'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    genres = db.Column(db.ARRAY(db.String))
    city = db.Column(db.String(120))
    state = db.Column(db.String(120))
    # limit phone to 10 digits
    phone = db.Column(db.String(10))
    website = db.Column(db.String(120))
    facebook_link = db.Column(db.String(120))
    image_link = db.Column(db.String(500))
    seeking_venue = db.Column(db.Boolean)
    seeking_description = db.Column(db.String)
    # tell the DB to calculate the value itself
    # use server_default instead of default - should end up in CREATE TABLE
    time_created = db.Column(postgresql.TIMESTAMP(timezone=True),
                             server_default=func.now())
    # server_onupdate doesn't do anything serverside
    time_updated = db.Column(postgresql.TIMESTAMP(timezone=True),
                             onupdate=func.now())
    artist_shows = db.relationship('Show', backref='artist_shows', lazy=True)
示例#12
0
class State(db.Model):
    __tablename__ = 'State'

    id = db.Column(db.Integer, primary_key=True)
    state = db.Column(db.String(120), nullable=False, unique=True)
    cities = db.relationship('City', backref='state_', lazy=True)