Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@ WORKDIR /usr/src/app

COPY . .

ENV MAX_CONCURRENT_PIP=4

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
Empty file added T
Empty file.
3 changes: 3 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from src.database import db_session, init_db
from src.schema import Query
from src.constants import create_gym_table
from src.scrapers.scraper import scrape_classes
from src.scrapers.gym_scraper import scrape_times
from src.scrapers.scraper import scrape_classes, scrape_pool_hours


Expand All @@ -30,6 +32,7 @@ def shutdown_session(exception=None):
# Create database and fill it with constants
init_db()
create_gym_table()
scrape_times()
scrape_classes(3)
scrape_pool_hours()

Expand Down
4 changes: 2 additions & 2 deletions manager.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import os
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db
from app import app#, db

# Build manager
migrate = Migrate(app, db)
#migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command("db", MigrateCommand)

Expand Down
8 changes: 4 additions & 4 deletions schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ type ClassInstance {
instructor: String!
isCanceled: Boolean!
isVirtual: Boolean!
startTime: DateTime!
endTime: DateTime!
startTime: DateTime
endTime: DateTime
class_: Class
gym: Gym
}
Expand Down Expand Up @@ -64,8 +64,8 @@ type OpenHours {
id: ID!
facilityId: Int!
day: Int!
startTime: String!
endTime: String!
startTime: String
endTime: String
}

type Query {
Expand Down
6 changes: 3 additions & 3 deletions src/constants.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@
"image_url": "gyms/teagle.jpg",
"facilities": [
{
"name": "Teagle Up",
"name": "Teagle Upstairs",
"type": "fitness",
"hours": []
},
{
"name": "Teagle Down",
"name": "Teagle Downstairs",
"type": "fitness",
"hours": []
},
Expand All @@ -80,4 +80,4 @@
]
}
]
}
}
2 changes: 0 additions & 2 deletions src/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,4 @@ def create_gym_table():
db_session.merge(gym)
for facility in facilities:
db_session.merge(facility)
for hours in fitness_hours:
db_session.merge(hours)
db_session.commit()
33 changes: 33 additions & 0 deletions src/models/activity.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from sqlalchemy import Column, Float, String, Integer, ForeignKey, Table
from sqlalchemy.orm import relationship
from src.database import Base

def Activity(Base):
__tablename__ = 'activity'

id = Column(Integer, primary_key = True)
name = Column(String, nullable=False)
activity_type = Column(Integer, ForeignKey('activitytype.id'), nullable=False)
facility_id = Column(Integer, ForeignKey('facility.id'), nullable=False)
prices = relationship('Price')
image_url = Column(String(), nullable=False)

def __init__(self, **kwargs):
self.id = kwargs.get('id')
self.name = kwargs.get('name')
self.activity_type = kwargs.get('activity_type')
self.facility_id = kwargs.get('facility_id')
self.image_url = kwargs.get('image_url')


def ActivityType(Base):
__tablename__ = 'activitytype'

id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)

def __init__(self, **kwargs):
self.id = kwargs.get('id')
self.name = kwargs.get('name')


1 change: 1 addition & 0 deletions src/models/capacity.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

from sqlalchemy import Column, ForeignKey, Integer, DateTime, Float
from sqlalchemy.orm import backref, relationship
from src.database import Base
Expand Down
4 changes: 2 additions & 2 deletions src/models/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ class ClassInstance(Base):
instructor = Column(String(), nullable=False)
isCanceled = Column(Boolean(), nullable=False, default=False)
isVirtual = Column(Boolean(), nullable=False, default=False)
start_time = Column(DateTime(), nullable=False)
end_time = Column(DateTime(), nullable=False)
start_time = Column(DateTime(), nullable=True)
end_time = Column(DateTime(), nullable=True)

class_ = relationship("Class", back_populates="gyms")
gym = relationship("Gym", back_populates="classes")
Expand Down
45 changes: 17 additions & 28 deletions src/models/facility.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import sys
sys.path.append('..')
import enum
from sqlalchemy import Column, ForeignKey, String, Enum, Integer
from sqlalchemy.orm import relationship
from src.database import Base
from src.models.openhours import OpenHours
from src.models.capacity import Capacity



class FacilityType(enum.Enum):
fitness = 0
pool = 1
Expand All @@ -23,8 +25,6 @@ class Facility(Base):
capacities = relationship("Capacity")

