Separated install script to avoid launch errors
This commit is contained in:
		@@ -1,5 +1,4 @@
 | 
			
		||||
from .config import Production as Config
 | 
			
		||||
from .install import install_app
 | 
			
		||||
from .models import User
 | 
			
		||||
from .extensions import bootstrap, csrf, db, login_manager, mail
 | 
			
		||||
 | 
			
		||||
@@ -53,7 +52,5 @@ def create_app():
 | 
			
		||||
    app.register_blueprint(views)
 | 
			
		||||
    app.register_blueprint(quiz)
 | 
			
		||||
    app.register_blueprint(editor, url_prefix='/admin/editor')
 | 
			
		||||
 | 
			
		||||
    install_app(app)
 | 
			
		||||
    
 | 
			
		||||
    return app
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
from .extensions import db
 | 
			
		||||
from .tools.data import save
 | 
			
		||||
from .tools.logs import write
 | 
			
		||||
 | 
			
		||||
from sqlalchemy_utils import create_database, database_exists
 | 
			
		||||
 | 
			
		||||
from cryptography.fernet import Fernet
 | 
			
		||||
from os import mkdir, path
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
def install_app(app):
 | 
			
		||||
    with app.app_context():
 | 
			
		||||
        data = Path(app.config.get('DATA'))
 | 
			
		||||
        database_uri = app.config.get('SQLALCHEMY_DATABASE_URI')
 | 
			
		||||
        if not path.isdir(f'./{data}'): mkdir(f'./{data}')
 | 
			
		||||
        if not path.isdir(f'./{data}/questions'): mkdir(f'./{data}/questions')
 | 
			
		||||
        if not path.isfile(f'./{data}/.gitignore'):
 | 
			
		||||
            with open(f'./{data}/.gitignore', 'w') as file: file.write(f'*')
 | 
			
		||||
        if not path.isfile(f'./{data}/config.json'): save({}, 'config.json')
 | 
			
		||||
        if not path.isdir(f'./{data}/logs'): mkdir(f'./{data}/logs')
 | 
			
		||||
        if not path.isfile(f'./{data}/logs/users.log'): write('users.log', 'Log file created.')
 | 
			
		||||
        if not path.isfile(f'./{data}/logs/system.log'): write('system.log', 'Log file created.')
 | 
			
		||||
        if not path.isfile(f'./{data}/logs/tests.log'): write('tests.log', 'Log file created.')
 | 
			
		||||
        if not database_exists(database_uri):       
 | 
			
		||||
            create_database(database_uri)
 | 
			
		||||
            write('system.log', 'No database found. Creating a new database.')
 | 
			
		||||
            from .models import Entry, Dataset, Test, User
 | 
			
		||||
            db.create_all()
 | 
			
		||||
            write('system.log', 'Creating database schema.')
 | 
			
		||||
        if not path.isfile(f'./{data}/.encryption.key'):
 | 
			
		||||
            write('system.log', 'No encryption key found. Generating new encryption key.')
 | 
			
		||||
            with open(f'./{data}/.encryption.key', 'wb') as key_file:
 | 
			
		||||
                key = Fernet.generate_key()
 | 
			
		||||
                key_file.write(key)
 | 
			
		||||
		Reference in New Issue
	
	Block a user