Beispiel #1
0
class Availability(db.Model):
    __tablename__ = 'availability'

    id = db.Column(db.Integer, primary_key=True)
    artist_id = db.Column(db.Integer, db.ForeignKey('artists.id'))
    from_time = db.Column(db.DateTime, nullable=False)
    to_time = db.Column(db.DateTime, nullable=False)
Beispiel #2
0
class Show(db.Model):
    __tablename__ = 'shows'
    id = db.Column(db.Integer, primary_key=True)
    artist_id = db.Column(db.Integer,
                          db.ForeignKey('artists.id'),
                          nullable=False)
    venue_id = db.Column(db.Integer,
                         db.ForeignKey('venues.id'),
                         nullable=False)
    start_time = db.Column(db.DateTime, nullable=False)
    created_at = db.Column(db.DateTime,
                           nullable=False,
                           server_default=func.now())

    def is_past(self):
        if self.start_time < datetime.today():
            return True
        return False

    def artist_dict(self):
        return {
            'artist_id': self.artist_id,
            'artist_name': self.artist.name,
            'artist_image_link': self.artist.image_link,
            'start_time': self.start_time.strftime('%Y-%m-%d %H:%M:%S')
        }

    def venue_dict(self):
        return {
            "venue_id": self.venue_id,
            "venue_name": self.venue.name,
            "venue_image_link": self.venue.image_link,
            "start_time": self.start_time.strftime('%Y-%m-%d %H:%M:%S')
        }
Beispiel #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)
Beispiel #4
0
class Show(db.Model):
    __tablename__ = 'Show'
    id = db.Column(db.Integer, primary_key=True)
    start_time = db.Column(db.DateTime, nullable=False)
    end_time = db.Column(db.DateTime, nullable=False)
    venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'), nullable=False)
    artist_id = db.Column(db.Integer,
                          db.ForeignKey('Artist.id'),
                          nullable=False)
Beispiel #5
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"))
Beispiel #6
0
class Show(db.Model):
    __tablename__ = 'Show'
    id = db.Column(db.Integer, primary_key=True)
    start_time = db.Column(db.DateTime(), nullable=False)
    venue_id = db.Column(db.Integer, db.ForeignKey('Venue.id'), nullable=False)
    artist_id = db.Column(db.Integer,
                          db.ForeignKey('Artist.id'),
                          nullable=False)

    def __repr__(self):
        return f'{self.id}: Show starts at {self.start_time}'
Beispiel #7
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')
Beispiel #8
0
class Genre(db.Model):
    __tablename__ = 'genres'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    created_at = db.Column(
        db.DateTime,
        nullable=True,
    )
    updated_at = db.Column(
        db.DateTime,
        nullable=True,
    )
Beispiel #9
0
class Venue(db.Model):
    __tablename__ = 'Venue'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    address = db.Column(db.String(120))
    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))
    seeking_talent = db.Column(db.Boolean, unique=False, default=True)
    seeking_description = db.Column(db.Text(), nullable=True)
    city_id = db.Column(db.Integer, db.ForeignKey('City.id'), nullable=False)
    shows = db.relationship('Show', backref='venue_', lazy=True)
    genres = db.relationship('Genre',
                             secondary=venue_genres,
                             lazy='subquery',
                             backref=db.backref('venue_', lazy='dynamic'))
Beispiel #10
0
class Show(db.Model):
    __tablename__ = 'shows'

    id = db.Column(db.Integer, primary_key=True)
    artist_id = db.Column(db.Integer,
                          db.ForeignKey('artists.id'),
                          nullable=False)
    venue_id = db.Column(db.Integer,
                         db.ForeignKey('venues.id'),
                         nullable=False)
    start_time = db.Column(db.DateTime, nullable=True)
    created_at = db.Column(
        db.DateTime,
        nullable=True,
    )
    updated_at = db.Column(
        db.DateTime,
        nullable=True,
    )
Beispiel #11
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)
Beispiel #12
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}"
Beispiel #13
0
    venues = db.relationship('Venue', backref='city_', lazy=True)
    artists = db.relationship('Artist', backref='city_', lazy=True)


class Genre(db.Model):
    __tablename__ = 'Genre'

    id = db.Column(db.Integer, primary_key=True)
    genre = db.Column(db.String(120), nullable=False, unique=True)


# Many to Many association table for venue and genres
venue_genres = db.Table(
    'Venue_Genres',
    db.Column('venue_id',
              db.Integer,
              db.ForeignKey('Venue.id'),
              primary_key=True),
    db.Column('genre_id',
              db.Integer,
              db.ForeignKey('Genre.id'),
              primary_key=True))


class Venue(db.Model):
    __tablename__ = 'Venue'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    address = db.Column(db.String(120))
    phone = db.Column(db.String(120))
    website = db.Column(db.String(256))
Beispiel #14
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))
    image_link = db.Column(db.String(500))
    website = db.Column(db.String(120))
    facebook_link = db.Column(db.String(120))
    seeking_venue = 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=artists_genres,
                             backref=db.backref('artists', lazy=True))
    shows = db.relationship('Show', backref='artist', 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,
            '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_venue': self.seeking_venue,
            'seeking_description': self.seeking_description
        }
Beispiel #15
0
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}>'
Beispiel #16
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)
Beispiel #17
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,
    )
Beispiel #18
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,
    )
Beispiel #19
0
class Venue(db.Model):
    __tablename__ = 'Venue'

    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(120), default='default.jpeg')
    facebook_link = db.Column(db.String(120), nullable=True)
    genres = db.Column(db.ARRAY(db.String))
    website = db.Column(db.String(120), nullable=True)
    seeking_talent = db.Column(db.Boolean(), default=False)
    seeking_description = db.Column(db.String(500), nullable=True)

    def __repr__(self):
        return f'<Venue {self.name}>'

    def seperate_genres(self):
        genres = "".join(self.genres[1:-1]).split(",")
        return [genre if genre[0] != '"' else genre[1:-1] for genre in genres]
Beispiel #20
0
from fyyur import db

#----------------------------------------------------------------------------#
# Models.
#----------------------------------------------------------------------------#

GenreVenue = db.Table(
    'genre_venue',
    db.Column('venue_id',
              db.Integer,
              db.ForeignKey('venues.id'),
              primary_key=True,
              nullable=False),
    db.Column('genre_id',
              db.Integer,
              db.ForeignKey('genres.id'),
              primary_key=True,
              nullable=False))

ArtistGenre = db.Table(
    'artist_genre',
    db.Column('artist_id',
              db.Integer,
              db.ForeignKey('artists.id'),
              primary_key=True,
              nullable=False),
    db.Column('genre_id',
              db.Integer,
              db.ForeignKey('genres.id'),
              primary_key=True,
              nullable=False))
Beispiel #21
0
class Genre(db.Model):
    __tablename__ = 'genres'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
Beispiel #22
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)
Beispiel #23
0
class Genre(db.Model):
    __tablename__ = 'Genre'

    id = db.Column(db.Integer, primary_key=True)
    genre = db.Column(db.String(120), nullable=False, unique=True)