Spaces:
Sleeping
Sleeping
from flask import Flask | |
from flask_login import LoginManager | |
from flask_ckeditor import CKEditor | |
from models import db, User | |
import json | |
import os | |
from dotenv import load_dotenv | |
# Load environment variables | |
load_dotenv() | |
def create_app(): | |
app = Flask(__name__) | |
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'your-secret-key-here') | |
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///gangs.db' | |
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False | |
# Initialize extensions | |
db.init_app(app) | |
ckeditor = CKEditor(app) | |
# Initialize LoginManager | |
login_manager = LoginManager() | |
login_manager.init_app(app) | |
login_manager.login_view = 'auth.login' | |
def load_user(user_id): | |
return User.query.get(int(user_id)) | |
# Create necessary data files and admin user on startup | |
def create_data_files(): | |
# Create data directory if it doesn't exist | |
os.makedirs('data', exist_ok=True) | |
# Initialize users.json with admin user from environment variables | |
if not os.path.exists('data/users.json'): | |
admin_data = { | |
'users': [{ | |
'id': 1, | |
'username': os.getenv('ADMIN_USERNAME', 'admin'), | |
'password': os.getenv('ADMIN_PASSWORD', 'admin') | |
}] | |
} | |
with open('data/users.json', 'w') as f: | |
json.dump(admin_data, f, indent=4) | |
# Initialize gangs.json if it doesn't exist | |
if not os.path.exists('data/gangs.json'): | |
with open('data/gangs.json', 'w') as f: | |
json.dump({'gangs': []}, f, indent=4) | |
# Initialize blogs.json if it doesn't exist | |
if not os.path.exists('data/blogs.json'): | |
with open('data/blogs.json', 'w') as f: | |
json.dump({'blogs': []}, f, indent=4) | |
create_data_files() | |
# Register blueprints | |
from routes import main | |
app.register_blueprint(main) | |
from admin import admin | |
app.register_blueprint(admin) | |
# Create database tables | |
with app.app_context(): | |
db.create_all() | |
return app | |
if __name__ == '__main__': | |
app = create_app() | |
app.run(host='0.0.0.0', port=7860) | |