# Python library imports from datetime import datetime # Library imports from flask import Flask from flask_sqlalchemy import SQLAlchemy # Import accounts blueprint from accounts import accounts # Import db from accounts.models import db as _db # Import db models from accounts.models.dog import Dog from accounts.models.dog.breed_size import BreedSize from accounts.models.user import User from accounts.models.visit import Visit from accounts.models.visit.visit_type import VisitType def create_app(config_class='development_config.py'): accounts_app = Flask(__name__, template_folder='tests/templates') accounts_app.register_blueprint(accounts) accounts_app.config.from_pyfile(config_class) return accounts_app def add_test_data(db): add_test_users(db) add_test_dogs(db) add_test_visits(db) def add_test_users(db): man_man = User(name='Man Man', username='mamanman', email='man_man@email.com', address='123 Home Ln. City, AA 11223', password='manword') real_person = User(name='Real Person', username='imarealperson', email='real_person@email.com', address='113 Park St. City, AA 13433', password='realpassword') db.session.add(man_man) db.session.add(real_person) db.session.commit() def add_test_dogs(db): man_man = db.session.execute( db.select(User).where(User.name == 'Man Man')).scalar_one() real_person = db.session.execute( db.select(User).where(User.name == 'Real Person')).scalar_one() lassey = Dog(name='Lassey', breed_size=BreedSize.LARGE, birth_date=datetime(2010, 10, 4), owner_id=man_man.id) rufus = Dog(name='Rufus', breed_size=BreedSize.MEDIUM, birth_date=datetime(2020, 4, 20), owner_id=man_man.id) air_bud = Dog(name='Air Bud', breed_size=BreedSize.LARGE, birth_date=datetime(2018, 7, 16), owner_id=real_person.id) db.session.add(lassey) db.session.add(rufus) db.session.add(air_bud) db.session.commit() def add_test_visits(db): # User objects man_man = db.session.execute( db.select(User).where(User.name == 'Man Man')).scalar_one() real_person = db.session.execute( db.select(User).where(User.name == 'Real Person')).scalar_one() # Dog objects lassey = db.session.execute( db.select(Dog).where(Dog.name == 'Lassey')).scalar_one() rufus = db.session.execute( db.select(Dog).where(Dog.name == 'Rufus')).scalar_one() air_bud = db.session.execute( db.select(Dog).where(Dog.name == 'Air Bud')).scalar_one() # Visit with the date in the past test_visit1 = Visit(date_time=datetime(2023,12,5,10,30), owner_id=man_man.id, dog_id=rufus.id) # Visit with the date in the future test_visit2 = Visit(date_time=datetime(2034,12,5,10,30), owner_id=man_man.id, dog_id=lassey.id) # Visit with non-default visit type test_visit3 = Visit(date_time=datetime(2034,12,5,10,30), owner_id=real_person.id, visit_type=VisitType.HOUSE_SITTING, dog_id=air_bud.id) # Visit with more than one dog #test_visit4 = Visit(date_time=datetime(2034,12,5,10,30), # owner_id=man_man.id, # dog_id=[lassey.id, rufus.id]) db.session.add(test_visit1) db.session.add(test_visit2) db.session.add(test_visit3) db.session.commit() if __name__ == '__main__': app = create_app() _db.init_app(app) with app.app_context(): _db.create_all() add_test_data(_db) app.run()