Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .python-version

This file was deleted.

6 changes: 4 additions & 2 deletions App/controllers/initialize.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from .user import create_user
from .user import create_student, create_employer, create_staff
from App.database import db


def initialize():
db.drop_all()
db.create_all()
create_user('bob', 'bobpass')
create_student('student', 'studentpass', 'UWI', 'Computer Science', 3.5)
create_employer('employer', 'employerpass')
create_staff('staff', 'staffpass')
36 changes: 30 additions & 6 deletions App/controllers/user.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
from App.models import User
from App.models import Employer,Staff,Student
from App.database import db

def create_user(username, password):
newuser = User(username=username, password=password)
db.session.add(newuser)
db.session.commit()
return newuser
def create_employer(username, password):
newemployer = Employer(username=username, password=password)
try:
db.session.add(newemployer)
db.session.commit()
return newemployer
except:
db.session.rollback()
return None

def create_staff(username, password):
newstaff = Staff(username=username, password=password)
try:
db.session.add(newstaff)
db.session.commit()
return newstaff
except:
db.session.rollback()
return None

def create_student(username, password, university, degree, gpa):
newstudent = Student(username=username, password=password, university=university, degree=degree, gpa=gpa)
try:
db.session.add(newstudent)
db.session.commit()
return newstudent
except:
db.session.rollback()
return None

def get_user_by_username(username):
result = db.session.execute(db.select(User).filter_by(username=username))
Expand Down
7 changes: 6 additions & 1 deletion App/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
from .user import *
from .user import *
from .employer import *
from .staff import *
from .student import *
from .internship import *
from .shortlist import *
28 changes: 28 additions & 0 deletions App/models/employer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from App.database import db
from .user import User

class Employer(User):
__tablename__ = 'employer'

id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)

internship = db.relationship('Internship', backref=db.backref('employer', lazy='joined'))

__mapper_args__ = {
"polymorphic_identity": 'employer',
}

def __init__(self, username, password):
self.username = username
self.set_password(password)
self.role = "employer"

def get_json(self):
return {
"id": self.id,
"username": self.username,
"role": self.role,
}



24 changes: 24 additions & 0 deletions App/models/internship.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from App.database import db

class Internship(db.Model):
internship_id = db.Column(db.Integer, primary_key=True)
employer_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
title = db.Column(db.String(100), nullable=False)
description = db.Column(db.Text, nullable=False)

shortlist = db.relationship('Shortlist', backref=db.backref('internship', lazy='joined'))

def __init__(self, title, description, employer_id):
self.title = title
self.description = description
self.employer_id = employer_id

def get_json(self):
return {
'internship_id': self.internship_id,
'title': self.title,
'description': self.description,
'employer_id': self.employer_id
}


27 changes: 27 additions & 0 deletions App/models/shortlist.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from App.database import db

class Shortlist(db.Model):

shortlist_id = db.Column(db.Integer, primary_key=True)
internship_id = db.Column(db.Integer, db.ForeignKey('internship.internship_id'), nullable=False) # FIXED
staff_id = db.Column(db.Integer, db.ForeignKey('staff.id'), nullable=True)
student_id = db.Column(db.Integer, db.ForeignKey('student.id'), nullable=True)
status = db.Column(db.String(50), nullable=True) # accepted, rejected


def __init__(self, internship_id, staff_id, student_id, status=None):
self.internship_id = internship_id
self.staff_id = staff_id
self.student_id = student_id
self.status = status

def get_json(self):
return {
'shortlist_id': self.shortlist_id,
'internship_id': self.internship_id,
'staff_id': self.staff_id,
'student_id': self.student_id,
'status': self.status

}

28 changes: 28 additions & 0 deletions App/models/staff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from App.database import db
from .user import User

class Staff(User):
__tablename__ = 'staff'

id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)

shortlist = db.relationship('Shortlist', backref=db.backref('staff', lazy='joined'))

__mapper_args__ = {
"polymorphic_identity": 'staff',
}

def __init__(self, username, password):
self.username = username
self.set_password(password)
self.role = "staff"

def get_json(self):
return {
"id": self.id,
"username": self.username,
"role": self.role
}



32 changes: 32 additions & 0 deletions App/models/student.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from App.database import db
from .user import User

class Student(User):
__tablename__ = 'student'

id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
university = db.Column(db.String(100), nullable=False)
degree = db.Column(db.String(100), nullable=False)
gpa = db.Column(db.Float, nullable=False)

__mapper_args__ = {
'polymorphic_identity': 'student',
}

def __init__(self, username, password, university, degree, gpa):
self.username = username
self.set_password(password)
self.role = "student"
self.university = university
self.degree = degree
self.gpa = gpa

def get_json(self):
return {
'id': self.id,
'username': self.username,
'university': self.university,
'degree': self.degree,
'gpa': self.gpa
}

13 changes: 11 additions & 2 deletions App/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,27 @@
from App.database import db

class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), nullable=False, unique=True)
password = db.Column(db.String(256), nullable=False)
role = db.Column(db.String(20), nullable=False) # 'student', 'employer', 'staff'

__mapper_args__ = {
'polymorphic_identity': 'user',
'polymorphic_on': role,
}

def __init__(self, username, password):
def __init__(self, username, password, role):
self.username = username
self.set_password(password)
self.role = role

def get_json(self):
return{
'id': self.id,
'username': self.username
'username': self.username,
'role': self.role
}

def set_password(self, password):
Expand Down
2 changes: 1 addition & 1 deletion App/views/index.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from flask import Blueprint, redirect, render_template, request, send_from_directory, jsonify
from App.controllers import create_user, initialize
from App.controllers import create_employer, create_staff, create_student, initialize

index_views = Blueprint('index_views', __name__, template_folder='../templates')

Expand Down
4 changes: 3 additions & 1 deletion App/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
from.index import index_views

from App.controllers import (
create_user,
create_employer,
create_staff,
create_student,
get_all_users,
get_all_users_json,
jwt_required
Expand Down
Loading