From 197bebfdb1de50398afa3bd1bf1b59c002c67770 Mon Sep 17 00:00:00 2001 From: Matthew Roodal Date: Sun, 3 Dec 2023 00:09:03 +0000 Subject: [PATCH] updated user, student and staff models --- App/models/staff.py | 25 ++++++++------ App/models/student.py | 77 +++++++++++++++++++++++++++++++++---------- App/models/user.py | 33 +++++++++++++++---- 3 files changed, 100 insertions(+), 35 deletions(-) diff --git a/App/models/staff.py b/App/models/staff.py index bb6013857..98214d623 100644 --- a/App/models/staff.py +++ b/App/models/staff.py @@ -3,18 +3,23 @@ class Staff(User): - - id = db.Column(db.String(10), db.ForeignKey('user.id'), primary_key=True) - name = db.Column(db.String(50)) + dept = db.Column(db.String(120),nullable=False) + faculty = db.Column(db.String(20),nullable=False) + - def __init__(self, password, staff_id, name): - super().__init__(staff_id, password) - self.id = staff_id - self.name = name + def __init__(self, username, password, name): + super().__init__(username,password,name) + + def set_dept(self,dept): + self.dept = dept + def set_faculty(self,faculty): + self.faculty = faculty - def get_json(self): + def to_json(self): + base = super().to_json() return{ - 'staff_id': self.id, - 'name': self.name, + base + + "department" : self.dept, + "faculty" : self.faculty } diff --git a/App/models/student.py b/App/models/student.py index a0445ecb1..35ad45a22 100644 --- a/App/models/student.py +++ b/App/models/student.py @@ -1,24 +1,65 @@ -from App.models import User +# from App.models import User from App.database import db +from .user import User class Student(User): - id = db.Column(db.String(10), db.ForeignKey('user.id'), primary_key=True) - name = db.Column(db.String(50)) - program_id = db.Column(db.ForeignKey('program.id')) + __tablename__ = 'Student' + year_of_study = db.Column(db.Integer, nullable=False) + programme = db.Column(db.Integer, db.ForeignKey("programmeID")) + # academicHistory = db.relationship('History', backref=db.backref('Student'), lazy ='joined') + academicHistory = db.relationship('history', backref=db.backref('student'), lazy = 'joined') + academicPlan = db.relationship('CoursePlan', backref=db.backref('student'), lazy = 'joined',uselist=False) + # academicPlan = db.Column(db.Integer, db.ForeignKey("CoursePlanID")) + # id = db.Column(db.String(10), db.ForeignKey('user.id'), primary_key=True) + # name = db.Column(db.String(50)) + # program_id = db.Column(db.ForeignKey('program.id')) - associated_program = db.relationship('Program', back_populates='students', overlaps="program") - courses = db.relationship('StudentCourseHistory', backref='student', lazy=True) - - def __init__(self, username, password, name, program_id): - super().__init__(username, password) - self.id = username - self.name = name - self.program_id = program_id - - def get_json(self): - return{'student_id': self.id, - 'name': self.name, - 'program' : self.program_id - + # associated_program = db.relationship('Program', back_populates='students', overlaps="program") + # courses = db.relationship('StudentCourseHistory', backref='student', lazy=True) + + def __init__(self, username, password, name, utype, year): + self.username = username + super.set_password(password) + super.set_name(name) + self.userType = utype + self.year_of_study = year + + + def get_history(self): + return self.academicHistory + + def get_programme(self): + return self.programme + + def get_student_curr_year(self): + return self.year_of_study + + def enroll_in_programme(self, programme): + self.programme = programme + + def create_course_plan(self,coursePlan): + self.academicPlan = coursePlan + + def view_course_plan(self): + return self.academicPlan + + def add_new_history(self,history): + self.academicHistory.append(history) + + # def __repr__(self): + # return f'' + + def to_json(self): + base = super().to_json() + prog = self.get_programme().get_degree_name() + return{ + base+ + "current year of study" : self.get_student_curr_year(), + "programme": prog, + "academic history": self.get_history(), + "academicPlan": self.view_course_plan() + } + + diff --git a/App/models/user.py b/App/models/user.py index 22314f63d..541054d3e 100644 --- a/App/models/user.py +++ b/App/models/user.py @@ -6,21 +6,40 @@ class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String, nullable=False, unique=True) password = db.Column(db.String(120), nullable=False) + name = db.Column(db.String(240), nullable=False) + userType = db.Column(db.String(40), nullable=False) - def __init__(self, username, password): + def __init__(self, username, password, name, utype): self.username = username self.set_password(password) + self.set_name(name) + self.userType = utype - def get_json(self): - return{ - 'id': self.id, - 'username': self.username - } def set_password(self, password): """Create hashed password.""" self.password = generate_password_hash(password, method='sha256') - + + def set_name(self, name): + self.name = name + def check_password(self, password): """Check hashed password.""" return check_password_hash(self.password, password) + + def get_username(self): + return self.username + + def get_usertype(self): + return self.userType + + def get_name(self): + return self.name + + def to_json(self): + return{ + "id": self.id, + "name": self.name, + "username": self.username, + "user_type": self.userType + }