manzilcheck
Kushal Dotel 6 months ago
parent eb9837c8bf
commit 41ce51837e
  1. 58
      backend/app.py
  2. 8
      backend/db/model.py

@ -1,7 +1,17 @@
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 blueprints.profile import profile as profileBlueprint
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
@ -14,6 +24,54 @@ app.register_blueprint(profileBlueprint,url_prefix='/api')
def homepage():
return {'message': 'Welcome back !'}, 200
@app.route('/seed-users', methods=['GET'])
def seed_users():
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)
default_role = UserRole.USER.value if hasattr(UserRole, 'USER') else 1
default_profile_file = "defaultUserBanner.png"
# 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"),
pfpFilename=default_profile_file,
joinedDate=datetime.utcnow(),
lastOnline=datetime.utcnow(),
bio=f"This is user{i}'s bio.",
role=default_role,
isActivated=True,
sessions=[],
user_badges=[],
enrollments=[],
quizzes=[],
quiz_attempts=[],
chats=[],
notifications=[]
)
for i in range(1, 6)
]
# Add users to the database
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()

@ -24,6 +24,10 @@ class User(db.Model):
sessions: Mapped[List["Session"]] = relationship(back_populates="user", cascade="all, delete-orphan")
enrollments: Mapped[List["Enrollment"]] = relationship(back_populates="user", cascade="all, delete-orphan")
quizzes: Mapped[List["Quiz"]] = relationship(back_populates="creatorUser", cascade="all, delete-orphan")
quiz_attempts: Mapped[List["QuizAttempt"]] = relationship(back_populates="user", cascade="all, delete-orphan")
chats: Mapped[List["Chat"]] = relationship(back_populates="user", cascade="all, delete-orphan")
notifications: Mapped[List["Notification"]] = relationship(back_populates="user", cascade="all, delete-orphan")
user_badges: Mapped[List["UserBadge"]] = relationship(back_populates="user", cascade="all, delete-orphan")
pfpFilename: Mapped[str] = mapped_column(String(256), nullable=False, default=DEFAULT_PROFILE_FILE)
joinedDate: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now())
lastOnline: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now(), onupdate=func.now())
@ -62,6 +66,7 @@ class Course(db.Model):
category: Mapped["Category"] = relationship(back_populates="courses")
enrollments: Mapped[List["Enrollment"]] = relationship(back_populates="course", cascade="all, delete-orphan")
quizzes: Mapped[List['Quiz']] = relationship(back_populates="course", cascade="all, delete-orphan")
chats: Mapped[List["Chat"]] = relationship(back_populates="course", cascade="all, delete-orphan")
description: Mapped[str] = mapped_column(String(1024), nullable=False, default='')
isActive: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
publishedStatus: Mapped[int] = mapped_column(SmallInteger, nullable=False, default=PublishedStatus.DRAFT)
@ -69,6 +74,7 @@ class Course(db.Model):
coverImage: Mapped[str] = mapped_column(String(256), nullable=False, default=DEFAULT_COURSE_COVER)
serverFilename: Mapped[str] = mapped_column(String(256), nullable=False, default='')
class Enrollment(db.Model):
__tablename__ = 'enrollment'
@ -88,6 +94,7 @@ class Quiz(db.Model):
id: Mapped[uuid.UUID] = mapped_column(types.Uuid, primary_key=True, init=False, server_default=text("gen_random_uuid()"))
creatorUserID: Mapped[uuid.UUID] = mapped_column(ForeignKey("user.id"))
creatorUser: Mapped["User"] = relationship(back_populates="quizzes")
quiz_attempts: Mapped[List["QuizAttempt"]] = relationship(back_populates="quiz", cascade="all, delete-orphan")
courseID: Mapped[uuid.UUID] = mapped_column(ForeignKey("course.id"))
course: Mapped["Course"] = relationship(back_populates="quizzes")
quizJson: Mapped[str] = mapped_column(String, nullable=False)
@ -133,6 +140,7 @@ class Badge(db.Model):
id: Mapped[uuid.UUID] = mapped_column(types.Uuid, primary_key=True, init=False, server_default=text("gen_random_uuid()"))
name: Mapped[str] = mapped_column(String(16), nullable=False)
user_badges: Mapped[List["UserBadge"]] = relationship(back_populates="badge", cascade="all, delete-orphan")
description: Mapped[str] = mapped_column(String(256), nullable=False, default='')
createDate: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now())
icon: Mapped[str] = mapped_column(String(256), nullable=False, default='')

Loading…
Cancel
Save