from sys import prefix from flask import Flask # from FreeBug.backend.blueprints import notification from db.model import db from config import * from db.model import User from werkzeug.security import generate_password_hash from sqlalchemy import text from flask import jsonify import uuid from datetime import datetime from constants import UserRole from utils.utils import random_string_generator, hash_string from blueprints.profile import profile as profileBlueprint app = Flask(__name__) # Set configuration directly on the app instance app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif'} app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI db.init_app(app) app.register_blueprint(profileBlueprint, url_prefix='/api') @app.route('/', methods=['GET', 'POST']) def homepage(): return {'message': 'Welcome back !'}, 200 @app.route('/seedData', methods=['GET']) def seed_data(): try: # Drop and recreate schema (only for testing, not recommended in production) sql = text('DROP SCHEMA public CASCADE; CREATE SCHEMA public;') with db.engine.connect() as connection: connection.execute(sql) db.create_all() # Recreate tables # Define roles and constants (ensure UserRole.USER is an integer or map it) # Create seed users users = [ User( email=f"user{i}@example.com", firstName=f"FirstName{i}", lastName=f"LastName{i}", username=f"username{i}", hash_password=generate_password_hash("password123"), activationKey=hash_string(random_string_generator(16)), pfpFilename=DEFAULT_PROFILE_FILE, joinedDate=datetime.utcnow(), lastOnline=datetime.utcnow(), bio=f"This is user{i}'s bio.", role=int(UserRole.USER), isActivated=True, sessions=[], user_badges=[], enrollments=[], quizzes=[], quiz_attempts=[], chats=[], notifications=[]) for i in range(1, 6) ] db.session.add_all(users) db.session.commit() return {"message": "Users seeded successfully!"}, 201 except Exception as e: db.session.rollback() return {"error": str(e)}, 500 if __name__ == '__main__': with app.app_context(): db.create_all() app.run(host='0.0.0.0', port=9999, debug=True)