2017-08-31 14:14:54 +00:00
|
|
|
from flask_sqlalchemy import SQLAlchemy
|
2017-08-31 16:37:58 +00:00
|
|
|
from flask_security import UserMixin, RoleMixin
|
|
|
|
|
from enum import Enum, unique
|
2017-08-31 14:14:54 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
db = SQLAlchemy()
|
|
|
|
|
|
|
|
|
|
roles_users = db.Table('roles_users',
|
2017-08-31 16:37:58 +00:00
|
|
|
db.Column('user_id',
|
|
|
|
|
db.Integer(), db.ForeignKey('user.id')),
|
|
|
|
|
db.Column('role_id',
|
|
|
|
|
db.Integer(), db.ForeignKey('role.id')))
|
|
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
|
|
|
|
|
class Role(db.Model, RoleMixin):
|
|
|
|
|
id = db.Column(db.Integer(), primary_key=True)
|
|
|
|
|
name = db.Column(db.String(80), unique=True)
|
|
|
|
|
description = db.Column(db.String(255))
|
|
|
|
|
|
2017-08-31 16:37:58 +00:00
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
class User(db.Model, UserMixin):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
email = db.Column(db.String(255), unique=True)
|
|
|
|
|
password = db.Column(db.String(255))
|
|
|
|
|
active = db.Column(db.Boolean())
|
|
|
|
|
confirmed_at = db.Column(db.DateTime())
|
2017-08-31 16:37:58 +00:00
|
|
|
roles = db.relationship(
|
|
|
|
|
'Role',
|
|
|
|
|
secondary=roles_users,
|
|
|
|
|
backref=db.backref('users', lazy='dynamic'))
|
|
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
|
|
|
|
|
@unique
|
|
|
|
|
class Presence(Enum):
|
|
|
|
|
"""docstring for ResultType."""
|
2017-08-31 16:37:58 +00:00
|
|
|
PRESENT, ABSENT, SICK, VACATION = range(4)
|
|
|
|
|
|
2017-09-01 04:58:56 +00:00
|
|
|
|
|
|
|
|
presense_map = {i: str(i).replace('Presence.', '').upper() for i in Presence}
|
|
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
|
|
|
|
|
class Gradeclass(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
class_name = db.Column(db.String(255))
|
|
|
|
|
|
|
|
|
|
def __init__(self, class_name):
|
|
|
|
|
self.class_name = class_name
|
|
|
|
|
|
2017-08-31 16:37:58 +00:00
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
class Student(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
student_name = db.Column(db.String(255))
|
|
|
|
|
gradeclass_id = db.Column(db.Integer, db.ForeignKey('gradeclass.id'))
|
2017-08-31 16:37:58 +00:00
|
|
|
gradeclass = db.relationship(
|
2017-09-01 04:23:40 +00:00
|
|
|
'Gradeclass', backref=db.backref('students', lazy='dynamic'))
|
2017-08-31 14:14:54 +00:00
|
|
|
|
2017-08-31 16:37:58 +00:00
|
|
|
def __init__(self, student_name, gradeclass_id):
|
2017-08-31 14:14:54 +00:00
|
|
|
self.student_name = student_name
|
|
|
|
|
self.gradeclass_id = gradeclass_id
|
|
|
|
|
|
2017-08-31 16:37:58 +00:00
|
|
|
|
2017-08-31 14:14:54 +00:00
|
|
|
class AttendanceUpdate(db.Model):
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
|
time = db.Column(db.DateTime())
|
|
|
|
|
presence = db.Column(db.Enum(Presence))
|
|
|
|
|
update_type = db.Column(db.String(10))
|
|
|
|
|
value_identifier = db.Column(db.Integer)
|
|
|
|
|
|
2017-08-31 16:37:58 +00:00
|
|
|
def __init__(self, update_type, value_identifier, time, presence):
|
2017-08-31 14:14:54 +00:00
|
|
|
self.update_type = update_type
|
|
|
|
|
self.value_identifier = value_identifier
|
|
|
|
|
self.presence = presence
|
|
|
|
|
self.time = time
|