Casu Al Snek 6 months ago
commit 52b8225f12
  1. 2
      backend/app.py
  2. 4
      backend/constants/__init__.py
  3. 6
      backend/db/model.py
  4. 8
      backend/utils/utils.py

@ -41,7 +41,7 @@ def seed_data():
username=f"username{i}", hash_password=generate_password_hash("password123"), username=f"username{i}", hash_password=generate_password_hash("password123"),
activationKey=hash_string(random_string_generator(16)), pfpFilename=DEFAULT_PROFILE_FILE, activationKey=hash_string(random_string_generator(16)), pfpFilename=DEFAULT_PROFILE_FILE,
joinedDate=datetime.utcnow(), lastOnline=datetime.utcnow(), joinedDate=datetime.utcnow(), lastOnline=datetime.utcnow(),
bio=f"This is user{i}'s bio.", role=UserRole.ADMIN if i == 1 else UserRole.USER, bio=f"This is user{i}'s bio.", role=int(UserRole.USER),
isActivated=True, sessions=[], user_badges=[], isActivated=True, sessions=[], user_badges=[],
enrollments=[], quizzes=[], quiz_attempts=[], chats=[], notifications=[]) enrollments=[], quizzes=[], quiz_attempts=[], chats=[], notifications=[])
for i in range(1, 6) ] for i in range(1, 6) ]

@ -4,6 +4,10 @@ class UserRole(Enum):
ADMIN = 0 ADMIN = 0
USER = 1 USER = 1
# Add this method to enable casting to int
def __int__(self):
return self.value
class PublishedStatus(Enum): class PublishedStatus(Enum):
APPROVED = 0 APPROVED = 0
PENDING = 1 PENDING = 1

@ -4,8 +4,8 @@ from sqlalchemy import types, text, String, DateTime, func, Boolean, ForeignKey,
from datetime import datetime from datetime import datetime
import uuid import uuid
from typing import List from typing import List
from ..config import * from config import *
from ..constants import UserRole, PublishedStatus from constants import UserRole, PublishedStatus
class Base(MappedAsDataclass, DeclarativeBase): class Base(MappedAsDataclass, DeclarativeBase):
pass pass
@ -28,8 +28,8 @@ class User(db.Model):
quiz_attempts: Mapped[List["QuizAttempt"]] = relationship(back_populates="user", 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") chats: Mapped[List["Chat"]] = relationship(back_populates="user", cascade="all, delete-orphan")
notifications: Mapped[List["Notification"]] = relationship(back_populates="user", cascade="all, delete-orphan") notifications: Mapped[List["Notification"]] = relationship(back_populates="user", cascade="all, delete-orphan")
dob: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=datetime.fromisocalendar(2002, 1, 1))
user_badges: Mapped[List["UserBadge"]] = relationship(back_populates="user", cascade="all, delete-orphan") user_badges: Mapped[List["UserBadge"]] = relationship(back_populates="user", cascade="all, delete-orphan")
dob: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=datetime.fromisocalendar(2002, 1, 1))
pfpFilename: Mapped[str] = mapped_column(String(256), nullable=False, default=DEFAULT_PROFILE_FILE) pfpFilename: Mapped[str] = mapped_column(String(256), nullable=False, default=DEFAULT_PROFILE_FILE)
joinedDate: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now()) 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()) lastOnline: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=func.now(), onupdate=func.now())

@ -3,6 +3,7 @@ import hashlib
import random import random
import os import os
from PyPDF2 import PdfReader from PyPDF2 import PdfReader
import re
FILE_NAME = 'manjil.pdf' FILE_NAME = 'manjil.pdf'
FILE_PATH = os.path.join(os.getcwd(), FILE_NAME) FILE_PATH = os.path.join(os.getcwd(), FILE_NAME)
@ -24,4 +25,9 @@ def read_pdf_human_readable(file_path: str) -> list[str]:
pdf_page_text_contents.append(text.strip()) pdf_page_text_contents.append(text.strip())
return pdf_page_text_contents return pdf_page_text_contents
def is_valid_email(email):
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
if re.match(pattern, email):
return True
else:
return False
Loading…
Cancel
Save