# TODO: - Implement the following
# prices = relationship('Price', cascade='delete, all')
# amenities = relationship('Amenity', cascade='delete, all')
# image_url = Column(String(1000), nullable=True)

def __init__(self, **kwargs):
Expand All @@ -36,47 +36,36 @@ def __init__(self, **kwargs):
# TODO: - Implement the following
# self.image_url = kwargs.get("image_url")

def serialize(self):
return {
"id": self.id,
"name": self.name,
"gym_id": self.gym_id,
"facility_type": self.facility_type,
"capacities": self.capacities,
}
# def serialize(self):
# return {
# "id": self.id,
# "name": self.name,
# "gym_id": self.gym_id,
# "facility_type": self.facility_type,
# "capacities": self.capacities,
# }


# Left here as a reference for the above TODOs


"""
class Price(Base):
__tablename__ = "price"
class Amenity(Base):
__tablename__ = 'amenity'

id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
cost = Column(Integer, nullable=False)
one_time = Column(Boolean, nullable=False)
image_url = Column(String(1000), nullable=True)
name = Column(String(), nullable=False)
image_url = Column(String(), nullable=True)
activity_id = Column(Integer, ForeignKey('activity.id'), nullable=False)

def __init__(self, **kwargs):
self.name = kwargs.get("name")
self.cost = kwargs.get("cost")
self.one_time = kwargs.get("one_time")
self.image_url = kwargs.get("image_url")
self.activity_id = kwargs.get("activity_id")


class Amenity(Base):
__tablename__ = 'amenity'

id = Column(Integer, primary_key=True)
name = Column(String(), nullable=False)
image_url = Column(String(), nullable=True)
activity_id = Column(Integer, ForeignKey('activity.id'), nullable=False)

def __init__(self, **kwargs):
self.name = kwargs.get("name")
self.image_url = kwargs.get("image_url")
self.activity_id = kwargs.get("activity_id")
"""
"""
6 changes: 3 additions & 3 deletions src/models/gym.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@


class Gym(Base):
__tablename__ = "gym"
__tablename__ = 'gym'

id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
description = Column(String(1000), nullable=False)
facilities = relationship("Facility")
classes = relationship("ClassInstance", back_populates="gym")

# TODO: - Complete capacity table
# capacity = relationship('Capacity', cascade='delete, all')
# TODO: - complete amenities table and scraper
# # amenities = relationship('Amenity', cascade='delete, all')

location = Column(String(1000), nullable=False)
latitude = Column(Float, nullable=False)
Expand Down
6 changes: 3 additions & 3 deletions src/models/openhours.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import enum
from sqlalchemy import Column, ForeignKey, Integer, Float, Time, String, Table, Enum
from sqlalchemy import Column, ForeignKey, Integer, Float, String, Time, String, Table, Enum
from sqlalchemy.orm import backref, relationship
from src.database import Base

Expand All @@ -15,8 +15,8 @@ class OpenHours(Base):
id = Column(Integer, primary_key=True)
facility_id = Column(Integer, ForeignKey("facility.id"), nullable=False)
day = Column(Integer, nullable=False) # 0=Monday, 5=Weekend
start_time = Column(Time(), nullable=False)
end_time = Column(Time(), nullable=False)
start_time = Column(Time(), nullable=True)
end_time = Column(Time(), nullable=True)
# TODO: - Handle restrictions and special hours
restrictions = relationship("Restrictions", secondary=openhours_restrictions, back_populates="openhours")
# special_hours = Column(Boolean, nullable=False)
Expand Down
20 changes: 20 additions & 0 deletions src/models/price.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from database import Base
from sqlalchemy import Column, String, Integer, ForeignKey, Boolean
from sqlalchemy.orm import relationship

class Price(Base):
__tablename__ = "price"

id = Column(Integer, primary_key=True)
name = Column(String(), nullable=False)
cost = Column(Integer, nullable=False)
one_time = Column(Boolean, nullable=False)
activity_id = Column(Integer, ForeignKey('activity.id'), nullable=False)

def __init__(self, **kwargs):
self.id = kwargs.get('id')
self.name = kwargs.get("name")
self.cost = kwargs.get("cost")
self.one_time = kwargs.get("one_time")
self.activity_id = kwargs.get('activity_id')

Empty file added src/scrapers/__init__.py
Empty file.
File renamed without changes.
Loading