mirror of
https://github.com/aronwk-aaron/MSState-Library-ETD.git
synced 2026-01-29 09:00:15 -06:00
Merge remote-tracking branch 'origin/Database' into auth
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from flask import Flask
|
||||
from flask_assets import Environment
|
||||
from webassets import Bundle
|
||||
from app.models import db, migrate
|
||||
from app.schemas import ma
|
||||
|
||||
from app.configuration import AppConfiguration
|
||||
|
||||
@@ -18,21 +20,28 @@ def create_app():
|
||||
app = Flask(__name__, instance_relative_config=True)
|
||||
app.config.from_object(config.flask_config)
|
||||
|
||||
# register_extensions(app)
|
||||
register_extensions(app)
|
||||
register_blueprints(app)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
def register_extensions(app):
|
||||
"""Register extensions for Flask app
|
||||
|
||||
Args:
|
||||
app (Flask): Flask app to register for
|
||||
"""
|
||||
db.init_app(app)
|
||||
migrate.init_app(app=app, db=db)
|
||||
ma.init_app(app)
|
||||
|
||||
assets = Environment(app)
|
||||
assets.url = app.static_url_path
|
||||
scss = Bundle('scss/site.scss', filters='libsass', output='site.css')
|
||||
assets.register('scss_all', scss)
|
||||
return app
|
||||
|
||||
|
||||
# def register_extensions(app):
|
||||
# db.init_app(app)
|
||||
# migrate.init_app(app=app, db=db)
|
||||
# ma.init_app(app)
|
||||
|
||||
def register_blueprints(app):
|
||||
"""Register blueprints for Flask app
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from distutils.version import LooseVersion
|
||||
class AppConfiguration(object):
|
||||
|
||||
"""Configuration Version"""
|
||||
CONFIG_VERSION = '1.0'
|
||||
CONFIG_VERSION = '2.0'
|
||||
|
||||
def __init__(self):
|
||||
"""Creates/Parses the config.ini"""
|
||||
@@ -33,17 +33,27 @@ class AppConfiguration(object):
|
||||
config['CONFIG'] = {
|
||||
'version': self.CONFIG_VERSION
|
||||
}
|
||||
config['DATABASE'] = {
|
||||
'host': 'localhost',
|
||||
'name': 'msstate_etd',
|
||||
'user': 'msstate_etd',
|
||||
'pass': 'password',
|
||||
'type': 'postgresql'
|
||||
config['SQLALCHEMY'] = {
|
||||
'SQLALCHEMY_DATABASE_URI': 'postgresql://user:password@host:port/database',
|
||||
'SQLALCHEMY_TRACK_MODIFICATIONS': 'False',
|
||||
}
|
||||
config['FLASK'] = {
|
||||
'mode': 'default',
|
||||
'secret_key': 'SECRET_KEY_NOT_SET'
|
||||
}
|
||||
config['FLASK-MAIL'] = {
|
||||
'MAIL_SERVER': 'smtp.gmail.com',
|
||||
'MAIL_PORT': '587',
|
||||
'MAIL_USE_SSL': 'False',
|
||||
'MAIL_USE_TLS': 'True',
|
||||
'MAIL_USERNAME': 'yourname@gmail.com',
|
||||
'MAIL_PASSWORD': 'password',
|
||||
}
|
||||
config['FLASK-USER'] = {
|
||||
'USER_APP_NAME': 'MSState Library ETD',
|
||||
'USER_EMAIL_SENDER_NAME': 'MSState',
|
||||
'USER_EMAIL_SENDER_EMAIL': 'yourname@gmail.com',
|
||||
}
|
||||
|
||||
# write the config.
|
||||
config_path = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
99
app/models.py
Normal file
99
app/models.py
Normal file
@@ -0,0 +1,99 @@
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flask_migrate import Migrate
|
||||
import enum
|
||||
|
||||
from sqlalchemy_utils import ArrowType
|
||||
from sqlalchemy.sql.expression import func
|
||||
|
||||
import arrow
|
||||
import random
|
||||
|
||||
|
||||
db = SQLAlchemy()
|
||||
migrate = Migrate()
|
||||
|
||||
|
||||
class SubmissionType(enum.Enum):
|
||||
worldwide = 1
|
||||
restricted = 2
|
||||
embargoed = 3
|
||||
|
||||
|
||||
class User(db.Model):
|
||||
__tablename__ = 'user'
|
||||
|
||||
msuid = db.Column(db.Text, primary_key=True, nullable=False, unique=True)
|
||||
netid = db.Column(db.Text, nullable=False)
|
||||
department = db.Column(db.Text, nullable=False)
|
||||
professor = db.Column(db.Text, nullable=False)
|
||||
|
||||
role = db.Column(,nullable=False)
|
||||
|
||||
first_name = db.Column(db.Text, nullable=False)
|
||||
middle_name = db.Column(db.Text, nullable=False)
|
||||
last_name = db.Column(db.Text, nullable=False)
|
||||
|
||||
prim_email = db.Column(db.Text, nullable=False)
|
||||
sec_email = db.Column(db.Text, nullable=False)
|
||||
|
||||
prim_phone = db.Column(db.Text, nullable=False)
|
||||
sec_phone = db.Column(db.Text, nullable=False)
|
||||
|
||||
country = db.Column(db.Text, nullable=False)
|
||||
administrative_area = db.Column(db.Text, nullable=False)
|
||||
locality = db.Column(db.Text, nullable=False)
|
||||
postal_code = db.Column(db.Text, nullable=False)
|
||||
thoroughfare = db.Column(db.Text, nullable=False)
|
||||
premise = db.Column(db.Text, nullable=False)
|
||||
|
||||
preffirst_name = db.Column(db.Text)
|
||||
prefmiddle_name = db.Column(db.Text)
|
||||
preflast_name = db.Column(db.Text)
|
||||
|
||||
maiden_name = db.Column(db.Text, nullable=False)
|
||||
|
||||
birth_date = db.Column(db.Text, nullable=False)
|
||||
|
||||
|
||||
class Notifications(db.Model):
|
||||
__tablename__ = 'notifications'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
netID = db.Column(db.Text, db.ForeignKey('user.netid'), nullable=False)
|
||||
text = db.Column(db.Text, nullable=False)
|
||||
state = db.Column(db.Boolean, default=False)
|
||||
|
||||
|
||||
class Submission(db.Model):
|
||||
__tablename__ = 'submission'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
netid = db.Column(db.Text, db.ForeignKey('user.netid'), nullable=False)
|
||||
title = db.Column(db.Text)
|
||||
abstract = db.Column(db.Text)
|
||||
type = db.Column(db.Text)
|
||||
release_type = db.Column(Enum(SubmissionType))
|
||||
ww_length = db.Column(db.Text)
|
||||
signature_file = db.Column(db.Text)
|
||||
|
||||
state = db.Column(db.Boolean, default=False)
|
||||
approved_date = db.Column(db.Text)
|
||||
|
||||
|
||||
class Revision(db.Model):
|
||||
__tablename__ = 'revision'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
sub_id = db.Column(db.Text)
|
||||
file = db.Column(db.Text)
|
||||
rev_num = db.Column(db.Text)
|
||||
state = db.Column(db.Boolean, default=False)
|
||||
|
||||
|
||||
class Review(db.Model):
|
||||
__tablename__ = 'review'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
rev_id = db.Column(db.Integer)
|
||||
reviewer_netID = db.Column(db.Text, db.ForeignKey('user.netid'), nullable=False)
|
||||
# put the checklist for it and figure out how to store checklist in a not dumb way
|
||||
29
app/schemas.py
Normal file
29
app/schemas.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from flask_marshmallow import Marshmallow
|
||||
from .models import User, Notifications, Submission, Revision, Review
|
||||
|
||||
ma = Marshmallow()
|
||||
|
||||
|
||||
class UserSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = User
|
||||
|
||||
|
||||
class NotificationsSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = Notifications
|
||||
|
||||
|
||||
class SubmissionSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = Submission
|
||||
|
||||
|
||||
class RevisionSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = Revision
|
||||
|
||||
|
||||
class ReviewSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = Review
|
||||
@@ -1,10 +1,31 @@
|
||||
alembic==1.0.8
|
||||
arrow==0.13.1
|
||||
asn1crypto==0.24.0
|
||||
blinker==1.4
|
||||
cffi==1.12.2
|
||||
Click==7.0
|
||||
cryptography==2.6.1
|
||||
Flask==1.0.2
|
||||
Flask-Assets==0.12
|
||||
Flask-Login==0.4.1
|
||||
Flask-Mail==0.9.1
|
||||
flask-marshmallow==0.10.0
|
||||
Flask-Migrate==2.4.0
|
||||
Flask-SQLAlchemy==2.3.2
|
||||
Flask-User==1.0.1.5
|
||||
Flask-WTF==0.14.2
|
||||
itsdangerous==1.1.0
|
||||
Jinja2==2.10
|
||||
libsass==0.17.0
|
||||
Mako==1.0.7
|
||||
MarkupSafe==1.1.0
|
||||
marshmallow==2.19.1
|
||||
passlib==1.7.1
|
||||
pycparser==2.19
|
||||
python-dateutil==2.8.0
|
||||
python-editor==1.0.4
|
||||
six==1.12.0
|
||||
SQLAlchemy==1.3.1
|
||||
webassets==0.12.1
|
||||
Werkzeug==0.14.1
|
||||
WTForms==2.2.1
|
||||
|
||||
Reference in New Issue
Block a user