You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
FreeBug/backend/app.py

70 lines
2.7 KiB

from sys import prefix
from flask import Flask, send_from_directory
# 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
from blueprints.session import session as sessionBlueprint
from blueprints.admin import admin as adminBlueprint
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/profile')
app.register_blueprint(sessionBlueprint,url_prefix='/api/session')
app.register_blueprint(adminBlueprint,url_prefix='/api/admin')
@app.route('/media/<string:filename>')
def send_file(filename):
return send_from_directory(USER_UPLOADS_DIR, filename)
@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;')
db.session.execute(sql)
db.session.commit()
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=[],publications=[])
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)