mirror of
https://github.com/aronwk-aaron/MSState-Library-ETD.git
synced 2026-01-29 00:49:25 -06:00
Made it where the profiles display the user's info and then then user can edit their info
157 lines
7.3 KiB
Python
157 lines
7.3 KiB
Python
from sqlalchemy.sql import func
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_migrate import Migrate
|
|
from flask_user import UserMixin
|
|
|
|
db = SQLAlchemy()
|
|
migrate = Migrate()
|
|
|
|
|
|
class User(db.Model, UserMixin):
|
|
__tablename__ = 'users'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
# User authentication information (required for Flask-User)
|
|
email = db.Column(db.Unicode(255), nullable=False, server_default=u'', unique=True)
|
|
email_confirmed_at = db.Column(db.DateTime())
|
|
password = db.Column(db.String(255), nullable=False, server_default='')
|
|
# reset_password_token = db.Column(db.String(100), nullable=False, server_default='')
|
|
active = db.Column(db.Boolean(), nullable=False, server_default='0')
|
|
|
|
# User information
|
|
first_name = db.Column(db.Unicode(50), nullable=False, server_default=u'')
|
|
middle_name = db.Column(db.Unicode(50), nullable=False, server_default=u'')
|
|
last_name = db.Column(db.Unicode(50), nullable=False, server_default=u'')
|
|
|
|
msu_id = db.Column(db.Unicode(11), unique=True)
|
|
net_id = db.Column(db.Unicode(8), unique=True)
|
|
department = db.Column(db.Unicode(50), server_default=u'')
|
|
|
|
sec_email = db.Column(db.Unicode(255), server_default=u'')
|
|
prim_phone = db.Column(db.Unicode(50), nullable=False, server_default=u'')
|
|
sec_phone = db.Column(db.Unicode(50), server_default=u'')
|
|
|
|
country = db.Column(db.Unicode(2), nullable=False, server_default=u'')
|
|
administrative_area = db.Column(db.Unicode(50), nullable=False, server_default=u'') # state/provinence
|
|
locality = db.Column(db.Unicode(50), nullable=False, server_default=u'') # city
|
|
postal_code = db.Column(db.Unicode(50), nullable=False, server_default=u'') # zip
|
|
thoroughfare = db.Column(db.Unicode(50), nullable=False, server_default=u'') # Street
|
|
premise = db.Column(db.Unicode(50), nullable=False, server_default=u'') # Apartment/box/etc
|
|
|
|
pref_name = db.Column(db.Unicode(50), server_default=u'')
|
|
|
|
maiden_name = db.Column(db.Unicode(50), server_default=u'')
|
|
birth_date = db.Column(db.Date(), nullable=False)
|
|
|
|
# Relationships
|
|
roles = db.relationship('Role', secondary='users_roles',
|
|
backref=db.backref('users', lazy='dynamic'))
|
|
|
|
|
|
# Define the Role data model
|
|
class Role(db.Model):
|
|
__tablename__ = 'roles'
|
|
id = db.Column(db.Integer(), primary_key=True)
|
|
name = db.Column(db.String(50), nullable=False, server_default=u'', unique=True) # for @roles_accepted()
|
|
label = db.Column(db.Unicode(255), server_default=u'') # for display purposes
|
|
|
|
|
|
# Define the UserRoles association model
|
|
class UsersRoles(db.Model):
|
|
__tablename__ = 'users_roles'
|
|
id = db.Column(db.Integer(), primary_key=True)
|
|
user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))
|
|
|
|
|
|
class UsersProfessors(db.Model):
|
|
__tablename__ = 'users_professors'
|
|
id = db.Column(db.Integer(), primary_key=True)
|
|
user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
Professor_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
|
|
|
|
class Notification(db.Model):
|
|
__tablename__ = 'notifications'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
text = db.Column(db.Text, nullable=False)
|
|
state = db.Column(db.Boolean, default=False)
|
|
|
|
|
|
class Submission(db.Model):
|
|
__tablename__ = 'submissions'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
title = db.Column(db.Unicode(), nullable=False, server_default=u'')
|
|
abstract = db.Column(db.Unicode(), nullable=False, server_default=u'')
|
|
# TODO: Make Enum type for this
|
|
type = db.Column(db.Integer, nullable=False)
|
|
# TODO: Make Enum type for this
|
|
release_type = db.Column(db.Integer, nullable=False)
|
|
ww_length = db.Column(db.Integer, nullable=False)
|
|
# TODO: figure out files for this
|
|
signature_file = db.Column(db.Text)
|
|
started = db.Column(db.DateTime(), server_default=func.now(), nullable=False)
|
|
|
|
state = db.Column(db.Boolean, default=False, nullable=False)
|
|
approved_date = db.Column(db.DateTime())
|
|
|
|
|
|
class Revision(db.Model):
|
|
__tablename__ = 'revisions'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
sub_id = db.Column(db.Integer(), db.ForeignKey('submissions.id', ondelete='CASCADE'))
|
|
submitted = db.Column(db.DateTime(), server_default=func.now())
|
|
# TODO: figure out files for this
|
|
file = db.Column(db.Text)
|
|
|
|
|
|
class Review(db.Model):
|
|
__tablename__ = 'reviews'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
reviewed = db.Column(db.DateTime(), server_default=func.now())
|
|
review_ID = db.Column(db.Integer(), db.ForeignKey('reviews.id', ondelete='CASCADE'))
|
|
reviewer_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
|
|
# 32 check boxes + comment box
|
|
# check boxes will refer to the ones in the review form
|
|
# new check boxes must be added at the end
|
|
comments = db.Column(db.Unicode(), server_default=u'')
|
|
check_1 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_2 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_3 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_4 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_5 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_6 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_7 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_8 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_9 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_10 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_11 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_12 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_13 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_14 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_15 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_16 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_17 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_18 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_19 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_20 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_21 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_22 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_23 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_24 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_25 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_26 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_27 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_28 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_29 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_30 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_31 = db.Column(db.Boolean, default=False, nullable=False)
|
|
check_32 = db.Column(db.Boolean, default=False, nullable=False)
|