ashwinR's picture
Upload 245 files
b7a7f32
from core.config import settings
from core.db import Base
from sqlalchemy import (
Boolean,
Column,
Integer,
SmallInteger,
String,
ForeignKey,
DateTime,
Date,
)
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import relationship
class User(Base):
id = Column(Integer, primary_key=True, index=True)
profile_image = Column(String(100))
full_name = Column(String, index=True)
email = Column(String, index=True, nullable=False, unique=True)
two_fa_secret = Column(String)
roll = Column(SmallInteger, nullable=True)
group_id = Column(Integer, ForeignKey("group.id", ondelete="cascade"))
group = relationship("Group", backref="student")
teacher_group = relationship(
"TeacherGroupCourseAssociation", back_populates="teacher"
)
teacher_department_id = Column(
ForeignKey("department.id", ondelete="SET NULL"), nullable=True
)
teacher_department = relationship("Department", backref="teachers")
dob = Column(Date, nullable=False)
address = Column(String(length=128), nullable=False)
contact_number = Column(String(length=32), index=True, nullable=False)
hashed_password = Column(String, nullable=False)
is_active = Column(Boolean(), default=False)
user_type = Column(
SmallInteger,
default=settings.UserType.STUDENT.value,
nullable=False,
index=True,
)
join_year = Column(SmallInteger)
@hybrid_property
def is_superuser(self):
if self.user_type == settings.UserType.SUPERADMIN.value:
return True
else:
return False
__tablename__ = "user"