def create_app(test_config=None): """Construct the core application.""" # Create the Flask app object. app = Flask(__name__) # Configure the app from configuration-file settings. app.config.from_object('config.Config') data_path = os.path.join('CS235Flix', 'adapters', 'data') if test_config is not None: # Load test configuration, and override any configuration settings. app.config.from_mapping(test_config) data_path = app.config['TEST_DATA_PATH'] # Create the MemoryRepository implementation for a memory-based repository. repo.repo_instance = MemoryRepository() populate(data_path, repo.repo_instance) # Build the application - these steps require an application context. with app.app_context(): # Register blueprints. from .authentication import authentication app.register_blueprint(authentication.authentication_blueprint) from .home import home app.register_blueprint(home.home_blueprint) from .movies import movies app.register_blueprint(movies.movies_blueprint) from .utilities import utilities app.register_blueprint(utilities.utilities_blueprint) return app
def create_app(test_config = None): app = Flask(__name__) app.config.from_object('config.Config') # config is the module name, Config is the class name whose static variables and their values are to be Flask's configuration variables and values data_path = os.path.join('CS235Flix', 'adapters', 'data') if test_config is not None: app.config.from_mapping(test_config) # override any configuration variables with these (test_config should be a dictionary) data_path = app.config['TEST_DATA_PATH'] repo.repo_instance = MemoryRepository() populate(data_path, repo.repo_instance) with app.app_context(): from .home_blueprint import home app.register_blueprint(home.home_blueprint) from .movies_blueprint import movies app.register_blueprint(movies.movies_blueprint) from .authentication_blueprint import authentication app.register_blueprint(authentication.authentication_blueprint) return app
def in_memory_repo(): repo = MemoryRepository() memory_repository.populate(TEST_DATA_PATH_MEMORY, repo) return repo
def memory_repository_with_data(): csv_path = r"C:\Users\Nathan Longhurst\OneDrive - The University of Auckland\b Comp235\Assignment 2\GitHub\Assignment2Comp235\CS235Flix\adapters\data" memory_repository = MemoryRepository() populate(csv_path, memory_repository) return memory_repository
def create_app(test_config=None): """ Construct the core application """ # Create the Flask app object app = Flask(__name__) # Configure the app from configuration-file settings app.config.from_object('config.Config') data_path = os.path.join('CS235Flix', 'adapters', 'datafiles') if test_config is not None: # Load test configuration, and override any configuration settings. app.config.from_mapping(test_config) data_path = app.config['TEST_DATA_PATH'] if app.config['REPOSITORY'] == 'memory': # Create the MemoryRepository implementation for a memory-based repository. repo.repo_instance = memory_repository.MemoryRepository() memory_repository.populate(data_path, repo.repo_instance) elif app.config['REPOSITORY'] == 'database': # Configure database database_uri = app.config['SQLALCHEMY_DATABASE_URI'] # We create a comparatively simple SQLite database, which is based on a single file (see .env for URI). # For example the file database could be located locally and relatively to the application in covid-19.db # leading to a URI of "sqlite:///cs235flix.db" # Note that create_engine does not establish any actual DB connection directly! database_echo = app.config['SQLALCHEMY_ECHO'] database_engine = create_engine(database_uri, connect_args={"check_same_thread":False}, poolclass=NullPool, echo=database_echo) if app.config['TESTING'] == 'True' or len(database_engine.table_names()) == 0: print("REPOPULATING DATABASE") # For testing, or first-time use of the web application, reinitialise the database. clear_mappers() metadata.create_all(database_engine) # Conditionally create database tables. for table in reversed(metadata.sorted_tables): # Remove any data from the tables. database_engine.execute(table.delete()) # Generate mappings that map domain model classes to the database tables. map_model_to_tables() database_repository.populate(database_engine, data_path) else: # Solely generate mappings that map domain model classes to the database tables. map_model_to_tables() # Create the database session factory using sessionmaker (this has to be done once, in a global manner) session_factory = sessionmaker(autocommit=False, autoflush=True, bind=database_engine) # Create the SQLAlchemy DatabaseRepository instance for an sqlite3-based repository. repo.repo_instance = database_repository.SqlAlchemyRepository(session_factory) # Build the application and register blueprints with app.app_context(): from .home import home app.register_blueprint(home.home_blueprint) from .movies import movies app.register_blueprint(movies.movies_blueprint) from .authentication import authentication app.register_blueprint(authentication.authentication_blueprint) from .utilities import utilities app.register_blueprint(utilities.utilities_blueprint) return app
def in_memory_repo(): repo = MemoryRepository() populate(TEST_DATA_PATH, repo) return repo